diff --git a/docs/index.html b/docs/index.html index c78498eaa..02e77bfe2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -17,4 +17,4 @@ l.pathname.slice(0, -1) + decoded + l.hash ); } - }(window.location))
\ No newline at end of file + }(window.location))
\ No newline at end of file diff --git a/docs/js/app.81d09a94.js b/docs/js/app.81d09a94.js new file mode 100644 index 000000000..c07451d57 --- /dev/null +++ b/docs/js/app.81d09a94.js @@ -0,0 +1 @@ +(()=>{"use strict";var __webpack_modules__={41472:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var _Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(50124),_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(95082),_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(88478),_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(48534),core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(57327),core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4___default=__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4__),core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(41539),core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5___default=__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5__),core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(2707),core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_6___default=__webpack_require__.n(core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_6__),core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(21249),core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_7___default=__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_7__),core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(92222),core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_8___default=__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_8__),core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__(83710),core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_9___default=__webpack_require__.n(core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_9__),core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__(89554),core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_10___default=__webpack_require__.n(core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_10__),core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_11__=__webpack_require__(54747),core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_11___default=__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_11__),date_fns__WEBPACK_IMPORTED_MODULE_14__=__webpack_require__(28582),marked__WEBPACK_IMPORTED_MODULE_12__=__webpack_require__(87441),_icons_NewTabIcon__WEBPACK_IMPORTED_MODULE_13__=__webpack_require__(44479);const __WEBPACK_DEFAULT_EXPORT__={name:"Milestones",components:{NewTabIcon:_icons_NewTabIcon__WEBPACK_IMPORTED_MODULE_13__.Z},data:function(){return{milestones:[]}},computed:{milestonesSorted:function(){return{open:this.milestones.filter((function(e){var t=e.closed_at;return!t})),closed:this.milestones.filter((function(e){var t=e.closed_at;return t})).sort((function(e){return-1}))}}},created:function created(){var _this=this;return(0,_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_3__.Z)((0,_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_0__.Z)().mark((function _callee(){return(0,_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_0__.Z)().wrap((function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(_this.$store.state.milestones.length){_context.next=3;break}return _context.next=3,fetch("./livedata/milestones.js").then((function(e){return e.text()})).then((function(str){return _this.$store.commit("SET_VALUE",{key:"milestones",value:eval(str)})}));case 3:_this.milestones=[].concat((0,_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_2__.Z)(_this.$store.state.milestones.filter((function(e){var t=e.due_on;return t})).sort((function(e,t){return new Date(e.due_on)>new Date(t.due_on)?1:-1}))),(0,_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_2__.Z)(_this.$store.state.milestones.filter((function(e){var t=e.due_on;return!t})))).map((function(e){return(0,_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_1__.Z)((0,_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_1__.Z)({},e),{},{descriptionExpanded:!1,issuesExpanded:!1,issuesTab:e.open_issues>0||0===e.closed_issues?"open":"closed"})})),_this.milestones.forEach((function(e){e.issues.items.sort((function(e,t){return e.reactions.total_count>t.reactions.total_count?-1:1}))})),_this.$nextTick((function(){_this.milestones.forEach((function(e){var t=document.getElementById("milestone-".concat(e.id,"-description"));t&&(t.childElementCount>1||t.firstChild&&t.firstChild.scrollHeight>t.firstChild.offsetHeight+25||(e.descriptionExpanded=!0))}))}));case 6:case"end":return _context.stop()}}),_callee)})))()},methods:{format:date_fns__WEBPACK_IMPORTED_MODULE_14__.Z,parseDescription:function(e){return marked__WEBPACK_IMPORTED_MODULE_12__.TU.parse(e)},parseIssueDescription:function(e){return marked__WEBPACK_IMPORTED_MODULE_12__.TU.parseInline(e)}}}},81318:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var _Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(95082),_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(88478),core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(92222),core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2___default=__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2__),core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(69826),core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_3___default=__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_3__),core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(41539),core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4___default=__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__),core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(82526),core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5___default=__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__),core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(41817),core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_6___default=__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_6__),core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(21249),core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_7___default=__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_7__),core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(57327),core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_8___default=__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_8__),core_js_modules_es_array_some_js__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__(5212),core_js_modules_es_array_some_js__WEBPACK_IMPORTED_MODULE_9___default=__webpack_require__.n(core_js_modules_es_array_some_js__WEBPACK_IMPORTED_MODULE_9__),core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__(2707),core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_10___default=__webpack_require__.n(core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_10__),core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11__=__webpack_require__(47042),core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11___default=__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11__),core_js_modules_es_set_js__WEBPACK_IMPORTED_MODULE_12__=__webpack_require__(70189),core_js_modules_es_set_js__WEBPACK_IMPORTED_MODULE_12___default=__webpack_require__.n(core_js_modules_es_set_js__WEBPACK_IMPORTED_MODULE_12__),core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_13__=__webpack_require__(78783),core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_13___default=__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_13__),core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_14__=__webpack_require__(33948),core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_14___default=__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_14__),core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_15__=__webpack_require__(86535),core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_15___default=__webpack_require__.n(core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_15__),core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_16__=__webpack_require__(99244),core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_16___default=__webpack_require__.n(core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_16__),core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_17__=__webpack_require__(85827),core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_17___default=__webpack_require__.n(core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_17__),core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_18__=__webpack_require__(68309),core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_18___default=__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_18__),core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_19__=__webpack_require__(26699),core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_19___default=__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_19__),core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_20__=__webpack_require__(32023),core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_20___default=__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_20__),core_js_modules_web_url_search_params_js__WEBPACK_IMPORTED_MODULE_21__=__webpack_require__(41637),core_js_modules_web_url_search_params_js__WEBPACK_IMPORTED_MODULE_21___default=__webpack_require__.n(core_js_modules_web_url_search_params_js__WEBPACK_IMPORTED_MODULE_21__),core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_22__=__webpack_require__(74916),core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_22___default=__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_22__),core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_23__=__webpack_require__(64765),core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_23___default=__webpack_require__.n(core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_23__),_icons_ChevronIcon_vue__WEBPACK_IMPORTED_MODULE_24__=__webpack_require__(36741);const __WEBPACK_DEFAULT_EXPORT__={name:"ResourceBox",components:{ChevronIcon:_icons_ChevronIcon_vue__WEBPACK_IMPORTED_MODULE_24__.Z},data:function(){return{tabs:["libraries","builtin","tools"],activeTab:"libraries",sortBy:"Stars",direction:"descending",tagsDropdownShown:!1,filterInput:"",showAll:!1,eventSent:!1}},computed:{tableHeaders:function(){return["Name","Description"].concat((0,_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_1__.Z)("builtin"!==this.activeTab?["Stars"]:[]),["Tags"])},selectedDescription:function(){var e=this,t=this.$tm("resources.tabs").find((function(t){var o=t.key;return o===e.activeTab}));return t?t.description:""},selectedList:function(){var e=this;return this.$tm("resourcesList.".concat(this.activeTab)).map((function(t){return(0,_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0__.Z)((0,_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0__.Z)({},t),{},{stars:e.getStarCount(t.href)})}))},itemsFilteredByTag:function(){var e=this;return this.selectedList.filter((function(t){return!e.tagFilterExactMatch||t.tags&&t.tags.some((function(t){return t.toLowerCase()===e.filterInput.toLowerCase()}))}))},visibleItems:function(){return this.showAll?this.itemsFilteredByTag.concat().sort(this.listSortFn):this.itemsFilteredByTag.concat().sort(this.listSortFn).slice(0,7)},tagFilterExactMatch:function(){var e=this;return""!==this.filterInput&&this.tabTags.some((function(t){return t.toLowerCase()===e.filterInput.toLowerCase()}))},tabTags:function(){return(0,_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_1__.Z)(new Set(this.selectedList.flatMap((function(e){return e.tags})).filter((function(e){return e})).sort((function(e,t){return e>t?1:-1}))))},showFiltering:function(){return"builtin"!==this.activeTab}},watch:{activeTab:function(){this.filterInput="","builtin"!==this.activeTab?this.sortBy="Stars":this.sortBy="Name",this.eventSent||(window.plausible("Interact",{props:{element:"Resources"}}),this.eventSent=!0);var e="".concat(window.location.href.split("?")[0].split("#")[0],"?tab=").concat(this.activeTab,"#resources");history.replaceState(null,null,e)},showAll:function(){this.eventSent||(window.plausible("Interact",{props:{element:"Resources"}}),this.eventSent=!0)}},methods:{getTagColor:function(e){if("built-in"===e)return"#00c0b5";var t=(0,_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_1__.Z)(e.toLowerCase()).flatMap((function(e){return 100*e.charCodeAt(0)})).reduce((function(e,t){return t+e}),0),o=t%360,r=t%49+51;return"hsl(".concat(o,", ").concat(r,"%, 70%)")},listSortFn:function(e,t){var o=e[this.sortBy.toLowerCase()],r=t[this.sortBy.toLowerCase()],a="number"===typeof o||"number"===typeof r;return a?o>r?"descending"===this.direction?-1:1:"descending"===this.direction?1:-1:o>r?"descending"===this.direction?1:-1:"descending"===this.direction?-1:1},switchSortDirection:function(){"descending"===this.direction?this.direction="ascending":this.direction="descending"},getStarCount:function(e){var t=this.$store.state.stars.find((function(t){var o=t.name;return e.toLowerCase().includes(o.toLowerCase())}));return t&&t.stars||null},onClick:function(e){var t=e.target;this.$refs.tagInput&&!this.$refs.tagInput.contains(t)&&(this.tagsDropdownShown=!1)}},created:function created(){var _this5=this;if(this.$store.state.stars.length||fetch("./livedata/stars.js").then((function(e){return e.text()})).then((function(str){return _this5.$store.commit("SET_VALUE",{key:"stars",value:eval(str)})})),"#resources"===window.location.hash){var param=new URLSearchParams(window.location.search),tab=param.get("tab");tab&&(this.activeTab=tab)}},mounted:function(){document.addEventListener("click",this.onClick)},beforeUnmount:function(){document.removeEventListener("click",this.onClick)}}},71386:(e,t,o)=>{var r=o(95082),a=(o(66992),o(88674),o(19601),o(17727),o(49963)),i=o(66252);function n(e,t,o,r,a,n){var s=(0,i.up)("router-view");return(0,i.wg)(),(0,i.j4)(s)}const s={methods:{setDeviceSize:function(e){var t=this;this.$nextTick((function(){t.$store.commit("SET_IS_MOBILE",e<700),t.$store.commit("SET_IS_TABLET",e>699&&e<1024),t.$store.commit("SET_IS_DESKTOP",e>1023)}))}},created:function(){var e=this;document.documentElement.lang=this.$i18n.locale,this.setDeviceSize(window.innerWidth),window.addEventListener("resize",(function(){e.setDeviceSize(window.innerWidth)})),window.addEventListener("click",(function(){return document.body.classList.remove("accessible")})),window.addEventListener("keydown",(function(e){var t=e.key;"Tab"===t&&document.body.classList.add("accessible")}))},watch:{"$i18n.locale":function(){document.documentElement.lang=this.$i18n.locale}}};var l=o(83744);const c=(0,l.Z)(s,[["render",n]]),d=c;var m=o(22201),u=(o(68309),o(82526),o(41817),o(3577)),p={class:"container mb-xlarge"},h={class:"col-sm-12 col-lg-9 row"},b={class:"col-sm-12 col-lg-8 pr-small"},g=["innerHTML"],_={class:"col-lg-4 pt-2xsmall"},f=["href"],w=["innerHTML"],y={class:"col-sm-12 col-lg-9 col-lg-offset-3 row"};function k(e,t,o,r,a,n){var s=(0,i.up)("nav-mobile"),l=(0,i.up)("robocon-banner"),c=(0,i.up)("banner"),d=(0,i.up)("navbar"),m=(0,i.up)("news"),k=(0,i.up)("page-section"),v=(0,i.up)("monaco-editor"),R=(0,i.up)("tab-box"),D=(0,i.up)("resource-box"),E=(0,i.up)("community-items"),T=(0,i.up)("router-link"),C=(0,i.up)("video-component"),P=(0,i.up)("sponsors"),A=(0,i.up)("milestones"),F=(0,i.up)("page-footer");return(0,i.wg)(),(0,i.iD)(i.HY,null,[(0,i.Wm)(s),(0,i.Wm)(l),(0,i.Wm)(c),(0,i.Wm)(d,{class:"nav-desktop"}),(0,i._)("div",p,[(0,i.Wm)(k,{"title-id":"introduction",title:e.$t("introduction.title")},{default:(0,i.w5)((function(){return[(0,i._)("div",h,[(0,i._)("div",b,[(0,i._)("div",{innerHTML:e.$t("introduction.body"),id:"intro-text",class:"mb-small"},null,8,g)]),(0,i._)("div",_,[(0,i.Wm)(m)])])]})),_:1},8,["title"]),(0,i.Wm)(k,{"title-id":"getting-started",title:e.$t("gettingStarted.title"),body:e.$t("gettingStarted.body")},{default:(0,i.w5)((function(){return[(0,i.Wm)(R,{class:"col-sm-12 col-lg-9 col-lg-offset-3",tabs:e.$tm("gettingStarted.tabs")},{"tab-1":(0,i.w5)((function(){return[(0,i.Wm)(v)]})),"tab-3":(0,i.w5)((function(){return[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.$tm("resourcesList.learning"),(function(e){return(0,i.wg)(),(0,i.iD)("div",{key:e.name,class:"mt-small mb-small"},[(0,i._)("a",{href:e.href},(0,u.zw)(e.name),9,f),(0,i._)("div",{class:"type-small",innerHTML:e.description},null,8,w)])})),128))]})),_:1},8,["tabs"])]})),_:1},8,["title","body"]),(0,i.Wm)(k,{"title-id":"resources",title:e.$t("resources.title"),body:e.$t("resources.body")},{default:(0,i.w5)((function(){return[(0,i.Wm)(D,{class:"col-sm-12 col-lg-9 col-lg-offset-3"})]})),_:1},8,["title","body"]),(0,i.Wm)(k,{"title-id":"community",title:e.$t("community.title"),body:e.$t("community.body")},{default:(0,i.w5)((function(){return[(0,i._)("div",y,[(0,i.Wm)(E),(0,i._)("button",{class:(0,u.C_)(["theme mt-medium",e.$store.state.isMobile?"ml-xsmall":""])},[(0,i.Wm)(T,{to:{name:"CoC"},class:"type-no-underline"},{default:(0,i.w5)((function(){return[(0,i.Uk)(" Code of Ethics ")]})),_:1})],2),(0,i.Wm)(C,{videoId:"2GDrtvz_1Ds",class:"col-sm-12 mt-small"})])]})),_:1},8,["title","body"]),(0,i.Wm)(k,{"title-id":"development",title:e.$t("development.title"),body:e.$t("development.body")},{default:(0,i.w5)((function(){return[(0,i.Wm)(P,{class:"col-sm-12 col-lg-9 col-lg-offset-3"}),(0,i.Wm)(A,{class:"col-sm-12 col-lg-9 col-lg-offset-3 mt-medium"})]})),_:1},8,["title","body"])]),(0,i.Wm)(F)],64)}o(41539),o(78783),o(33948),o(29254),o(92222);var v=function(e){return(0,i.dD)("data-v-121f48b8"),e=e(),(0,i.Cn)(),e},R=v((function(){return(0,i._)("h2",{style:{"letter-spacing":"0.125rem",position:"sticky",top:"0"},class:"type-center type-large mb-none color-black bg-theme"}," NEWS ",-1)})),D={class:"bg-grey-dark pt-small"},E={key:0},T=["href"],C={class:"mb-none line-height-1 font-body"},P={key:1,class:"mb-none line-height-1 font-body"},A={class:"type-small"},F=["src"],x=["innerHTML"];function S(e,t,o,r,n,s){return(0,i.wg)(),(0,i.j4)(a.uT,{appear:"",name:"opacity"},{default:(0,i.w5)((function(){return[e.height?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"news-container card",style:(0,u.j5)({height:"".concat(e.height,"px")})},[R,(0,i._)("div",D,[0===e.news.length?((0,i.wg)(),(0,i.iD)("div",E," loading... ")):((0,i.wg)(!0),(0,i.iD)(i.HY,{key:1},(0,i.Ko)(e.news,(function(t){return(0,i.wg)(),(0,i.iD)("article",{key:t.id,class:"pb-small px-small"},[t.link?((0,i.wg)(),(0,i.iD)("a",{key:0,href:t.link,target:"blank",class:"mb-none line-height-1"},[(0,i._)("h3",C,(0,u.zw)(t.title),1)],8,T)):((0,i.wg)(),(0,i.iD)("h3",P,(0,u.zw)(t.title),1)),(0,i._)("div",A,(0,u.zw)(t.date),1),t.image?((0,i.wg)(),(0,i.iD)("img",{key:2,src:"".concat(t.image.file.url).concat(e.imgUrlParams),class:"main"},null,8,F)):(0,i.kq)("",!0),t.body?((0,i.wg)(),(0,i.iD)("div",{key:3,class:"mb-none",style:{"line-height":"1.25"},innerHTML:s.parseBody(t.body)},null,8,x)):(0,i.kq)("",!0)])})),128))])],4)):(0,i.kq)("",!0)]})),_:1})}var I=o(50124),O=o(48534),M=(o(32564),o(2707),o(83710),o(21249),o(95229)),L=M.createClient({space:"bpm5i5mj2o02",accessToken:"kDjw4Ergl45z3NFMv6Bhd5Z5w_HTIdcioiY4Hq9mC0I"}),W=function(){var e=(0,O.Z)((0,I.Z)().mark((function e(){var t;return(0,I.Z)().wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,L.getEntries({content_type:"latestNews"}).then((function(e){var t=e.items;return t.map((function(e){var t,o=e.fields;return(0,r.Z)((0,r.Z)({},o),{},{image:null===(t=o.image)||void 0===t?void 0:t.fields})}))}));case 2:return t=e.sent,e.abrupt("return",t);case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),j=o(22135);const B={data:function(){return{news:[],imgUrlParams:"?w=500&h=500",height:0}},mounted:function(){var e=this;return(0,O.Z)((0,I.Z)().mark((function t(){var o;return(0,I.Z)().wrap((function(t){while(1)switch(t.prev=t.next){case 0:return o=document.getElementById("intro-text"),setTimeout((function(){e.height=o.offsetHeight-16}),500),t.next=4,W();case 4:e.news=t.sent.sort((function(e,t){return new Date(e.date)>new Date(t.date)?-1:1}));case 5:case"end":return t.stop()}}),t)})))()},methods:{parseBody:function(e){return(0,j.S)(e,{renderNode:{paragraph:function(e,t){return'

'.concat(t(e.content),"

")},blockquote:function(e,t){return'
'.concat(t(e.content),"
")}}})}}},q=(0,l.Z)(B,[["render",S],["__scopeId","data-v-121f48b8"]]),N=q;var U=function(e){return(0,i.dD)("data-v-2b387997"),e=e(),(0,i.Cn)(),e},K={class:"row bg-theme center p-medium"},z=U((function(){return(0,i._)("div",null,[(0,i._)("h1",{class:"title"},[(0,i.Uk)(" ROBOT"),(0,i._)("br"),(0,i.Uk)(" FRAME"),(0,i._)("br"),(0,i.Uk)(" WORK"),(0,i._)("div",{style:{"font-size":"2.5rem",transform:"translateY(-.5rem)",display:"inline-block"}},"🇺🇦")])],-1)})),H=[z];function G(e,t,o,r,a,n){return(0,i.wg)(),(0,i.iD)("div",K,H)}const $={name:"Banner"},Z=(0,l.Z)($,[["render",G],["__scopeId","data-v-2b387997"]]),V=Z;var J=function(e){return(0,i.dD)("data-v-05afb24c"),e=e(),(0,i.Cn)(),e},Y={class:"font-title bg-black color-white type-left type-slimbanner between flex type-large"},X=J((function(){return(0,i._)("div",{class:"m-small"},[(0,i.Uk)(" Tickets for "),(0,i._)("span",{class:"type-uppercase color-robocon"},"Robocon 2024"),(0,i.Uk)(" are on sale now! ")],-1)})),Q=J((function(){return(0,i._)("div",{class:"m-small"},[(0,i.Uk)(" More info at "),(0,i._)("a",{class:"color-robocon",href:"https://robocon.io/"},"robocon.io"),(0,i.Uk)(". ")],-1)})),ee=[X,Q];function te(e,t){return(0,i.wg)(),(0,i.iD)("div",Y,ee)}const oe={},re=(0,l.Z)(oe,[["render",te],["__scopeId","data-v-05afb24c"]]),ae=re;var ie=function(e){return(0,i.dD)("data-v-49880187"),e=e(),(0,i.Cn)(),e},ne={class:"row bg-black color-white p-small pt-large pb-large"},se={class:"container",style:{"line-height":"2"}},le={class:"row"},ce={class:"col-sm-6 col-md-3"},de={class:"mb-small"},me=ie((function(){return(0,i._)("div",null," Robot Framework ry ",-1)})),ue=ie((function(){return(0,i._)("div",null," Kampinkuja 2 ",-1)})),pe=ie((function(){return(0,i._)("div",null," 00100 Helsinki ",-1)})),he=ie((function(){return(0,i._)("div",null," Finland ",-1)})),be=ie((function(){return(0,i._)("a",{href:"mailto:board@robotframework.org"}," Contact ",-1)})),ge=(0,i.uE)('

Community

GitHub
Forum
Facebook
Twitter
LinkedIn
',6),_e=[ge],fe={key:0,class:"col-sm-12 mb-large"},we=(0,i.uE)('

Instructions

Installation
Quick start
User guide
Web demo
Robocon talks
',1),ye={class:"col-sm-6 col-md-3 flex flex-col between"},ke=ie((function(){return(0,i._)("div",null,null,-1)}));function ve(e,t,o,r,a,n){var s=(0,i.up)("router-link");return(0,i.wg)(),(0,i.iD)("div",ne,[(0,i._)("div",se,[(0,i._)("div",le,[(0,i._)("div",ce,[(0,i._)("h3",de,[(0,i.Wm)(s,{to:{name:"Foundation"}},{default:(0,i.w5)((function(){return[(0,i.Uk)(" Foundation ")]})),_:1})]),me,ue,pe,he,be]),(0,i._)("div",{class:(0,u.C_)(["col-sm-6 col-md-3",e.$store.state.isMobile?"type-right":""])},_e,2),e.$store.state.isMobile?((0,i.wg)(),(0,i.iD)("div",fe)):(0,i.kq)("",!0),we,(0,i._)("div",ye,[ke,(0,i._)("div",{class:(0,u.C_)(e.$store.state.isMobile?"type-right":"")},[(0,i._)("div",null,[(0,i.Wm)(s,{to:{name:"PrivacyPolicy"}},{default:(0,i.w5)((function(){return[(0,i.Uk)(" Privacy Policy ")]})),_:1})]),(0,i._)("div",null,[(0,i.Wm)(s,{to:{name:"CoC"}},{default:(0,i.w5)((function(){return[(0,i.Uk)(" Code of Ethics ")]})),_:1})])],2)])])])])}o(57327),o(47941);const Re={name:"PageFooter",components:{},data:function(){return{langDropdownOpen:!1}},computed:{langNames:function(){var e=this;return Object.keys(this.$i18n.messages).map((function(t){return{lang:t,name:e.$i18n.messages[t].langName}})).filter((function(e){var t=e.name;return"translation"!==t}))}},methods:{setLang:function(e){this.$i18n.locale=e,window.localStorage.setItem("lang",e)}}},De=(0,l.Z)(Re,[["render",ve],["__scopeId","data-v-49880187"]]),Ee=De;var Te={ref:"nav",class:"flex navbar bg-black color-white p-xsmall"},Ce={key:0},Pe={class:"container row middle pr-small"},Ae={class:"col-sm-3 flex"},Fe={class:"flex"},xe=["name","onClick"],Se={class:"relative",ref:"dropdownDocs"},Ie={key:0,class:"dropdown-container bg-black color-white p-small card",style:{left:"0.25rem"}},Oe=["href","onClick"];function Me(e,t,o,r,n,s){var l=(0,i.up)("robot-icon"),c=(0,i.up)("chevron-icon");return(0,i.wg)(),(0,i.iD)("div",Te,[(0,i.Wm)(a.uT,{name:"opacity"},{default:(0,i.w5)((function(){return[e.navSticky&&!e.iconInContainer?((0,i.wg)(),(0,i.iD)("div",Ce,[(0,i.Wm)(l,{size:"1.75rem",class:"absolute rf-icon-rotation cursor-pointer",onClick:s.logoClick},null,8,["onClick"])])):(0,i.kq)("",!0)]})),_:1}),(0,i._)("div",Pe,[(0,i._)("div",Ae,[(0,i.Wm)(a.uT,{name:"opacity"},{default:(0,i.w5)((function(){return[e.navSticky&&e.iconInContainer?((0,i.wg)(),(0,i.j4)(l,{key:0,size:"1.75rem",class:"rf-icon-rotation cursor-pointer",onClick:s.logoClick},null,8,["onClick"])):(0,i.kq)("",!0)]})),_:1})]),(0,i._)("div",Fe,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.$tm("navbar.items"),(function(e,t){return(0,i.wg)(),(0,i.iD)("button",{key:e.name,name:"go-to-".concat(e.name),class:(0,u.C_)(["color-white font-title type-no-underline type-uppercase line-height-body border-right-white border-light",0===t?"pl-xsmall pr-small":"px-small"]),onClick:function(t){return s.itemClick(e.id)}},(0,u.zw)(e.name),11,xe)})),128)),(0,i._)("div",Se,[(0,i._)("button",{class:(0,u.C_)(["flex middle px-small font-title type-uppercase line-height-body dropdown-button",e.docsDropdownOpen?"color-theme":"color-white"]),onClick:t[0]||(t[0]=function(t){return e.docsDropdownOpen=!e.docsDropdownOpen})},[(0,i._)("div",null,(0,u.zw)(e.$t("navbar.dropdownDocs.name")),1),(0,i.Wm)(c,{color:e.docsDropdownOpen?"theme":"white",direction:e.docsDropdownOpen?"up":"down",size:"1.5rem"},null,8,["color","direction"])],2),(0,i.Wm)(a.uT,{name:"fade"},{default:(0,i.w5)((function(){return[e.docsDropdownOpen?((0,i.wg)(),(0,i.iD)("div",Ie,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.$tm("navbar.dropdownDocs.items"),(function(t,o){var r=t.name,a=t.url,n=t.description;return(0,i.wg)(),(0,i.iD)("div",{key:r},[(0,i._)("a",{href:a,onClick:function(e){return s.linkClick(r)}},(0,u.zw)(r),9,Oe),(0,i._)("p",{class:(0,u.C_)(["type-small mt-none",o===e.$tm("navbar.dropdownDocs.items").length-1?"mb-none":""])},(0,u.zw)(n),3)])})),128))])):(0,i.kq)("",!0)]})),_:1})],512)])])],512)}var Le=o(82482),We=function(e){return(0,i.dD)("data-v-266d6681"),e=e(),(0,i.Cn)(),e},je=["width","height"],Be=We((function(){return(0,i._)("path",{id:"path",d:"M5,10.2c0-1.9,1.5-3.4,3.4-3.4c1.9,0,3.4,1.5,3.4,3.4c0,0.7-0.6,1.2-1.2,1.2c-0.7,0-1.2-0.6-1.2-1.2\n c0-0.5-0.4-0.9-0.9-0.9c-0.5,0-0.9,0.4-0.9,0.9c0,0.7-0.6,1.2-1.2,1.2S5,10.9,5,10.2 M19,15.9c0,0.7-0.6,1.2-1.2,1.2H6.4\n c-0.7,0-1.2-0.6-1.2-1.2c0-0.7,0.6-1.2,1.2-1.2h11.5C18.5,14.7,19,15.3,19,15.9 M13.7,10.9c-0.4-0.6-0.2-1.3,0.3-1.7l2.9-1.9\n c0.6-0.4,1.3-0.2,1.7,0.3c0.4,0.6,0.2,1.3-0.3,1.7l-2.9,1.9c-0.2,0.1-0.5,0.2-0.7,0.2C14.3,11.5,13.9,11.3,13.7,10.9 M21.5,18.5\n c0,0.2-0.1,0.5-0.3,0.6l-2.1,2.1c-0.2,0.2-0.4,0.3-0.6,0.3h-13c-0.2,0-0.5-0.1-0.6-0.3l-2.1-2.1c-0.2-0.2-0.3-0.4-0.3-0.6v-13\n c0-0.2,0.1-0.5,0.3-0.6l2.1-2.1C5,2.6,5.2,2.5,5.5,2.5h13c0.2,0,0.5,0.1,0.6,0.3l2.1,2.1c0.2,0.2,0.3,0.4,0.3,0.6V18.5z M23.3,3.4\n l-2.8-2.8C20.1,0.2,19.6,0,19,0H5C4.4,0,3.9,0.2,3.4,0.7L0.7,3.4C0.2,3.9,0,4.4,0,5v14c0,0.6,0.2,1.2,0.7,1.6l2.8,2.8\n C3.9,23.8,4.4,24,5,24h14c0.6,0,1.2-0.2,1.6-0.7l2.8-2.8c0.4-0.4,0.7-1,0.7-1.6V5C24,4.4,23.8,3.9,23.3,3.4"},null,-1)})),qe=[Be];function Ne(e,t,o,r,a,n){var s;return(0,i.wg)(),(0,i.iD)("svg",{version:"1.1",id:"face",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:o.size,height:o.size,class:(0,u.C_)((s={},(0,Le.Z)(s,"fill-white","white"===o.color),(0,Le.Z)(s,"fill-theme","theme"===o.color),s))},qe,10,je)}const Ue={name:"RobotIcon",props:{color:{type:String,default:"white"},size:{type:String,default:"1rem"}}},Ke=(0,l.Z)(Ue,[["render",Ne],["__scopeId","data-v-266d6681"]]),ze=Ke;var He=o(36741);const Ge={name:"Navbar",components:{RobotIcon:ze,ChevronIcon:He.Z},data:function(){return{navSticky:!1,linksDropdownOpen:!1,docsDropdownOpen:!1,langDropdownOpen:!1,iconInContainer:!1}},computed:{langNames:function(){var e=this;return Object.keys(this.$i18n.messages).map((function(t){return{lang:t,name:e.$i18n.messages[t].langName}}))}},methods:{itemClick:function(e){var t=document.getElementById(e);t&&(history.replaceState(null,null,"".concat(location.href.split("?")[0].split("#")[0],"#").concat(e)),window.scrollTo({top:t.offsetTop,behavior:"smooth"}),window.plausible("Nav click",{props:{section:e}}))},linkClick:function(e){window.plausible("Nav click",{props:{section:e}})},setLang:function(e){this.$i18n.locale=e,window.localStorage.setItem("lang",e)},onClick:function(e){this.$refs.dropdownDocs&&!this.$refs.dropdownDocs.contains(e.target)&&(this.docsDropdownOpen=!1)},onResize:function(){this.iconInContainer=window.innerWidth<1500},logoClick:function(){window.scrollTo({top:0,behavior:"smooth"})}},mounted:function(){var e=this,t=new IntersectionObserver((function(t){e.navSticky=!t[0].isIntersecting}),{threshold:1});t.observe(this.$refs.nav),document.addEventListener("click",this.onClick),window.addEventListener("resize",this.onResize),this.onResize()},beforeUnmount:function(){document.removeEventListener("click",this.onClick),window.removeEventListener("resize",this.onResize)},watch:{linksDropdownOpen:function(){this.linksDropdownOpen&&(this.langDropdownOpen=!1)},langDropdownOpen:function(){this.langDropdownOpen&&(this.linksDropdownOpen=!1)}}},$e=(0,l.Z)(Ge,[["render",Me],["__scopeId","data-v-56858196"]]),Ze=$e;var Ve={class:"bar flex middle p-xsmall"},Je={class:"container row"},Ye={class:"font-title color-white type-uppercase line-height-body"};function Xe(e,t,o,r,a,n){var s=(0,i.up)("robot-icon"),l=(0,i.up)("router-link");return(0,i.wg)(),(0,i.iD)("div",Ve,[(0,i.Wm)(l,{to:{name:"Home"},class:"flex mr-xsmall"},{default:(0,i.w5)((function(){return[(0,i.Wm)(s,{size:"1.75rem",class:"rf-icon-rotation cursor-pointer"})]})),_:1}),(0,i._)("div",Je,[(0,i.Wm)(l,{to:{name:"Home"},class:"color-theme font-title"},{default:(0,i.w5)((function(){return[(0,i.Uk)(" RBTFRMWRK ")]})),_:1}),(0,i._)("div",Ye," /"+(0,u.zw)(o.title),1)])])}const Qe={name:"NavbarSubPage",props:{title:{type:String,required:!0}},components:{RobotIcon:ze}},et=(0,l.Z)(Qe,[["render",Xe],["__scopeId","data-v-06e6a84e"]]),tt=et;var ot=function(e){return(0,i.dD)("data-v-46404a29"),e=e(),(0,i.Cn)(),e},rt={key:0,class:"menu bg-black pt-xlarge pb-large pr-small",style:{"padding-left":"3.75rem"}},at={key:"1",class:"mt-small"},it=["name","onClick"],nt={key:"3",class:"mt-medium"},st={class:"flex middle"},lt=["href"],ct={class:"flex middle"},dt=ot((function(){return(0,i._)("div",{class:"font-title ml-xsmall"}," ROBOT FRAMEWORK ",-1)})),mt=ot((function(){return(0,i._)("span",null,null,-1)})),ut=ot((function(){return(0,i._)("span",null,null,-1)})),pt=ot((function(){return(0,i._)("span",null,null,-1)})),ht=ot((function(){return(0,i._)("span",null,null,-1)})),bt=[mt,ut,pt,ht];function gt(e,t,o,r,n,s){var l=(0,i.up)("chevron-icon"),c=(0,i.up)("robot-icon");return(0,i.wg)(),(0,i.iD)(i.HY,null,[(0,i.Wm)(a.uT,{name:"fade"},{default:(0,i.w5)((function(){return[e.isOpen?((0,i.wg)(),(0,i.iD)("div",rt,[(0,i.Wm)(a.uT,{name:e.docsOpen?"fade-left":"fade-right",mode:"out-in"},{default:(0,i.w5)((function(){return[e.docsOpen?((0,i.wg)(),(0,i.iD)("div",nt,[(0,i._)("button",{class:"type-uppercase font-title flex middle mb-medium",style:{"margin-left":"-0.5rem"},onClick:t[1]||(t[1]=function(t){return e.docsOpen=!1})},[(0,i.Wm)(l,{direction:"left",color:"white",size:"2rem"}),(0,i.Uk)(" "+(0,u.zw)(e.$t("navbar.dropdownDocs.name")),1)]),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.$tm("navbar.dropdownDocs.items"),(function(t,o){var r=t.name,a=t.url,n=t.description;return(0,i.wg)(),(0,i.iD)("div",{key:r},[(0,i._)("div",st,[(0,i._)("a",{href:a,class:"line-height-1"},(0,u.zw)(r),9,lt)]),(0,i._)("p",{class:(0,u.C_)(["type-small color-white mt-none",o===e.$tm("navbar.dropdownDocs.items").length-1?"mb-none":"mb-small"])},(0,u.zw)(n),3)])})),128))])):((0,i.wg)(),(0,i.iD)("div",at,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.$tm("navbar.items"),(function(t){return(0,i.wg)(),(0,i.iD)("div",{key:t.name},[(0,i._)("button",{name:"go-to-".concat(t.name),class:"mb-small mt-xsmall color-white font-title type-uppercase",onClick:function(o){s.scrollTo(t.id,400),e.isOpen=!1}},(0,u.zw)(t.name),9,it)])})),128)),(0,i._)("div",null,[(0,i._)("button",{class:"flex middle mt-medium color-white font-title type-uppercase",style:{"margin-left":"-0.5rem"},onClick:t[0]||(t[0]=function(t){return e.docsOpen=!0})},[(0,i.Wm)(l,{direction:"right",color:"white",size:"2rem"}),(0,i._)("div",null,(0,u.zw)(e.$t("navbar.dropdownDocs.name")),1)])])]))]})),_:1},8,["name"])])):(0,i.kq)("",!0)]})),_:1}),(0,i._)("div",{class:(0,u.C_)(["navbar row between bg-black color-white",e.isOpen?"open":""])},[(0,i._)("div",ct,[(0,i.Wm)(c,{size:"2rem",class:"ml-small",onClick:t[2]||(t[2]=function(e){return s.scrollTo(null,400)})}),dt]),(0,i._)("button",{class:(0,u.C_)(["hamburger",e.isOpen?"open":""]),onClick:t[3]||(t[3]=function(t){e.isOpen=!e.isOpen,e.docsOpen=!1})},bt,2)],2),(0,i.Wm)(a.uT,{name:"opacity"},{default:(0,i.w5)((function(){return[e.isOpen?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"menu-background",onClick:t[4]||(t[4]=function(t){e.isOpen=!1,e.docsOpen=!1})})):(0,i.kq)("",!0)]})),_:1})],64)}o(91058);const _t={name:"NavMobile",components:{ChevronIcon:He.Z,RobotIcon:ze},data:function(){return{isOpen:!1,docsOpen:!1}},methods:{scrollTo:function(e,t){var o=function(e,t,o,r){var a=e/(r/2);return a<1?o/2*a*a+t:(a-=1,-o/2*(a*(a-2)-1)+t)},r=e?document.getElementById(e).offsetTop-80:0,a=document.scrollingElement||document.documentElement,i=a.scrollTop,n=r-i,s=+new Date,l=function e(){var l=+new Date,c=l-s;a.scrollTop=parseInt(o(c,i,n,t),10),c7?((0,i.wg)(),(0,i.iD)("button",{key:0,class:"stroke type-uppercase mt-small type-small mb-xsmall",onClick:t[3]||(t[3]=function(t){return e.showAll=!0})}," Show more ")):(0,i.kq)("",!0)],2)]))]})),_:1})],2)])}var bo=o(81318);const go=(0,l.Z)(bo.Z,[["render",ho],["__scopeId","data-v-16a2d6f8"]]),_o=go;o(74916),o(15306);var fo={class:"row"},wo=["onClick"],yo={key:0,class:"row mt-small color-white"},ko=["innerHTML"],vo={key:1},Ro=["innerHTML"],Do={key:2,class:"w-100"};function Eo(e,t,o,r,n,s){var l=(0,i.up)("robot-code");return(0,i.wg)(),(0,i.iD)("div",{class:(0,u.C_)(["bg-grey-dark card",e.$store.state.isMobile?"p-small pt-medium sharp":"p-large"])},[(0,i._)("div",fo,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(o.tabs,(function(t,o){return(0,i.wg)(),(0,i.iD)("button",{key:t.name,class:(0,u.C_)(["type-uppercase theme type-small mb-xsmall",[e.activeTabIndex===o?"active":"",2===o?"mr-none":"mr-small"]]),onClick:function(t){return e.activeTabIndex=o}},(0,u.zw)(t.name),11,wo)})),128))]),s.activeTab?((0,i.wg)(),(0,i.iD)("div",yo,[(0,i.Wm)(a.uT,{name:"opacity",mode:"out-in"},{default:(0,i.w5)((function(){return[s.includesRobotCode||e.$slots["tab-".concat(e.activeTabIndex+1)]?s.includesRobotCode?((0,i.wg)(),(0,i.iD)("div",vo,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(s.splitDescription,(function(e){return(0,i.wg)(),(0,i.iD)(i.HY,{key:e},[""===e.slice(0,7)?((0,i.wg)(),(0,i.j4)(l,{key:0,code:e.replace("","").replace("","")},null,8,["code"])):((0,i.wg)(),(0,i.iD)("div",{key:1,innerHTML:e},null,8,Ro))],64)})),128))])):((0,i.wg)(),(0,i.iD)("div",Do,[(0,i.WI)(e.$slots,"tab-".concat(e.activeTabIndex+1))])):((0,i.wg)(),(0,i.iD)("div",{key:s.activeTab.name,class:"w-100",innerHTML:s.activeTab.description},null,8,ko))]})),_:3})])):(0,i.kq)("",!0)],2)}o(9653),o(91038),o(41637),o(64765);function To(e,t,o,r,a,n){var s=(0,i.up)("highlightjs");return(0,i.wg)(),(0,i.iD)("div",null,[(0,i.Wm)(s,{class:"highlight-container",language:"robot",code:o.code},null,8,["code"])])}const Co={name:"RobotCode",props:{code:{type:String,default:""}}},Po=(0,l.Z)(Co,[["render",To]]),Ao=Po,Fo={name:"TabBox",components:{RobotCode:Ao},props:{tabs:{type:Array,required:!0},defaultTab:{type:Number,required:!1}},data:function(){return{activeTabIndex:0,eventSent:!1}},computed:{activeTab:function(){return this.tabs[this.activeTabIndex]},includesRobotCode:function(){return this.activeTab.description&&this.activeTab.description.includes("")},splitDescription:function(){if(!this.includesRobotCode)return null;var e=document.createElement("template");return e.innerHTML=this.activeTab.description,Array.from(e.content.children).map((function(e){return e.outerHTML}))}},created:function(){if(this.defaultTab&&(this.activeTabIndex=this.defaultTab),"#getting-started"===window.location.hash){var e=new URLSearchParams(window.location.search),t=e.get("tab");t&&(this.activeTabIndex=Number(t))}},watch:{activeTab:function(){if(this.eventSent||(window.plausible("Interact",{props:{element:"Learning"}}),this.eventSent=!0),!this.defaultTab){var e="".concat(window.location.href.split("?")[0].split("#")[0],"?tab=").concat(this.activeTabIndex,"#getting-started");history.replaceState(null,null,e)}}}},xo=(0,l.Z)(Fo,[["render",Eo]]),So=xo;var Io={class:"row bg-grey-dark-darkmode pt-medium pb-medium p-small"},Oo={class:"col-sm-12 mb-xsmall type-center color-theme"},Mo=["href"],Lo={class:"cursor-pointer bg-white card"},Wo=["innerHTML"];function jo(e,t,o,r,a,n){return(0,i.wg)(),(0,i.iD)("div",Io,[(0,i._)("div",Oo,[(0,i._)("h3",null,(0,u.zw)(e.$t("development.sponsorBoxTitle")),1)]),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.$tm("resourcesList.sponsors"),(function(t){return(0,i.wg)(),(0,i.iD)("a",{key:t.name,href:t.href,target:"_blank",class:"sponsor"},[(0,i._)("div",Lo,[(0,i._)("div",{class:"img-container mb-small",style:(0,u.j5)("background-image: url(".concat(e.publicPath,"img/sponsors/").concat(t.img,")"))},null,4)])],8,Mo)})),128)),(0,i._)("div",{class:"col-sm-12 type-small type-right pr-small",innerHTML:e.$t("development.howToJoin")},null,8,Wo)])}const Bo={name:"Sponsors",data:function(){return{publicPath:"/"}}},qo=(0,l.Z)(Bo,[["render",jo],["__scopeId","data-v-0fb3dc1b"]]),No=qo;var Uo={class:"row color-black color-white-darkmode type-small"},Ko={class:"bg-white bg-grey-dark-darkmode card p-medium"},zo={class:"bg-white-darkmode rounded"},Ho=["href"],Go=["innerHTML"];function $o(e,t,o,r,a,n){return(0,i.wg)(),(0,i.iD)("div",Uo,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(n.columns,(function(t,o){return(0,i.wg)(),(0,i.iD)("div",{key:o,class:(0,u.C_)(3===n.columns.length?"col-sm-4":"col-sm-12")},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(t,(function(t){return(0,i.wg)(),(0,i.iD)("div",{key:t.name,class:(0,u.C_)(["mb-small",[3===n.columns.length&&0===o?"pr-small":"",3===n.columns.length&&1===o?"pr-xsmall pl-xsmall":"",3===n.columns.length&&2===o?"pl-small":""]])},[(0,i._)("div",Ko,[(0,i._)("div",zo,[(0,i._)("a",{href:t.href},[(0,i._)("div",{class:"img-container mb-small",style:(0,u.j5)("background-image: url(".concat(e.publicPath,"img/sponsors/").concat(t.img,")"))},null,4)],8,Ho)]),(0,i._)("div",{innerHTML:t.description},null,8,Go)])],2)})),128))],2)})),128))])}const Zo={name:"SponsorsDetailed",data:function(){return{publicPath:"/",columnAmount:3}},computed:{columns:function(){return 3===this.columnAmount?[this.$tm("resourcesList.sponsors").filter((function(e,t){return t%3===0})),this.$tm("resourcesList.sponsors").filter((function(e,t){return t%3===1})),this.$tm("resourcesList.sponsors").filter((function(e,t){return t%3===2}))]:[this.$tm("resourcesList.sponsors")]}},created:function(){window.addEventListener("resize",this.calculateColumnAmount),this.calculateColumnAmount()},beforeUnmount:function(){window.removeEventListener("resize",this.calculateColumnAmount)},methods:{calculateColumnAmount:function(){window.innerWidth<450?this.columnAmount=1:this.columnAmount=3}}},Vo=(0,l.Z)(Zo,[["render",$o],["__scopeId","data-v-fb75dab4"]]),Jo=Vo;var Yo=(0,i._)("a",{href:"https://github.com/robotframework/robotframework/milestones",target:"_blank"},[(0,i._)("h3",{class:"type-center color-theme"}," Development milestones ")],-1),Xo={class:"col-sm-12 ml-2xsmall"},Qo={class:"card bg-white color-black p-small"},er={class:"row between middle"},tr=["href"],or={class:"type-large"},rr={class:"type-small"},ar={key:0,class:"type-small type-italic border-bottom-theme border-thin pb-small description-container"},ir=["id","innerHTML"],nr=["onClick"],sr={key:1,class:"type-small"},lr=(0,i._)("h4",{class:"mt-small"}," Issues ",-1),cr={class:"row"},dr={class:"col-sm-6 pr-3xsmall"},mr=["onClick"],ur={class:"col-sm-6 pl-3xsmall"},pr=["onClick"],hr=["innerHTML"],br=["href"],gr=["onClick"],_r=(0,i._)("div",{class:"type-right type-small mt-medium"}," * Release dates due to change ",-1);function fr(e,t,o,r,n,s){var l=(0,i.up)("new-tab-icon");return(0,i.wg)(),(0,i.iD)("div",{class:(0,u.C_)(["bg-grey-dark-darkmode pt-medium pb-medium",e.$store.state.isMobile?"p-xsmall":"p-small"])},[Yo,((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(["open","closed"],(function(e){return(0,i._)("div",{key:e,class:"row"},[(0,i._)("h4",Xo,(0,u.zw)(e),1),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(s.milestonesSorted[e],(function(t){var o,r;return(0,i.wg)(),(0,i.iD)("div",{key:t.id,class:"col-sm-12 col-md-6 col-lg-4 pl-2xsmall pr-2xsmall mb-small"},[(0,i._)("div",Qo,[(0,i._)("div",er,[(0,i._)("a",{href:t.html_url,target:"_blank"},[(0,i._)("h4",or,(0,u.zw)(t.title),1)],8,tr),(0,i._)("div",rr,["closed"===e?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[(0,i.Uk)(" released: "+(0,u.zw)(s.format(new Date(t.closed_at),"MMM dd yyyy")),1)],64)):t.due_on?((0,i.wg)(),(0,i.iD)(i.HY,{key:1},[(0,i.Uk)(" target: "+(0,u.zw)(s.format(new Date(t.due_on),"MMM dd yyyy")),1)],64)):((0,i.wg)(),(0,i.iD)(i.HY,{key:2},[(0,i.Uk)(" target open ")],64))])]),""!==t.description?((0,i.wg)(),(0,i.iD)("div",ar,[(0,i._)("div",{id:"milestone-".concat(t.id,"-description"),innerHTML:s.parseDescription(t.description),class:(0,u.C_)(["milestone-description mt-small",t.descriptionExpanded?"expanded":""])},null,10,ir),t.descriptionExpanded?(0,i.kq)("",!0):((0,i.wg)(),(0,i.iD)("button",{key:0,class:"type-small weight-bold type-underline color-black",onClick:function(e){return t.descriptionExpanded=!0}}," Expand ",8,nr))])):(0,i.kq)("",!0),t.issues.items.length?((0,i.wg)(),(0,i.iD)("div",sr,[lr,(0,i._)("div",cr,[(0,i._)("div",dr,[(0,i._)("button",{class:(0,u.C_)(["theme type-xsmall w-100 type-center",(o={},(0,Le.Z)(o,"active","open"===t.issuesTab),(0,Le.Z)(o,"disabled",0===t.open_issues),o)]),style:{padding:"0.5rem 0.5rem"},onClick:function(e){return t.issuesTab="open"}}," Open ("+(0,u.zw)(t.open_issues)+") ",11,mr)]),(0,i._)("div",ur,[(0,i._)("button",{class:(0,u.C_)(["theme type-xsmall w-100 type-center",(r={},(0,Le.Z)(r,"active","closed"===t.issuesTab),(0,Le.Z)(r,"disabled",0===t.closed_issues),r)]),style:{padding:"0.5rem 0.5rem"},onClick:function(e){return t.issuesTab="closed"}}," Closed ("+(0,u.zw)(t.closed_issues)+") ",11,pr)])]),(0,i.Wm)(a.uT,{name:"opacity",mode:"out-in"},{default:(0,i.w5)((function(){return[((0,i.wg)(),(0,i.iD)("div",{class:"row mt-xsmall",key:t.issuesTab},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(t.issues.items.filter((function(e){var o=e.state;return t.issuesTab===o})).slice(0,t.issuesExpanded?void 0:3),(function(e){return(0,i.wg)(),(0,i.iD)("div",{key:e.id,class:"card w-100 flex issue-card mb-xsmall type-small p-2xsmall"},[(0,i._)("div",{innerHTML:s.parseIssueDescription(e.title),style:{width:"calc(100% - 1.5rem)"}},null,8,hr),(0,i._)("a",{class:"mt-3xsmall",href:e.html_url,target:"_blank"},[(0,i.Wm)(l,{color:"theme",size:"1.25rem"})],8,br)])})),128)),!t.issuesExpanded&&t.issues.items.filter((function(e){var o=e.state;return t.issuesTab===o})).length>3?((0,i.wg)(),(0,i.iD)("button",{key:0,class:"type-small weight-bold type-underline ml-2xsmall color-black",onClick:function(e){return t.issuesExpanded=!0}}," Show all ",8,gr)):(0,i.kq)("",!0)]))]})),_:2},1024)])):(0,i.kq)("",!0)])])})),128))])})),64)),_r],2)}var wr=o(41472);const yr=(0,l.Z)(wr.Z,[["render",fr]]),kr=yr;var vr=["src"];function Rr(e,t,o,r,a,n){return(0,i.wg)(),(0,i.iD)("div",null,[(0,i._)("iframe",{style:{width:"100%","aspect-ratio":"16/9"},src:"https://www.youtube.com/embed/"+o.videoId+"?html5=1&enablejsapi=1&autoplay=0&rel=0&showinfo=0&modestbranding=1&controls=1&autohide=0&vq=large",frameborder:"0",allowfullscreen:""},"\n ",8,vr)])}const Dr={name:"VideoComponent",props:{videoId:String}},Er=(0,l.Z)(Dr,[["render",Rr]]),Tr=Er;o(44479),o(90887);const Cr={name:"App",components:{VideoComponent:Tr,RoboconBanner:ae,Banner:V,PageFooter:Ee,Navbar:Ze,NavMobile:wt,PageSection:Ct,News:N,CommunityItems:Kt,ResourceBox:_o,TabBox:So,Sponsors:No,Milestones:kr,MonacoEditor:(0,i.RC)((function(){return Promise.all([o.e(591),o.e(251)]).then(o.bind(o,51251))}))}},Pr=(0,l.Z)(Cr,[["render",k],["__scopeId","data-v-0ed9c1fe"]]),Ar=Pr;var Fr={class:"container mb-3xlarge"},xr=["innerHTML"];function Sr(e,t,o,r,a,n){var s=(0,i.up)("navbar-sub-page"),l=(0,i.up)("VideoComponent"),c=(0,i.up)("page-section"),d=(0,i.up)("sponsors-detailed"),m=(0,i.up)("page-footer");return(0,i.wg)(),(0,i.iD)("div",null,[(0,i.Wm)(s,{title:"Foundation"}),(0,i._)("div",Fr,[(0,i._)("div",{class:"col-sm-12 col-lg-9 col-lg-offset-3",innerHTML:e.$t("foundation.lead")},null,8,xr),(0,i.Wm)(l,{videoId:"jlhgitypC5Q",class:"col-sm-12 col-lg-9 col-lg-offset-3"}),(0,i.Wm)(c,{"title-id":"benefits-and-cost",title:e.$t("foundation.benefitsAndCost.title"),body:e.$t("foundation.benefitsAndCost.body")},null,8,["title","body"]),(0,i.Wm)(c,{"title-id":"how-to-join",title:e.$t("foundation.howToJoin.title"),body:e.$t("foundation.howToJoin.body")},null,8,["title","body"]),(0,i.Wm)(c,{"title-id":"what-we-do",title:e.$t("foundation.whatWeDo.title"),body:e.$t("foundation.whatWeDo.body")},{default:(0,i.w5)((function(){return[(0,i.Wm)(d,{class:"col-sm-12 col-lg-9 col-lg-offset-3"})]})),_:1},8,["title","body"])]),(0,i.Wm)(m)])}const Ir={name:"Foundation",components:{VideoComponent:Tr,NavbarSubPage:tt,PageSection:Ct,SponsorsDetailed:Jo,PageFooter:Ee},data:function(){return{publicPath:"/"}}},Or=(0,l.Z)(Ir,[["render",Sr]]),Mr=Or;var Lr={class:"container mb-3xlarge"},Wr={class:"container narrow mt-large",ref:"tabs"},jr=["innerHTML"],Br={class:"mb-none mt-small"},qr={class:"type-italic type-small mb-small"},Nr=["href"],Ur={class:"type-small mb-small"};function Kr(e,t,o,r,a,n){var s=(0,i.up)("navbar-sub-page"),l=(0,i.up)("tab-box"),c=(0,i.up)("page-section"),d=(0,i.up)("page-footer");return(0,i.wg)(),(0,i.iD)("div",null,[(0,i.Wm)(s,{title:"RPA"}),(0,i._)("div",Lr,[(0,i._)("div",Wr,[(0,i._)("div",{innerHTML:e.$t("rpa.hero.description")},null,8,jr),(0,i.Wm)(l,{tabs:e.$tm("rpa.hero.tabs"),"default-tab":e.defaultTab},null,8,["tabs","default-tab"])],512),(0,i.Wm)(c,{"long-title":"","title-id":"intro",title:e.$t("rpa.intro.title"),body:e.$t("rpa.intro.body")},null,8,["title","body"]),(0,i.Wm)(c,{"long-title":"","title-id":"benefits",title:e.$t("rpa.benefits.title"),body:e.$t("rpa.benefits.body")},null,8,["title","body"]),(0,i.Wm)(c,{"long-title":"","title-id":"quickstart",title:e.$t("rpa.quickstart.title"),body:e.$t("rpa.quickstart.body")},null,8,["title","body"]),(0,i.Wm)(c,{"long-title":"","title-id":"resources",title:e.$t("rpa.resources.title"),body:e.$t("rpa.resources.body")},{default:(0,i.w5)((function(){return[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(["tooling","libraries","tutorials"],(function(t){return(0,i._)("div",{key:t,class:"col-sm-12 col-lg-9 col-lg-offset-3"},[(0,i._)("h3",Br,(0,u.zw)(e.$t("rpa.resources.".concat(t,".title"))),1),(0,i._)("div",qr,(0,u.zw)(e.$t("rpa.resources.".concat(t,".description"))),1),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.$tm("rpa.resources.".concat(t,".list")),(function(e){return(0,i.wg)(),(0,i.iD)("div",{key:e.name},[(0,i._)("a",{class:"block line-height-small",href:e.href},(0,u.zw)(e.name),9,Nr),(0,i._)("div",Ur,(0,u.zw)(e.description),1)])})),128))])})),64))]})),_:1},8,["title","body"])]),(0,i.Wm)(d)])}const zr={name:"RPA",components:{NavbarSubPage:tt,PageSection:Ct,PageFooter:Ee,TabBox:So},data:function(){return{defaultTab:0}},created:function(){window.navigator.userAgentData.platform.toLowerCase().includes("mac")&&(this.defaultTab=1),window.navigator.userAgentData.platform.toLowerCase().includes("linux")&&(this.defaultTab=2)},mounted:function(){this.$refs.tabs.addEventListener("click",(function(e){var t=e.target;if(t.classList.contains("icon-copy")){var o=new Blob([t.nextElementSibling.innerText],{type:"text/plain"}),r=new window.ClipboardItem({"text/plain":o});navigator.clipboard.write([r]).then((function(){t.classList.add("copied")}))}}))}},Hr=(0,l.Z)(zr,[["render",Kr]]),Gr=Hr;var $r={class:"container mb-3xlarge"},Zr=["innerHTML"];function Vr(e,t,o,r,a,n){var s=(0,i.up)("navbar-sub-page"),l=(0,i.up)("VideoComponent"),c=(0,i.up)("page-footer");return(0,i.wg)(),(0,i.iD)("div",null,[(0,i.Wm)(s,{title:"TestAutomation"}),(0,i._)("div",$r,[(0,i._)("div",{class:"col-sm-12 col-lg-9 col-lg-offset-3",innerHTML:e.$t("testautomation.lead")},null,8,Zr),(0,i.Wm)(l,{videoId:"0q4-AjqpO9M"}),(0,i.Wm)(l,{videoId:"SypNjILTRl0"}),(0,i.Wm)(l,{videoId:"mSR-HPCBeEQ"}),(0,i.Wm)(l,{videoId:"PFqmZ5GwXgg"}),(0,i.Wm)(l,{videoId:"g98m3XpE8gw"}),(0,i.Wm)(l,{videoId:"Ju90-ewW_gM"})]),(0,i.Wm)(c)])}const Jr={name:"TestAutomation",components:{VideoComponent:Tr,NavbarSubPage:tt,PageFooter:Ee}},Yr=(0,l.Z)(Jr,[["render",Vr]]),Xr=Yr;var Qr={class:"container narrow pl-small pr-small"},ea={class:"row mb-large mt-large"},ta=(0,i.uE)('

Robot Framework Privacy Policy

This Privacy Policy is applicable to the personal data processed by Robot Framework Foundation("Robot Framework" or "we") relating to the users of the Robot Framework website and the Robocon website (hereinafter jointly refered to as “Service”)

This Privacy Policy is also applicable to personal data processed by Robot Framework in regard to the representatives of our member organizations and other partners, including personal data collected in connection to our marketing activities and events. All of the aforementioned data subjects are hereinafter collectively referred to as “Users” or “you.”

The purpose of this Privacy Policy is to provide you with information about the processing of yourpersonal data in accordance with the General Data Protection Regulation 2016/679 (GDPR).

Please note that this Privacy Policy only applies to processing carried out by Robot Frameworkas a data controller. This Privacy Policy does not address, and we are not responsible for, the privacy and data processing practices of any third parties.

In regard to Robot Framework documentation available via Github, Github acts as the datacontroller for any user information. For more information, please see the Github Privacy Statement. The payment transactions for purchases of Robot Framework gear are facilitated via the Reddy platform. For more information please see the Reddy Privacy Statement.

This Privacy Policy may be updated if required in order to reflect the changes in data processing practices or otherwise. The current version can be found on our website. We will not make substantial changes to this Privacy Policy or reduce your rights under this Privacy Policy without providing a notice thereof.

CONTACT DETAILS

Robot Framework Ry
Business ID: 2754775-1
Pohjoinen Rautatiekatu 25, 00100 Helsinki https://robotframework.org/
Contact person: René Rohner, Chairman of The Board, +49 173 7089491
chair@robotframework.org

PERSONAL DATA PROCESSED AND SOURCES OF DATA

We collect two types of information concerning our Users: (i) User Data; and (ii) Analytics Data.

User Data is primarily received directly from you either in connection to your use of the Service or in connection to your interaction with us. In certain cases your personal data may also be directly provided to us by the company or organization you represent.

Analytics Data is collected automatically as you use the Service. Although we do not normally use Analytics Data to identify individuals, sometimes individuals can be recognized from it, either alone or when combined or linked with other data. In such situations, Analytics Data shall also be considered to be personal data under applicable laws and we will treat the combined data as personal data.

User Data and Analytics Data typically consist of the following categories of data:

User Data

  • Name;
  • Organisation and work title;
  • Contact information (such as email address, postal address and phone number);
  • Any direct correspondence with Robot Framework;
  • Information relating to your participation to our events, such as event registrations, attendance and cancellations, event feedback and special dietary restrictions you may provide;
  • Purchase and delivery information for orders of Robot Framework gear;
  • Direct marketing opt-outs and opt-ins.

Analytics Data

  • IP address;
  • Device type and model;
  • Operating system;
  • Time of visit;
  • Browser type and version;
  • Language settings.

COOKIES AND ANALYTICS TOOLS

We use various technologies to collect and store Analytics Data and other information when you visit our Service, including cookies. These technologies are also used to integrate our social media accounts with the Service.

Cookies are small text files sent and saved on your device that allow us to identify visitors of our websites and facilitate the use of our Service and to create aggregate information of our visitors. The cookies will not harm your device or files. We may use cookies to tailor and improve our Service.

Users may choose to set their web browser to refuse cookies, or to alert when cookies are being sent. For example, the following links provide information on how to adjust the cookie settings on some popular browsers:

Safari
Google Chrome
Internet Explorer
Mozilla Firefox

Please note that some parts of our Service may not function properly if the use of cookies is refused. We use Google Analytics to compile Analytics Data and reports on visitor usage. For an overview of Google Analytics, please visit Google Analytics It is possible to opt-out of Google Analytics with the following browser add-on tool: Google Analytics opt-out add-on.

PURPOSES AND LEGITIMATE GROUNDS OF PROCESSING

  • Purposes of processing
  • To provide our Service and to carry out our contractual obligations (legal ground: performance of a contract and legitimate interest)
    We process personal data to be able to offer the Service to our Users and to run and maintain our operations. Personal data may be processed in order to carry out our contractual obligations towards the individual User or towards the organization the User represents. We may use the data for example to process member applications or to process orders of Robot Framework gear. For our legal obligations (legal ground: compliance with a legal obligation)
    We process personal data to enable us to administer and fulfil our obligations under law. This includes data processed for complying with our accounting obligations and providing information to relevant authorities. For claims handling and legal processes (legal ground: legitimate interest)
    We may process personal data in relation to claims handling, debt collection and legal processes. We may also process data for the prevention of fraud, misuse of our ervices and for data, system and network security.
    For communication and marketing (legal ground: legitimate interest)
    We may process personal data for the purpose of contacting our Users regarding our Service and events and for informing Users of changes in our Service, overall operations or updates to the documentation and tools we provide. We may also process personal data for direct marketing purposes, for example in the form of sending newsletters.
    For quality improvement and trend analysis (legal ground: legitimate interest)
    We may process information regarding your use of the Service to improve the quality of our Service, for example by analysing any trends in the use of our Service. Similarly we may process any feedback provided by you to improve our operations in general. Where possible, we will do this using only aggregated, non-personally identifiable data.
  • Legal grounds for processing
  • We primarily process personal data on a contractual basis. For individuals acting asrepresentatives of our customer or partner organizations, personal data is primarilyprocessed based on our legitimate interest whilst fulfilling our contractual obligationstowards the organisations they represent.
  • We may also process personal data based on our legitimate interests, for example in connection with analytics and marketing. When choosing to use your data on the basis of our legitimate interests, we carefully weigh our own interests against your right to privacy.
  • In certain cases you may be requested to grant your consent for the processing of your personal data. In this event, the legal ground for such processing is your consent. You may withdraw your consent at any time.

INTERNATIONAL TRANSFERS

Robot Framework stores personal data primarily within the European Economic Area. However, we have service providers in several geographical locations. As such, we, our service providers may transfer personal data to, or access it in, jurisdictions outside the European Economic Area or outside of your domicile.

We will take steps to ensure that your personal data receives an adequate level of protection in the jurisdictions in which it is processed. We provide adequate protection for the transfers of personal data to countries outside of the European Economic Area through a series of agreements with our service providers based on the Standard Contractual Clauses or through other appropriate safeguards, such as the Privacy Shield Framework.

PERSONAL DATA RECIPIENTS

We do not share personal data with third parties outside of Robot Framework’s organizationunless one of the following circumstances applies:

  • For legal reasons
  • We may share personal data with third parties outside of our organization if we have a good-faith belief that access to and use of the personal data is reasonably necessary to: (i) meet any applicable law, regulation, and/or court order; (ii) detect, prevent, or otherwise address fraud, security or technical issues; and/or (iii) protect the interests, property or safety of Robot Framework, our Users or the public in accordance with the law. When possible, we will inform you about such transfer and processing.
  • To authorized service providers
  • We may share personal data to authorized service providers who perform services for us(including data storage, sales, marketing and support services). Our agreements with ourservice providers include commitments that the service providers agree to limit their useof personal data and to comply with privacy and security standards at least as stringentas the terms of this Privacy Policy.
  • For other legitimate reasons
  • If Robot Framework is involved in an acquisition or similar reconstructing, we maytransfer personal data to the third party involved. However, we will continue to ensure theconfidentiality of all personal data. We will give notice to those concerned when thepersonal data are transferred or become subject to a different privacy policy as soon asreasonably possible.
  • With explicit consent
  • We may share personal data with third parties outside of our organization for otherreasons than the ones mentioned before, when we have your explicit consent to do so.You have the right to withdraw this consent at all times.

STORAGE PERIOD

  • Robot Framework does not store personal data longer than is legally permitted and necessary for purposes of providing the Service or the relevant parts thereof, or for another individual purpose for which your personal data is being processed. The storage period depends on the nature of the information and the purposes of processing. The maximum period may therefore vary per use.
  • We will store Analytics Data relating to the Service 50 months

YOUR RIGHTS

  • Right to access
  • You have the right to access your personal data processed by us. You may contact us and we will inform what personal data we have collected and processed regarding you.
  • Right to withdraw consent
  • In case the processing is based on a consent you have granted to us, you may withdraw the consent at any time. Withdrawing a consent may lead to fewer possibilities to use our Service. The withdrawal of consent does not affect the lawfulness of processing based on consent before its withdrawal.
  • Right to rectify
  • You have the right to have incorrect or incomplete personal data we have stored about you corrected or completed by contacting us.
  • Right to erasure
  • You may also ask us to erase your personal data from our systems. We will comply with such request unless we have a legitimate ground to not delete the data.
  • Right to object
  • You have the right to object to certain use of your personal data if such data are processed for other purposes than necessary for the performance of the Service or for compliance with a legal obligation. If you object to the further processing of your personal data, this may lead to fewer possibilities to use the our Service.
  • Right to restriction of processing
  • You may request us to restrict processing of personal data for example when your data erasure, rectification or objection requests are pending and/or when we do not have legitimate grounds to process your data. This may however lead to fewer possibilities to use our Service.
  • Right to data portability
  • You have the right to receive your personal data from us in a structured and commonly used format and to independently transmit those data to a third party.
  • How to use the rights
  • The above mentioned rights may be used by sending a letter or an e-mail to us on the addresses set out above. We may request the provision of additional information necessary to confirm your identity.
  • We reserve the right to reject requests that are unreasonably repetitive, excessive or manifestly unfounded.

DIRECT MARKETING

  • Notwithstanding any consent granted beforehand for the purposes of direct marketing, you have the right to prohibit us from using your personal data for direct marketing purposes, market research and profiling made for direct marketing purposes by contacting us on the addresses indicated above or by using the unsubscribe possibility offered in connection with any direct marketing messages.

INFORMATION SECURITY

  • We use administrative, organizational, technical, and physical safeguards to protect the personal data we collect and process. Our security controls are designed to maintain an appropriate level of data confidentiality, integrity, availability, resilience and ability restore the data. We regularly test our systems, and other assets for security vulnerabilities.
  • Should despite of the security measures, a security breach occur that is likely to have negative effects on your privacy, we will inform you and other affected parties, as well as relevant authorities when required by applicable data protection laws, about the breach as soon as possible.

LODGING A COMPLAINT

  • In case you consider our processing of personal data to be inconsistent with the applicable data protection laws, a complaint may be lodged with the local supervisory authority for data protection.

In Finland, the local supervisory authority is the Data Protection Ombudsman (https://www.tietosuoja.fi).

',2),oa={class:"mb-xlarge"};function ra(e,t,o,r,a,n){var s=(0,i.up)("router-link");return(0,i.wg)(),(0,i.iD)("div",Qr,[(0,i._)("div",ea,[(0,i.Wm)(s,{to:{name:"Home"}},{default:(0,i.w5)((function(){return[(0,i.Uk)(" Back ")]})),_:1})]),ta,(0,i._)("div",oa,[(0,i.Wm)(s,{to:{name:"Home"}},{default:(0,i.w5)((function(){return[(0,i.Uk)(" Back ")]})),_:1})])])}const aa={name:"PrivacyPolicy"},ia=(0,l.Z)(aa,[["render",ra]]),na=ia;var sa={class:"container narrow mb-xlarge pl-small pr-small"},la={class:"row mb-large mt-large"},ca=(0,i.uE)('

Robot Framework Code of Conduct

ROBOT FRAMEWORK FOUNDATION is dedicated to providing a harassment-free experience for everyone, regardless of gender, gender identity and expression, sexual orientation, disability, physical appearance, body size, age, race, or religion. We do not tolerate harassment of participants in any form.

This code of conduct applies to all ROBOT FRAMEWORK spaces, both online and off. Anyone who violates this code of conduct may be sanctioned or expelled from these spaces at the discretion of the Robot Framework board.

Some ROBOT FRAMEWORK spaces may have additional rules in place, which will be made clearly available to participants. Participants are responsible for knowing and abiding by these rules. If you are being harassed by a member of ROBOT FRAMEWORK, notice that someone else is being harassed, or have any other concerns, please Contact awareness@robotframework.org.

Harassment includes

  • Offensive comments related to gender, gender identity and expression, sexual orientation, disability, mental illness, neuro(a)typicality, physical appearance, body size, age, race, or religion.
  • Unwelcome comments regarding a person’s lifestyle choices and practices, including those related to food, health, parenting, drugs, and employment.
  • Deliberate misgendering or use of ‘dead’ or rejected names.
  • Gratuitous or off-topic sexual images or behaviour in spaces where they’re not appropriate.
  • Physical contact and simulated physical contact (eg, textual descriptions like “*hug*” or “*backrub*”) without consent or after a request to stop.
  • Threats of violence.
  • Incitement of violence towards any individual, including encouraging a person to commit suicide or to engage in self-harm.
  • Deliberate intimidation.
  • Stalking or following.
  • Harassing photography or recording, including logging online activity for harassment purposes.
  • Sustained disruption of discussion.
  • Unwelcome sexual attention.
  • Pattern of inappropriate social contact, such as requesting/assuming inappropriate levels of intimacy with others
  • Continued one-on-one communication after requests to cease.
  • Deliberate “outing” of any aspect of a person’s identity without their consent except as necessary to protect vulnerable people from intentional abuse.
  • Publication of non-harassing private communication.

ROBOT FRAMEWORK community prioritizes marginalized people’s safety over privileged people’s comfort. The Robot Framework board reserves the right not to act on complaints regarding:

  • ‘Reverse’ -isms, including ‘reverse racism,’ ‘reverse sexism,’ and ‘cisphobia’
  • Reasonable communication of boundaries, such as “leave me alone,” “go away,” or “I’m not discussing this with you.”
  • Communicating in a ‘tone’ you don’t find congenial
  • Criticizing racist, sexist, cissexist, or otherwise oppressive behaviour or assumptions

Reporting

  • If you are being harassed by a member of ROBOT FRAMEWORK, notice that someone else is being harassed, or have any other concerns, please contact awareness@robotframework.org. If the person who is harassing you is on the team, they will recuse themselves from handling your incident. We will respond as promptly as we can.
  • This code of conduct applies to ROBOT FRAMEWORK spaces, but if you are being harassed by a member of ROBOT FRAMEWORK outside our spaces, we still want to know about it. We will take all good-faith reports of harassment by ROBOT FRAMEWORK members seriously. This includes harassment outside our spaces and harassment that took place at any point in time. The abuse team reserves the right to exclude people from ROBOT FRAMEWORK based on their past behaviour, including behaviour outside ROBOT FRAMEWORK spaces and behaviour towards people who are not in ROBOT FRAMEWORK community.
  • In order to protect volunteers from abuse and burnout, we reserve the right to reject any report we believe to have been made in bad faith. Reports intended to silence legitimate criticism may be deleted without response.
  • We will respect confidentiality requests for the purpose of protecting victims of abuse. At our discretion, we may publicly name a person about whom we’ve received harassment complaints, or privately warn third parties about them, if we believe that doing so will increase the safety of ROBOT FRAMEWORK members or the general public. We will not name harassment victims without their affirmative consent.

Consequences

  • Participants asked to stop any harassing behaviour are expected to comply immediately.
  • If a participant engages in harassing behaviour, the Robot Framework board may take any action they deem appropriate, up to and including expulsion from all ROBOT FRAMEWORK spaces and identification of the participant as a harasser to other ROBOT FRAMEWORK members or the general public.
',12),da={class:"row mb-large mt-large"};function ma(e,t,o,r,a,n){var s=(0,i.up)("router-link");return(0,i.wg)(),(0,i.iD)("div",sa,[(0,i._)("div",la,[e.cameFromHome?((0,i.wg)(),(0,i.iD)("button",{key:0,onClick:t[0]||(t[0]=function(t){return e.$router.go(-1)}),class:"color-theme type-underline"}," Back ")):((0,i.wg)(),(0,i.j4)(s,{key:1,to:{name:"Home"}},{default:(0,i.w5)((function(){return[(0,i.Uk)(" Back ")]})),_:1}))]),ca,(0,i._)("div",da,[e.cameFromHome?((0,i.wg)(),(0,i.iD)("button",{key:0,onClick:t[1]||(t[1]=function(t){return e.$router.go(-1)}),class:"color-theme type-underline"}," Back ")):((0,i.wg)(),(0,i.j4)(s,{key:1,to:{name:"Home"}},{default:(0,i.w5)((function(){return[(0,i.Uk)(" Back ")]})),_:1}))])])}const ua={name:"Coc",data:function(){return{cameFromHome:!1}},beforeRouteEnter:function(e,t,o){o((function(e){e.cameFromHome="Home"===t.name}))}},pa=(0,l.Z)(ua,[["render",ma]]),ha=pa;var ba={class:"container mb-xlarge p-small"},ga=["innerHTML"],_a={class:"row"},fa=["href"],wa=["innerHTML"];function ya(e,t,o,r,n,s){var l=(0,i.up)("navbar-sub-page");return(0,i.wg)(),(0,i.iD)("div",null,[(0,i.Wm)(l,{title:"Users"}),(0,i._)("div",ba,[(0,i._)("h2",null,(0,u.zw)(e.$t("usersPage.title")),1),(0,i._)("p",{innerHTML:e.$t("usersPage.body")},null,8,ga),(0,i._)("div",_a,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(s.columns,(function(t,o){return(0,i.wg)(),(0,i.iD)("div",{key:o,class:(0,u.C_)(["p-small","\n col-sm-".concat(12/s.columns.length,"\n ").concat(0===o&&1!==e.columnAmount?"pl-none pr-medium":"pl-small","\n ").concat(o===s.columns.length-1&&1!==e.columnAmount?"pr-none pl-medium":"pr-small")])},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(t,(function(t,r){return(0,i.wg)(),(0,i.iD)("div",{key:t.name},[(0,i.Wm)(a.uT,{appear:"",name:"opacity-slow"},{default:(0,i.w5)((function(){return[(0,i._)("div",{class:"card p-small mb-large bg-white user-card",style:(0,u.j5)("transition-delay: ".concat((r/10+o/s.columns.length/10)*s.columns.length+.1,"s;"))},[(0,i._)("div",{class:"img-container mb-small",style:(0,u.j5)("background-image: url(".concat(e.publicPath,"img/users/").concat(t.imgName,")"))},null,4),(0,i._)("h3",null,[(0,i._)("a",{href:t.href,target:"_blank"},(0,u.zw)(t.title),9,fa)]),(0,i._)("p",{innerHTML:t.text},null,8,wa)],4)]})),_:2},1024)])})),128))],2)})),128))])])])}const ka={name:"Users",components:{NavbarSubPage:tt},data:function(){return{publicPath:"/",columnAmount:4,cameFromHome:!1}},computed:{columns:function(){return 4===this.columnAmount?[this.$tm("resourcesList.users").filter((function(e,t){return t%4===0})),this.$tm("resourcesList.users").filter((function(e,t){return t%4===1})),this.$tm("resourcesList.users").filter((function(e,t){return t%4===2})),this.$tm("resourcesList.users").filter((function(e,t){return t%4===3}))]:3===this.columnAmount?[this.$tm("resourcesList.users").filter((function(e,t){return t%3===0})),this.$tm("resourcesList.users").filter((function(e,t){return t%3===1})),this.$tm("resourcesList.users").filter((function(e,t){return t%3===2}))]:2===this.columnAmount?[this.$tm("resourcesList.users").filter((function(e,t){return t%2===0})),this.$tm("resourcesList.users").filter((function(e,t){return t%2===1}))]:[this.$tm("resourcesList.users")]}},created:function(){window.addEventListener("resize",this.calculateColumnAmount),this.calculateColumnAmount(),window.history.replaceState(null,null,null)},beforeUnmount:function(){window.removeEventListener("resize",this.calculateColumnAmount)},beforeRouteEnter:function(e,t,o){o((function(e){e.cameFromHome="Home"===t.name}))},methods:{calculateColumnAmount:function(){window.innerWidth<450?this.columnAmount=1:window.innerWidth<900?this.columnAmount=2:window.innerWidth<1300?this.columnAmount=3:this.columnAmount=4}}},va=(0,l.Z)(ka,[["render",ya],["__scopeId","data-v-acaa66fe"]]),Ra=va;function Da(e,t,o,r,a,n){var s=(0,i.up)("navbar-sub-page"),l=(0,i.up)("editor");return(0,i.wg)(),(0,i.iD)("div",null,[(0,i.Wm)(s,{title:"Code Playground"}),(0,i.Wm)(l)])}const Ea={name:"CodeEditor",components:{NavbarSubPage:tt,Editor:(0,i.RC)((function(){return Promise.all([o.e(591),o.e(251)]).then(o.bind(o,51251))}))}},Ta=(0,l.Z)(Ea,[["render",Da]]),Ca=Ta;function Pa(e,t,o,r,a,n){var s=(0,i.up)("editor");return(0,i.wg)(),(0,i.iD)("div",null,[(0,i.Wm)(s)])}const Aa={name:"EmbeddedEditor",components:{Editor:(0,i.RC)((function(){return Promise.all([o.e(591),o.e(706)]).then(o.bind(o,27706))}))}},Fa=(0,l.Z)(Aa,[["render",Pa]]),xa=Fa;var Sa={class:"login-form-container"},Ia={key:0,class:"login-form"},Oa=["src"],Ma=["src"],La={key:1},Wa={key:2};function ja(e,t,o,r,n,s){return(0,i.wg)(),(0,i.iD)("div",Sa,[e.invalid||e.valid?(0,i.kq)("",!0):((0,i.wg)(),(0,i.iD)("form",Ia,[e.isDarkMode?((0,i.wg)(),(0,i.iD)("img",{key:0,src:"".concat(e.publicPath,"img/RF-white.svg"),class:"small-robot"},null,8,Oa)):((0,i.wg)(),(0,i.iD)("img",{key:1,src:"".concat(e.publicPath,"img/RF.svg"),class:"small-robot"},null,8,Ma)),(0,i._)("label",null,[(0,i.Uk)("Username"),(0,i.wy)((0,i._)("input",{type:"text","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.username=t})},null,512),[[a.nr,e.username]])]),(0,i._)("label",null,[(0,i.Uk)("Password"),(0,i.wy)((0,i._)("input",{type:"password","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.password=t})},null,512),[[a.nr,e.password]])]),(0,i._)("input",{type:"submit",value:"Login",onClick:t[2]||(t[2]=function(){return s.checkUsernameAndPassword&&s.checkUsernameAndPassword.apply(s,arguments)})})])),e.invalid?((0,i.wg)(),(0,i.iD)("span",La,"No humans allowed!")):(0,i.kq)("",!0),e.valid?((0,i.wg)(),(0,i.iD)("span",Wa,"I salute you, Robot overloard!")):(0,i.kq)("",!0)])}const Ba={name:"Demoapp",data:function(){return{publicPath:"/",isDarkMode:!1,username:"",password:"",invalid:!1,valid:!1}},created:function(){this.isDarkMode=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches},methods:{checkUsernameAndPassword:function(e){"robot"===this.username&&"overloard"===this.password?this.valid=!0:this.invalid=!0,document.title="Robots rule",e.preventDefault()}}},qa=(0,l.Z)(Ba,[["render",ja],["__scopeId","data-v-6a9ed5b0"]]),Na=qa;var Ua={class:"container"},Ka={class:"row center type-center",style:{"margin-top":"calc(100vh / 2 - 7rem)"}},za=(0,i._)("div",{class:"col-sm-12"},[(0,i._)("h3",null,"404 - Not found")],-1),Ha=["src"],Ga=["src"],$a={class:"col-sm-12 mt-medium"};function Za(e,t,o,r,a,n){var s=(0,i.up)("router-link");return(0,i.wg)(),(0,i.iD)("div",Ua,[(0,i._)("div",Ka,[za,e.isDarkMode?((0,i.wg)(),(0,i.iD)("img",{key:0,src:"".concat(e.publicPath,"img/RF-white.svg")},null,8,Ha)):((0,i.wg)(),(0,i.iD)("img",{key:1,src:"".concat(e.publicPath,"img/RF.svg"),class:"mt-small"},null,8,Ga)),(0,i._)("div",$a,[(0,i.Wm)(s,{to:{name:"Home"}},{default:(0,i.w5)((function(){return[(0,i.Uk)(" Back to home ")]})),_:1})])])])}const Va={name:"NotFound",data:function(){return{publicPath:"/",isDarkMode:!1}},created:function(){window.plausible("404",{props:{path:document.location.pathname}}),this.isDarkMode=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}},Ja=(0,l.Z)(Va,[["render",Za]]),Ya=Ja;var Xa=[{path:"/",name:"Home",component:Ar},{path:"/foundation",name:"Foundation",component:Mr},{path:"/rpa",name:"RPA",component:Gr,meta:{title:"RPA"}},{path:"/test-automation",name:"Test Automation",component:Xr,meta:{title:"Test Automation"}},{path:"/foundation",name:"Foundation",component:Mr,meta:{title:"Foundation"}},{path:"/robot-framework-foundation",redirect:{name:"Foundation"}},{path:"/privacy-policy",name:"PrivacyPolicy",component:na,meta:{title:"Privacy Policy"}},{path:"/code-of-conduct",redirect:{name:"CoC"}},{path:"/code-of-ethics",name:"CoC",component:ha,meta:{title:"Code of Ethics"}},{path:"/users",name:"Users",component:Ra,meta:{title:"Users"}},{path:"/code",name:"Code",component:Ca,meta:{title:"Playground"}},{path:"/embed",name:"Embed",component:xa,meta:{title:"EmbeddedCode"}},{path:"/demoapp",name:"DemoApp",component:Na},{path:"/:pathMatch(.*)*",name:"NotFound",component:Ya,meta:{title:"404"}}],Qa=(0,m.p7)({history:(0,m.PO)(),routes:Xa,scrollBehavior:function(e,t,o){return o||{top:0}}});Qa.afterEach((function(e,t,o){var r=e.meta.title;return document.title=r?"".concat(r," | Robot Framework"):"Robot Framework",!0}));const ei=Qa;var ti=o(33907);const oi=(0,ti.MT)({state:{isMobile:null,isTablet:null,isDesktop:null,milestones:[],stars:[]},mutations:{SET_IS_MOBILE:function(e,t){e.isMobile=t},SET_IS_TABLET:function(e,t){e.isTablet=t},SET_IS_DESKTOP:function(e,t){e.isDesktop=t},SET_VALUE:function(e,t){var o=t.key,r=t.value;e[o]=r}},actions:{},modules:{}});var ri=o(85845),ai=o(30837),ii=o(66246);const ni=function(){return{foundation:{lead:'

Robot Framework Foundation is a non-profit consortium that fosters the growth of Robot Framework.\n It was founded by companies with a common interest to ensure the development of Robot Framework now and in\n the future. We are always looking for new members to join.

',benefitsAndCost:{title:"Benefits and cost",body:'

When your company becomes a member you will:

\n
    \n
  1. Ensure Robot Framework is maintained and developed
  2. \n
  3. Get visibility about your membership for your company if you wish
  4. \n
  5. Gain ability to participate in decision making
  6. \n
  7. Get all this for an affordable price per user
  8. \n
\n

Annual Fees

\n

Annual fee is determined by how many Robot Framework users are in your organization:

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
UsersFee
1-2500€
3-101500€
11-503000€
51-2506000€
251-12000€
'},howToJoin:{title:"How to join",body:"

If you'd like to become a member of Robot Framework Foundation, please

\n
    \n
  1. Fill in the application
  2. \n
  3. Robot Framework Foundation board will make a voting according to our rules
  4. \n
  5. You are added to the webpage and mailing list, when you are accepted
  6. \n
  7. Welcome to make the world of Open Source and Automation better!
  8. \n
\n

If you have any questions related to the membership, please send an email to\n board{at}{'@'}{at}robotframework.org\n and we will get back to you.

\n

For existing members

\n

If your contact person changes and for other such matters, please contact admin{at}{'@'}{at}robotframework.org

\n "},whatWeDo:{title:"What we do",body:'

We sponsor the development of Robot Framework. Sponsoring other projects in the wider\n Robot Framework ecosystem can also be considered. We take care of the overall Robot Framework infrastructure\n including public websites, email lists and CI servers. We promote Robot Framework by organizing meetups and\n the yearly conference RoboCon.\n
Read more..

\n

Robot Framework Foundation Members

'}}}},si=function(){return{rpa:{hero:{description:'\n

\n Get started in seconds with Robot Framework RPA\n

\n

\n Here´s how you set up your first RPA project\n

',tabs:[{name:"Windows",description:'\n
curl -o rcc.exe https://downloads.robocorp.com/rcc/releases/latest/windows64/rcc.exe\n  rcc create example\n  cd example\n  rcc run
'},{name:"macOS",description:'\n
brew install robocorp/tools/rcc\n  rcc create example\n  cd example\n  rcc run
'},{name:"Linux",description:'\n
curl -o rcc https://downloads.robocorp.com/rcc/releases/latest/linux64/rcc\n  chmod a+x rcc\n  rcc create example\n  cd example\n  rcc run
'}]},intro:{title:"What is Robot Framework RPA?",body:"

RPA stands for Robotic Process Automation and it’s a method for automating routine\n tasks and processes through user interfaces, APIs, and other interactions that mimic the way\n a human user performs tasks. The power of RPA lies in how you can automate tasks without having\n to change the underlying systems.

\n\n

Robot Framework is a keyword-driven automation framework that sits on top of Python. It is an\n abstraction that lets you write powerful automations with simple human-readable commands and minimum overhead.

\n\n

The power of Robot Framework comes from its ecosystem of tools, libraries, and community. It is\n the world’s most popular and widely used framework for open-source RPA.

"},benefits:{title:"Why use it and what can you do with it?",body:"

Robot Framework and its ecosystem projects are 100% free and open-source. It is used\n by thousands of developers worldwide and the core Robot Framework is supported by dozens of\n companies through the Robot Framework foundation. Hundreds of companies globally offer support\n and services in the Robot Framework ecosystem.

\n\n

Robot Framework is natively extendable through libraries that are built on Python.\n Creating new extensions is extremely simple, so you never run out of capabilities. Community-built\n libraries around Robot Framework provide the functionality to perform virtually any RPA task imaginable.

\n\n

There are literally tens of thousands of use-cases for RPA with Robot Framework. Anything\n from automating financial processes like accounts payable, order to cash, procure to pay,\n to healthcare applications around electronic health records, or HR applications such as new employee\n onboarding. You can complete any routine task that a human would do through digital workers built on the Robot Framework.

"},quickstart:{title:"Quickstart",body:'

Quickstart is still work in progress and will be released later this year.\n Meanwhile, check User Guide for general task creation instructions!

'},resources:{title:"Resources",body:"

Robot Framework itself provides the language to describe automations. To create an RPA\n bot with Robot Framework, you’ll combine tooling (develop, package, run) with libraries (bot capabilities.)\n This list is a collection of RPA resources to get you started

",tooling:{title:"Tooling",description:"Tools for developing and running bots with Robot Framework",list:[{name:"RCC",href:"https://github.com/robocorp/rcc#readme",description:"Toolchain for creating, packaging, and running bots with Robot Framework and Python"},{name:"Robot Framework Language Server for VS Code",href:"https://marketplace.visualstudio.com/items?itemName=robocorp.robotframework-lsp",description:"VS Code extension for Robot Framework language"},{name:"RCC features for VS Code",href:"https://marketplace.visualstudio.com/items?itemName=robocorp.robocorp-code",description:"VS Code extension for RCC"}]},libraries:{title:"Libraries",description:"RPA focused / useful libraries",list:[{name:"RPA framework",href:"https://rpaframework.org",description:"Common RPA functionality in a single library - includes desktop, browser, Excel, PDF, email, and many more capabilities"},{name:"Playwright",href:"https://robotframework-browser.org",description:"Powerful browser automation library utilizing Playwright. It comes with a built-in browser."},{name:"SAP GUI Library",href:"https://github.com/frankvanderkuur/robotframework-sapguilibrary",description:"GUI automation for SAP"},{name:"Mainframe 3270 Library",href:"https://github.com/Altran-PT-GDC/Robot-Framework-Mainframe-3270-Library",description:"Automating 3270 mainframes"},{name:"DataDriver Libary",href:"https://github.com/Snooz82/robotframework-datadriver",description:"Data-driven automation through tables (csv, xls, xlsx, etc.)"}]},tutorials:{title:"Examples and tutorials for RPA",description:"",list:[{name:"Robocorp Portal",href:"https://robocorp.com/portal/",description:"Examples and templates for RPA projects"},{name:"Robocorp RPA certifications",href:"https://robocorp.com/docs/courses",description:"Robocorp certification trainings for RPA (free)"}]}}}}},li=function(){return{testautomation:{lead:'

"In software testing, test automation is the use of software separate from the software being tested to control the execution of tests and the comparison of actual outcomes with predicted outcomes. Test automation can automate some repetitive but necessary tasks in a formalized testing process already in place, or perform additional testing that would be difficult to do manually. Test automation is critical for continuous delivery and continuous testing." - Wikipedia

Here are some examples of Robot Framework usage in test automation from robocons:

'}}},ci=function(){return(0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({},ni()),si()),li()),{},{langName:"English",newsBanner:"",navbar:{items:[{name:"Getting started",id:"getting-started"},{name:"Resources",id:"resources"},{name:"Community",id:"community"},{name:"Development",id:"development"}],dropdownDocs:{name:"Docs",items:[{name:"Guides (new)",url:"https://docs.robotframework.org/docs",description:"How to start"},{name:"User Guide",url:"https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html",description:"All features explained"},{name:"BuiltIn Library",url:"https://robotframework.org/robotframework/latest/libraries/BuiltIn.html",description:"Always available keywords"},{name:"Standard Libraries",url:"https://robotframework.org/robotframework/#standard-libraries",description:"Keyword documentation"},{name:"Public API",url:"https://robot-framework.readthedocs.io/en/stable/",description:"Build RF extensions"}]}},introduction:{title:"Introduction",body:'Robot Framework is a generic open source automation framework.\n It can be used for test automation and robotic process automation (RPA).

\n\n Robot Framework is supported by Robot Framework Foundation.\n Many industry-leading companies use the tool in their software development.

\n\n Robot Framework is open and extensible. Robot Framework can be integrated with virtually any\n other tool to create powerful and flexible automation solutions.\n Robot Framework is free to use without licensing costs.

\n\n Robot Framework has an easy syntax, utilizing human-readable keywords. Its capabilities can be extended\n by libraries implemented with Python, Java or many other programming languages.\n Robot Framework has a rich ecosystem around it, consisting of libraries and tools that are developed as separate projects.',usedByTitle:"Robot Framework is used by...",companies:[{name:"ABB",description:"ABB is using Robot Framework in software development for testing distribution automation related configuration tools, web interfaces and embedded devices.",imgName:"ABB.svg"},{name:"Cisco",description:"Cisco’s Customer Experience (CX) supports the testing & validation of Cisco and 3rd party solutions deployed by our customers. This includes Solution Validation Services (SVS) delivered both on Cisco-premise and customer-premise.",imgName:"Cisco.svg"},{name:"Condé Nast",description:'Condé Nast transformed their quality assurance for their brand sites, such as Brides, Wired and Architectural Digest, from an entirely manual process to automated one with Robot Framework.',imgName:"Condé_Nast.svg"},{name:"KONE",description:"KONE is widely using Robot Framework in software development for testing embedded systems in elevators and escalators.",imgName:"Kone.svg"},{name:"Finnair",description:"Finnair is using Robot Framework to support Finnair digital platform development.",imgName:"Finnair.svg"},{name:"Finnish Tax Administration",description:"Finnish Tax Administration is using Robot Framework in multiple projects.\n Robot Framework is one of the core tools in their development to make Quality Assurance and Automation.",imgName:"Vero.svg"},{name:"Juniper Networks",description:"Juniper Networks has built an extensive automation framework on top of Robot Framework for end-to-end qualification of Juniper products. It is used extensively in multiple groups including engineering and support.",imgName:"Juniper_Networks.svg"},{name:"Naval Research Laboratory",description:'The Naval Research Laboratory extends Robot Framework to provide a seamless integration with the SAGE multi-agent system. This integration enables Robot Framework to drive distributed simulation and monitoring for test automation of SOA systems.',imgName:"Naval_Research_Laboratory.svg"},{name:"Nokia",description:"Robot Framework was initially developed at Nokia Networks and it is used extensively around the whole company. It is used for testing different devices, software systems and protocols via GUIs, APIs and various other interfaces.",imgName:"Nokia.svg"}]},gettingStarted:{title:"Getting Started",body:'Code is worth a thousand words.\n

Below you\'ll find a live Robot Framework editor with embedded WASM Python environment to run it online.\n Feel free to experiment with it! NOTE: This is the editor\'s first release. If you find bugs,\n please report them in Github issues.

\n

To start using Robot Framework in a project of your own, please check tabs "Install" and "Learn". Also be sure to visit the new Robot Framework Docs!

',tabs:[{name:"Editor"},{name:"Install",description:'\n

Robot Framework is implemented with Python, so you need to have\n Python installed.\n
On Windows machines, make sure to add\n Python to PATH\n during installation.

\n

Installing Robot Framework with pip is simple:\n

pip install robotframework

\n

To check that the installation was successful, run\n

robot --version

\n

For a full guide, please see\n Installation instructions.\n It also covers topics such as running Robot Framework on Jython (JVM) and IronPython (.NET).

\n

Now you are ready to write your first tests!

\n '},{name:"Learn"}]},community:{title:"Community",body:'

Robot Framework has a vibrant community of testing enthusiasts around it. Feel free to\n stop by if you have any questions, need advice or would just like to connect with like-minded people!

\n

There is also an annual RoboCon conference that is hosted in Helsinki, Finland.\n For more information and to watch previous years\' talks, visit\n robocon.io or our\n YouTube Channel.

\n

To support Robot Framework you can find a 👕 T-shirt\n and a ☕ coffee cup\n from our Shop.

\n',links:{forum:{title:"Forum",description:"Official Robot Framework forum."},slack:{title:"Slack",description:'Community team chat.
Click for invite!'}}},resources:{title:"Resources",body:'

Robot Framework is open source and supported by Robot Framework Foundation.\n There is a huge community of contributors around the tool.\n The software is built with expandability in mind and there are numerous ways to extend\n it\'s use cases for various needs.

\n

If you have created or found a library that you think should be listed here, please\n let us know\n by submitting a pull request or an issue. You are also welcome to report unmaintained\n ones that shouldn\'t be listed anymore.',tabs:[{name:"Libraries",key:"libraries",description:'Separately developed external libraries that\n can be installed based on your needs. Creating your own libraries is a breeze. For instructions, see\n \n creating test libraries in Robot Framework User Guide.'},{name:"Built-in",key:"builtin",description:"Libraries and tools that are bundled with the framework. Libraries provide\n the actual automation and testing capabilities to Robot Framework by providing keywords."},{name:"Tools",key:"tools",description:"Supporting tools ease automation: editing, running, building and so on.\n Most of these tools are developed as separate projects, but some are built into the framework itself."}],mobileTitles:["Standard","External"]},development:{title:"Development",body:'

Development of Robot Framework is funded by the non-profit\n Robot Framework Foundation. It consists\n of companies and organizations that want to ensure the continuity of Robot Framework now and\n in the future.

\n

Project is hosted at GitHub

\n

Thanks to the sponsors, Robot Framework remains completely\n free to use while being actively maintained and developed. Foundation also covers other\n related expenses such as the development of this website and organizing various meetups.',sponsorBoxTitle:"Members of Robot Framework Foundation",howToJoin:'How to join'},usersPage:{title:"Users of Robot Framework",body:'If you\'d like your company added here, please submit a\n pull request or an\n issue.'}})},di=function(){return{langName:"Deutsch",newsBanner:'RF 4.0 is out! Click here for release notes',navbar:{items:["Einführung","Einstieg","Gemeinschaft","Ressourcen"],dropdownName:"Links",dropdown:[{name:"Github",url:"https://github.com/robotframework/robotframework",description:"Source code + issues"},{name:"Forum",url:"http://forum.robotframework.org/",description:"Discuss Robot Framework"},{name:"Foundation",url:"https://robotframework.org/foundation/",description:"Support the development"},{name:"Robocon",url:"https://robocon.io/",description:"Annual conference"},{name:"Shop",url:"https://reddyshop.co/robotframework/",description:"Support the development"},{name:"RPA",url:"https://robotframework.org/rpa/",description:"RPA stuff"}]},introduction:{title:"Introduction",body:"Robot Framework is a generic open source automation framework.\n It can be used for test automation and robotic process automation (RPA).

\n\n Robot Framework is actively supported, with many industry-leading companies using it in their software development.

\n\n Robot Framework is open and extensible and can be integrated with virtually any other tool to create powerful and flexible automation solutions.\n Being open source also means that Robot Framework is free to use without licensing costs.\n Robot Framework has easy syntax, utilizing human-readable keywords. Its capabilities can be extended by libraries implemented with Python or Java.\n The framework has a rich ecosystem around it, consisting of libraries and tools that are developed as separate projects.",companies:[{name:"ABB",description:"ABB is using Robot Framework in software development for testing distribution automation related configuration tools, web interfaces and embedded devices.",imgName:"ABB.svg"},{name:"Cisco",description:"Cisco’s Customer Experience (CX) supports the testing & validation of Cisco and 3rd party solutions deployed by our customers. This includes Solution Validation Services (SVS) delivered both on Cisco-premise and customer-premise as part of a NetDevOps (CI/CD) process where continuous validation accelerates technology adoption, de-risks IT deployments, changes and upgrades, and ensures complex migrations are transparent.",imgName:"Cisco.svg"},{name:"Condé Nast",description:'Condé Nast transformed their quality assurance for their brand sites, such as Brides, Wired and Architectural Digest, from an entirely manual process to automated one with Robot Framework.',imgName:"Condé_Nast.svg"},{name:"KONE",description:"KONE is widely using Robot Framework in software development for testing embedded systems in elevators and escalators.",imgName:"Kone.svg"}]},gettingStarted:{title:"Getting Started",body:"Robot Framework is a generic open source automation framework.\n It can be used for test automation and robotic process automation (RPA).

\n\n Robot Framework is actively supported, with many industry-leading companies using it in their software development.

\n\n Robot Framework is open and extensible and can be integrated with virtually any other tool to create powerful and flexible automation solutions.\n Being open source also means that Robot Framework is free to use without licensing costs.\n Robot Framework has easy syntax, utilizing human-readable keywords. Its capabilities can be extended by libraries implemented with Python or Java.\n The framework has a rich ecosystem around it, consisting of libraries and tools that are developed as separate projects.

\n\n Robot Framework project is hosted on GitHub where you can find further documentation, source code, and issue tracker. Downloads are hosted at PyPI.\n\n Robot Framework is operating system and application independent.\n The core framework is implemented using Python and also runs on Jython (JVM) and IronPython (.NET).

\n\n Robot Framework itself is open source software released under Apache License 2.0, and most of the libraries and tools in the ecosystem are also open source.\n The framework was initially developed at Nokia Networks and was open sourced in 2008."}}},mi=function(){return{langName:"Português",newsBanner:'🎉 RF 4.0 is out! Click here for release notes',navbar:{items:["Introduction","Getting started","Community","Resources"],dropdownName:"Links",dropdown:[{name:"Github",url:"https://github.com/robotframework/robotframework",description:"Source code + issues"},{name:"Forum",url:"http://forum.robotframework.org/",description:"Discuss Robot Framework"},{name:"Foundation",url:"https://robotframework.org/foundation/",description:"Support the development"},{name:"Robocon",url:"https://robocon.io/",description:"Annual conference"},{name:"Shop",url:"https://reddyshop.co/robotframework/",description:"Support the development"},{name:"RPA",url:"https://robotframework.org/rpa/",description:"RPA stuff"}]},introduction:{title:"Introduction",body:"Robot Framework is a generic open source automation framework.\n It can be used for test automation and robotic process automation (RPA).

\n\n Robot Framework is actively supported, with many industry-leading companies using\n it in their software development.

\n\n Robot Framework is open and extensible and can be integrated with virtually any\n other tool to create powerful and flexible automation solutions. Being open source\n also means that Robot Framework is free to use without licensing costs. Robot Framework\n has easy syntax, utilizing human-readable keywords. Its capabilities can be extended\n by libraries implemented with Python or Java. The framework has a rich ecosystem\n around it, consisting of libraries and tools that are developed as separate projects.",companies:[{name:"ABB",description:"ABB is using Robot Framework in software development for testing distribution automation related configuration tools, web interfaces and embedded devices.",imgName:"ABB.svg"},{name:"Cisco",description:"Cisco’s Customer Experience (CX) supports the testing & validation of Cisco and 3rd party solutions deployed by our customers. This includes Solution Validation Services (SVS) delivered both on Cisco-premise and customer-premise.",imgName:"Cisco.svg"},{name:"Condé Nast",description:'Condé Nast transformed their quality assurance for their brand sites, such as Brides, Wired and Architectural Digest, from an entirely manual process to automated one with Robot Framework.',imgName:"Condé_Nast.svg"},{name:"KONE",description:"KONE is widely using Robot Framework in software development for testing embedded systems in elevators and escalators.",imgName:"Kone.svg"}]},gettingStarted:{title:"Getting Started",body:"Robot Framework is open and extensible and can be integrated with virtually any other\n tool to create powerful and flexible automation solutions. Being open source also means\n that Robot Framework is free to use without licensing costs. Robot Framework has easy\n syntax, utilizing human-readable keywords. Its capabilities can be extended by libraries\n implemented with Python or Java."},community:{title:"Community",body:"Robot Framework has a vibrant community around it with various online forums, annual\n RoboCon conference, and meetup groups around the world."},resources:{title:"Resources",body:"If you want to add your library here, make a PR.",tabs:[{name:"Libraries",key:"libraries",description:"Libraries provide the actual automation and testing capabilities to\n Robot Framework by providing keywords. Several standard libraries are bundled with\n the framework, and there are separately developed external libraries galore that\n can be installed based on your needs. Creating your own libraries is a breeze."},{name:"Tools",key:"tools",description:"Supporting tools ease automation: editing, running, building and so on.\n Most of these tools are developed as separate projects, but some are built into the framework itself."},{name:"Learning",key:"learning",description:"Want to get started? Looking for a way to do things? Here are the most\n important documentation resources needed to work with Robot Framework. Notice that\n individual libraries and tools in the ecosystem have their own documentation that\n is typically accessed via their project pages."}]}}},ui=function(){return{langName:"Français",newsBanner:'🎉 RF 4.0 is out! Click here for release notes',navbar:{items:["Introduction","Getting started","Community","Resources"],dropdownName:"Links",dropdown:[{name:"Github",url:"https://github.com/robotframework/robotframework",description:"Source code + issues"},{name:"Forum",url:"http://forum.robotframework.org/",description:"Discuss Robot Framework"},{name:"Foundation",url:"https://robotframework.org/foundation/",description:"Support the development"},{name:"Robocon",url:"https://robocon.io/",description:"Annual conference"},{name:"Shop",url:"https://reddyshop.co/robotframework/",description:"Support the development"},{name:"RPA",url:"https://robotframework.org/rpa/",description:"RPA stuff"}]},introduction:{title:"Introduction",body:"Robot Framework is a generic open source automation framework.\n It can be used for test automation and robotic process automation (RPA).

\n\n Robot Framework is actively supported, with many industry-leading companies using\n it in their software development.

\n\n Robot Framework is open and extensible and can be integrated with virtually any\n other tool to create powerful and flexible automation solutions. Being open source\n also means that Robot Framework is free to use without licensing costs. Robot Framework\n has easy syntax, utilizing human-readable keywords. Its capabilities can be extended\n by libraries implemented with Python or Java. The framework has a rich ecosystem\n around it, consisting of libraries and tools that are developed as separate projects.",companies:[{name:"ABB",description:"ABB is using Robot Framework in software development for testing distribution automation related configuration tools, web interfaces and embedded devices.",imgName:"ABB.svg"},{name:"Cisco",description:"Cisco’s Customer Experience (CX) supports the testing & validation of Cisco and 3rd party solutions deployed by our customers. This includes Solution Validation Services (SVS) delivered both on Cisco-premise and customer-premise.",imgName:"Cisco.svg"},{name:"Condé Nast",description:'Condé Nast transformed their quality assurance for their brand sites, such as Brides, Wired and Architectural Digest, from an entirely manual process to automated one with Robot Framework.',imgName:"Condé_Nast.svg"},{name:"KONE",description:"KONE is widely using Robot Framework in software development for testing embedded systems in elevators and escalators.",imgName:"Kone.svg"}]},gettingStarted:{title:"Getting Started",body:"Robot Framework is open and extensible and can be integrated with virtually any other\n tool to create powerful and flexible automation solutions. Being open source also means\n that Robot Framework is free to use without licensing costs. Robot Framework has easy\n syntax, utilizing human-readable keywords. Its capabilities can be extended by libraries\n implemented with Python or Java."},community:{title:"Community",body:"Robot Framework has a vibrant community around it with various online forums, annual\n RoboCon conference, and meetup groups around the world."},resources:{title:"Resources",body:"If you want to add your library here, make a PR.",tabs:[{name:"Libraries",key:"libraries",description:"Libraries provide the actual automation and testing capabilities to\n Robot Framework by providing keywords. Several standard libraries are bundled with\n the framework, and there are separately developed external libraries galore that\n can be installed based on your needs. Creating your own libraries is a breeze."},{name:"Tools",key:"tools",description:"Supporting tools ease automation: editing, running, building and so on.\n Most of these tools are developed as separate projects, but some are built into the framework itself."},{name:"Learning",key:"learning",description:"Want to get started? Looking for a way to do things? Here are the most\n important documentation resources needed to work with Robot Framework. Notice that\n individual libraries and tools in the ecosystem have their own documentation that\n is typically accessed via their project pages."}]}}},pi=function(){return{langName:"русский",newsBanner:'🎉 RF 4.0 is out! Click here for release notes',navbar:{items:["Introduction","Getting started","Community","Resources"],dropdownName:"Links",dropdown:[{name:"Github",url:"https://github.com/robotframework/robotframework",description:"Source code + issues"},{name:"Forum",url:"http://forum.robotframework.org/",description:"Discuss Robot Framework"},{name:"Foundation",url:"https://robotframework.org/foundation/",description:"Support the development"},{name:"Robocon",url:"https://robocon.io/",description:"Annual conference"},{name:"Shop",url:"https://reddyshop.co/robotframework/",description:"Support the development"},{name:"RPA",url:"https://robotframework.org/rpa/",description:"RPA stuff"}]},introduction:{title:"Introduction",body:"Robot Framework is a generic open source automation framework.\n It can be used for test automation and robotic process automation (RPA).

\n\n Robot Framework is actively supported, with many industry-leading companies using\n it in their software development.

\n\n Robot Framework is open and extensible and can be integrated with virtually any\n other tool to create powerful and flexible automation solutions. Being open source\n also means that Robot Framework is free to use without licensing costs. Robot Framework\n has easy syntax, utilizing human-readable keywords. Its capabilities can be extended\n by libraries implemented with Python or Java. The framework has a rich ecosystem\n around it, consisting of libraries and tools that are developed as separate projects.",companies:[{name:"ABB",description:"ABB is using Robot Framework in software development for testing distribution automation related configuration tools, web interfaces and embedded devices.",imgName:"ABB.svg"},{name:"Cisco",description:"Cisco’s Customer Experience (CX) supports the testing & validation of Cisco and 3rd party solutions deployed by our customers. This includes Solution Validation Services (SVS) delivered both on Cisco-premise and customer-premise.",imgName:"Cisco.svg"},{name:"Condé Nast",description:'Condé Nast transformed their quality assurance for their brand sites, such as Brides, Wired and Architectural Digest, from an entirely manual process to automated one with Robot Framework.',imgName:"Condé_Nast.svg"},{name:"KONE",description:"KONE is widely using Robot Framework in software development for testing embedded systems in elevators and escalators.",imgName:"Kone.svg"}]},gettingStarted:{title:"Getting Started",body:"Robot Framework is open and extensible and can be integrated with virtually any other\n tool to create powerful and flexible automation solutions. Being open source also means\n that Robot Framework is free to use without licensing costs. Robot Framework has easy\n syntax, utilizing human-readable keywords. Its capabilities can be extended by libraries\n implemented with Python or Java."},community:{title:"Community",body:"Robot Framework has a vibrant community around it with various online forums, annual\n RoboCon conference, and meetup groups around the world."},resources:{title:"Resources",body:"If you want to add your library here, make a PR.",tabs:[{name:"Libraries",key:"libraries",description:"Libraries provide the actual automation and testing capabilities to\n Robot Framework by providing keywords. Several standard libraries are bundled with\n the framework, and there are separately developed external libraries galore that\n can be installed based on your needs. Creating your own libraries is a breeze."},{name:"Tools",key:"tools",description:"Supporting tools ease automation: editing, running, building and so on.\n Most of these tools are developed as separate projects, but some are built into the framework itself."},{name:"Learning",key:"learning",description:"Want to get started? Looking for a way to do things? Here are the most\n important documentation resources needed to work with Robot Framework. Notice that\n individual libraries and tools in the ecosystem have their own documentation that\n is typically accessed via their project pages."}]}}},hi=function(){return{langName:"Español",newsBanner:'🎉 RF 4.0 is out! Click here for release notes',navbar:{items:["Introduction","Getting started","Community","Resources"],dropdownName:"Links",dropdown:[{name:"Github",url:"https://github.com/robotframework/robotframework",description:"Source code + issues"},{name:"Forum",url:"http://forum.robotframework.org/",description:"Discuss Robot Framework"},{name:"Foundation",url:"https://robotframework.org/foundation/",description:"Support the development"},{name:"Robocon",url:"https://robocon.io/",description:"Annual conference"},{name:"Shop",url:"https://reddyshop.co/robotframework/",description:"Support the development"},{name:"RPA",url:"https://robotframework.org/rpa/",description:"RPA stuff"}]},introduction:{title:"Introduction",body:"Robot Framework is a generic open source automation framework.\n It can be used for test automation and robotic process automation (RPA).

\n\n Robot Framework is actively supported, with many industry-leading companies using\n it in their software development.

\n\n Robot Framework is open and extensible and can be integrated with virtually any\n other tool to create powerful and flexible automation solutions. Being open source\n also means that Robot Framework is free to use without licensing costs. Robot Framework\n has easy syntax, utilizing human-readable keywords. Its capabilities can be extended\n by libraries implemented with Python or Java. The framework has a rich ecosystem\n around it, consisting of libraries and tools that are developed as separate projects.",companies:[{name:"ABB",description:"ABB is using Robot Framework in software development for testing distribution automation related configuration tools, web interfaces and embedded devices.",imgName:"ABB.svg"},{name:"Cisco",description:"Cisco’s Customer Experience (CX) supports the testing & validation of Cisco and 3rd party solutions deployed by our customers. This includes Solution Validation Services (SVS) delivered both on Cisco-premise and customer-premise.",imgName:"Cisco.svg"},{name:"Condé Nast",description:'Condé Nast transformed their quality assurance for their brand sites, such as Brides, Wired and Architectural Digest, from an entirely manual process to automated one with Robot Framework.',imgName:"Condé_Nast.svg"},{name:"KONE",description:"KONE is widely using Robot Framework in software development for testing embedded systems in elevators and escalators.",imgName:"Kone.svg"}]},gettingStarted:{title:"Getting Started",body:"Robot Framework is open and extensible and can be integrated with virtually any other\n tool to create powerful and flexible automation solutions. Being open source also means\n that Robot Framework is free to use without licensing costs. Robot Framework has easy\n syntax, utilizing human-readable keywords. Its capabilities can be extended by libraries\n implemented with Python or Java."},community:{title:"Community",body:"Robot Framework has a vibrant community around it with various online forums, annual\n RoboCon conference, and meetup groups around the world."},resources:{title:"Resources",body:"If you want to add your library here, make a PR.",tabs:[{name:"Libraries",key:"libraries",description:"Libraries provide the actual automation and testing capabilities to\n Robot Framework by providing keywords. Several standard libraries are bundled with\n the framework, and there are separately developed external libraries galore that\n can be installed based on your needs. Creating your own libraries is a breeze."},{name:"Tools",key:"tools",description:"Supporting tools ease automation: editing, running, building and so on.\n Most of these tools are developed as separate projects, but some are built into the framework itself."},{name:"Learning",key:"learning",description:"Want to get started? Looking for a way to do things? Here are the most\n important documentation resources needed to work with Robot Framework. Notice that\n individual libraries and tools in the ecosystem have their own documentation that\n is typically accessed via their project pages."}]}}},bi=function(){return{langName:"中国人",newsBanner:'🎉 RF 4.0 is out! Click here for release notes',navbar:{items:["Introduction","Getting started","Community","Resources"],dropdownName:"Links",dropdown:[{name:"Github",url:"https://github.com/robotframework/robotframework",description:"Source code + issues"},{name:"Forum",url:"http://forum.robotframework.org/",description:"Discuss Robot Framework"},{name:"Foundation",url:"https://robotframework.org/foundation/",description:"Support the development"},{name:"Robocon",url:"https://robocon.io/",description:"Annual conference"},{name:"Shop",url:"https://reddyshop.co/robotframework/",description:"Support the development"},{name:"RPA",url:"https://robotframework.org/rpa/",description:"RPA stuff"}]},introduction:{title:"Introduction",body:"Robot Framework is a generic open source automation framework.\n It can be used for test automation and robotic process automation (RPA).

\n\n Robot Framework is actively supported, with many industry-leading companies using\n it in their software development.

\n\n Robot Framework is open and extensible and can be integrated with virtually any\n other tool to create powerful and flexible automation solutions. Being open source\n also means that Robot Framework is free to use without licensing costs. Robot Framework\n has easy syntax, utilizing human-readable keywords. Its capabilities can be extended\n by libraries implemented with Python or Java. The framework has a rich ecosystem\n around it, consisting of libraries and tools that are developed as separate projects.",companies:[{name:"ABB",description:"ABB is using Robot Framework in software development for testing distribution automation related configuration tools, web interfaces and embedded devices.",imgName:"ABB.svg"},{name:"Cisco",description:"Cisco’s Customer Experience (CX) supports the testing & validation of Cisco and 3rd party solutions deployed by our customers. This includes Solution Validation Services (SVS) delivered both on Cisco-premise and customer-premise.",imgName:"Cisco.svg"},{name:"Condé Nast",description:'Condé Nast transformed their quality assurance for their brand sites, such as Brides, Wired and Architectural Digest, from an entirely manual process to automated one with Robot Framework.',imgName:"Condé_Nast.svg"},{name:"KONE",description:"KONE is widely using Robot Framework in software development for testing embedded systems in elevators and escalators.",imgName:"Kone.svg"}]},gettingStarted:{title:"Getting Started",body:"Robot Framework is open and extensible and can be integrated with virtually any other\n tool to create powerful and flexible automation solutions. Being open source also means\n that Robot Framework is free to use without licensing costs. Robot Framework has easy\n syntax, utilizing human-readable keywords. Its capabilities can be extended by libraries\n implemented with Python or Java."},community:{title:"Community",body:"Robot Framework has a vibrant community around it with various online forums, annual\n RoboCon conference, and meetup groups around the world."},resources:{title:"Resources",body:"If you want to add your library here, make a PR.",tabs:[{name:"Libraries",key:"libraries",description:"Libraries provide the actual automation and testing capabilities to\n Robot Framework by providing keywords. Several standard libraries are bundled with\n the framework, and there are separately developed external libraries galore that\n can be installed based on your needs. Creating your own libraries is a breeze."},{name:"Tools",key:"tools",description:"Supporting tools ease automation: editing, running, building and so on.\n Most of these tools are developed as separate projects, but some are built into the framework itself."},{name:"Learning",key:"learning",description:"Want to get started? Looking for a way to do things? Here are the most\n important documentation resources needed to work with Robot Framework. Notice that\n individual libraries and tools in the ecosystem have their own documentation that\n is typically accessed via their project pages."}]}}},gi=function(){return{langName:"translation",newsBanner:"crwdns525:0crwdne525:0",navbar:{items:["crwdns527:0crwdne527:0","crwdns529:0crwdne529:0","crwdns531:0crwdne531:0","crwdns533:0crwdne533:0"],dropdownName:"crwdns535:0crwdne535:0",dropdown:[{name:"crwdns537:0crwdne537:0",url:"crwdns539:0crwdne539:0",description:"crwdns541:0crwdne541:0"},{name:"crwdns543:0crwdne543:0",url:"crwdns545:0crwdne545:0",description:"crwdns547:0crwdne547:0"},{name:"crwdns549:0crwdne549:0",url:"crwdns551:0crwdne551:0",description:"crwdns553:0crwdne553:0"},{name:"crwdns555:0crwdne555:0",url:"crwdns557:0crwdne557:0",description:"crwdns559:0crwdne559:0"},{name:"crwdns561:0crwdne561:0",url:"crwdns563:0crwdne563:0",description:"crwdns565:0crwdne565:0"},{name:"crwdns567:0crwdne567:0",url:"crwdns569:0crwdne569:0",description:"crwdns571:0crwdne571:0"}]},introduction:{title:"crwdns573:0crwdne573:0",body:"crwdns575:0crwdne575:0",companies:[{name:"crwdns577:0crwdne577:0",description:"crwdns579:0crwdne579:0",imgName:"crwdns581:0crwdne581:0"},{name:"crwdns583:0crwdne583:0",description:"crwdns585:0crwdne585:0",imgName:"crwdns587:0crwdne587:0"},{name:"crwdns589:0crwdne589:0",description:"crwdns591:0crwdne591:0",imgName:"crwdns593:0crwdne593:0"},{name:"crwdns595:0crwdne595:0",description:"crwdns597:0crwdne597:0",imgName:"crwdns599:0crwdne599:0"}]},gettingStarted:{title:"crwdns601:0crwdne601:0",body:"crwdns603:0crwdne603:0"},community:{title:"crwdns605:0crwdne605:0",body:"crwdns607:0crwdne607:0"},resources:{title:"crwdns609:0crwdne609:0",body:"crwdns611:0crwdne611:0",tabs:[{name:"crwdns613:0crwdne613:0",key:"crwdns615:0crwdne615:0",description:"crwdns617:0crwdne617:0"},{name:"crwdns619:0crwdne619:0",key:"crwdns621:0crwdne621:0",description:"crwdns623:0crwdne623:0"},{name:"crwdns625:0crwdne625:0",key:"crwdns627:0crwdne627:0",description:"crwdns629:0crwdne629:0"}]}}},_i=function(){return[{name:"Builtin",href:"https://robotframework.org/robotframework/latest/libraries/BuiltIn.html",description:"Provides a set of often needed generic keywords. Always automatically available without imports.",tags:["library"]},{name:"Collections",href:"https://robotframework.org/robotframework/latest/libraries/Collections.html",description:"Provides a set of keywords for handling Python lists and dictionaries.",tags:["library"]},{name:"DateTime",href:"https://robotframework.org/robotframework/latest/libraries/DateTime.html",description:"Library for date and time conversions.",tags:["library"]},{name:"Dialogs",href:"https://robotframework.org/robotframework/latest/libraries/Dialogs.html",description:"Provides means for pausing the execution and getting input from users.",tags:["library"]},{name:"OperatingSystem",href:"https://robotframework.org/robotframework/latest/libraries/OperatingSystem.html",description:"Enables various operating system related tasks to be performed in the system where Robot Framework is running.",tags:["library"]},{name:"Process",href:"https://robotframework.org/robotframework/latest/libraries/Process.html",description:"Library for running processes in the system.",tags:["library"]},{name:"Remote",href:"https://github.com/robotframework/RemoteInterface",description:"Special library acting as a proxy between Robot Framework and libraries elsewhere. Actual libraries can be running on different machines and be implemented using any programming language supporting XML-RPC protocol.",tags:["library"]},{name:"Screenshot",href:"https://robotframework.org/robotframework/latest/libraries/Screenshot.html",description:"Provides keywords to capture screenshots of the desktop.",tags:["library"]},{name:"String",href:"https://robotframework.org/robotframework/latest/libraries/String.html",description:"Library for generating, modifying and verifying strings.",tags:["library"]},{name:"Telnet",href:"https://robotframework.org/robotframework/latest/libraries/Telnet.html",description:"Makes it possible to connect to Telnet servers and execute commands on the opened connections.",tags:["library"]},{name:"XML",href:"https://robotframework.org/robotframework/latest/libraries/XML.html",description:"Library for generating, modifying and verifying XML files.",tags:["library"]},{name:"Rebot",description:"Generate logs and reports based on XML outputs and for combining multiple outputs together.",href:"https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#post-processing-outputs",tags:["tool"]},{name:"Libdoc",description:"Generate keyword documentation for test libraries and resource files.",href:"https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#libdoc",tags:["tool"]},{name:"Testdoc",description:"Generate high level HTML documentation based on Robot Framework test cases.",href:"https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#testdoc",tags:["tool"]},{name:"Tidy",description:"Cleaning up and changing format of Robot Framework test data files.",href:"https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#tidy",tags:["tool"]}]},fi=function(){return[{name:"AppiumLibrary",href:"https://github.com/serhatbolsu/robotframework-appiumlibrary",description:"Android and iOS testing. Uses Appium internally.",tags:["mobile"]},{name:"ArchiveLibrary",href:"https://github.com/MarketSquare/robotframework-archivelibrary",description:"Handling zip- and tar-archives.",tags:["zip"]},{name:"AutoItLibrary",href:"https://github.com/nokia/robotframework-autoitlibrary",description:"Windows GUI testing library that uses AutoIt freeware tool as a driver.",tags:["windows","ui"]},{name:"AutoRecorder",href:"https://github.com/sebastianciupinski/robotframework-autorecorder#readme",description:"Allows automatically recording video for test/suites execution.",tags:["visual"]},{name:"Browser Library",href:"https://github.com/MarketSquare/robotframework-browser",description:'A modern web testing library powered by Playwright. Aiming for speed, reliability and visibility.',tags:["web"]},{name:"CncLibrary",href:"https://github.com/eficode/robotframework-cnclibrary",description:"Driving a CNC milling machine.",tags:["rpa"]},{name:"ConfluentKafkaLibrary",href:"https://github.com/robooo/robotframework-ConfluentKafkaLibrary",description:"Python confluent kafka."},{name:"CURFLibrary",href:"https://github.com/Openwide-Ingenierie/robotframework-can-uds-library",description:"Testing CAN bus with support for ISO-TP and UDS."},{name:"Database Library (Java)",href:"https://github.com/MarketSquare/robotframework-dblibrary",description:'Java-based library for database testing. Usable with Jython. Available also at Maven central.',tags:["java"]},{name:"Database Library (Python)",href:"https://github.com/MarketSquare/Robotframework-Database-Library",description:"Python based library for database testing. Works with any Python interpreter, including Jython.",tags:["db"]},{name:"DataDriver Library",href:"https://github.com/Snooz82/robotframework-datadriver",description:"Data-Driven Testing with external 📤 data tables (csv, xls, xlsx, etc.). 🧬 Pairwise Combinatorial Testing support.",tags:["db"]},{name:"Debug Library",href:"https://github.com/xyb/robotframework-debuglibrary",description:"A debug library for RobotFramework, which can be used as an interactive shell(REPL) also."},{name:"Dependency Library",href:"https://github.com/mentalisttraceur/robotframework-dependencylibrary",description:"Declare dependencies between tests. Ideally tests are independent, but when tests depend on earlier tests, DependencyLibrary makes it easy to explicitly declare these dependencies and have tests that depend on each other do the right thing."},{name:"Diff Library",href:"https://github.com/MarketSquare/robotframework-difflibrary",description:"Diff two files together."},{name:"Django Library",href:"https://github.com/kitconcept/robotframework-djangolibrary",description:'Library for Django, a Python web framework.',tags:["django"]},{name:"DocTest Library",href:"https://github.com/manykarim/robotframework-doctestlibrary",description:"Library for Document Testing, offers visual/content comparisons and masks for images, PDFs and more.",tags:["pdf","visual"]},{name:"DoesIsLibrary",href:"https://github.com/sebastianciupinski/robotframework-doesislibrary#readme",description:"Autogenerated keywords like Is Something, Does Someting created form assertion keywords like Should Be, Should Not Be, etc"},{name:"Eclipse Library",href:"https://github.com/lcarbonn/robotframework-eclipselibrary/",description:"Testing Eclipse RCP applications using SWT widgets."},{name:"FTP library",href:"https://github.com/kowalpy/Robot-Framework-FTP-Library",description:"Testing and using FTP server with Robot Framework.",tags:["ftp"]},{name:"HTTP RequestsLibrary (Python)",href:"https://github.com/MarketSquare/robotframework-requests#readme",description:"HTTP level testing using Python Requests internally.",tags:["http"]},{name:"HttpRequestLibrary (Java)",href:"https://github.com/MarketSquare/robotframework-httprequestlibrary",description:'HTTP level testing using Apache HTTP client. Available also at Maven central.',tags:["http","java"]},{name:"ImageHorizonLibrary",href:"https://github.com/eficode/robotframework-imagehorizonlibrary#readme",description:"Cross-platform, pure Python library for GUI automation based on image recognition.",tags:["ui","visual"]},{name:"JavaFXLibrary",href:"https://github.com/eficode/JavaFXLibrary#readme",description:'Testing JavaFX applications, based on TestFX. Has also remote interface support.',tags:["java"]},{name:"KiCadLibrary",href:"https://github.com/madworx/robotframework-kicadlibrary#readme",description:"Interacting with KiCad EDA designs."},{name:"ListenerLibrary",href:"https://github.com/sebastianciupinski/robotframework-listenerlibrary#readme",description:"Register keywords to run before/after other keywords and suites."},{name:"Mainframe3270 Library",href:"https://github.com/Altran-PT-GDC/Robot-Framework-Mainframe-3270-Library/blob/master/README.md",description:"Allows the creation of automated test scripts to test IBM Mainframe 3270.",tags:["ibm"]},{name:"MQTT library",href:"https://github.com/randomsync/robotframework-mqttlibrary#readme",description:"Testing MQTT brokers and applications.",tags:["iot"]},{name:"PuppeteerLibrary",href:"https://github.com/qahive/robotframework-puppeteer",description:"Web testing using Puppeteer tool internally.",tags:["web","ui"]},{name:"Qweb",href:"https://github.com/qentinelqi/qweb",description:"A modern web testing library focusing on making web testing and automation Easy 🎉 and maintainable 🧹 with its high level keyword design.",tags:["web","ui"]},{name:"Rammbock",href:"https://github.com/robotframework/Rammbock#readme",description:"Generic network protocol test library that offers easy way to specify network packets and inspect the results of sent and received packets.",tags:["http"]},{name:"RemoteSwingLibrary",href:"https://github.com/robotframework/remoteswinglibrary",description:"Testing and connecting to a java process and using SwingLibrary, especially Java Web Start applications.",tags:["java"]},{name:"RESTinstance",href:"https://github.com/asyrjasalo/RESTinstance/",description:"Test library for HTTP JSON APIs.",tags:["http"]},{name:"Robotframework-faker",href:"https://github.com/guykisel/robotframework-faker",description:'Library for Faker, a fake test data generator.'},{name:"Robotframework-FlaUI",href:"https://github.com/GDATASoftwareAG/robotframework-flaui",description:"Robotframework-FlaUI is a keyword based user interface automation testing library for Windows applications like Win32, WinForms, WPF or Store Apps. It's based on the FlaUI user interface automation library.",tags:["windows","ui"]},{name:"RPA framework",href:"https://github.com/robocorp/rpaframework",description:"Collection of open-source libraries and tools for Robotic Process Automation (RPA), designed to be used both with Robot Framework and Python.",tags:["rpa"]},{name:"SapGuiLibrary",href:"https://github.com/frankvanderkuur/robotframework-sapguilibrary/",description:"Testing the SAPGUI client using the internal SAP Scripting Engine",tags:["ui","sap"]},{name:"ScreenCapLibrary",href:"https://github.com/rticau/ScreenCapLibrary",description:"Taking screenshots and video recording. Similar functionality as Screenshot standard library, with some additional features.",tags:["ui"]},{name:"SeleniumScreenshots",href:"https://github.com/MarketSquare/robotframework-seleniumscreenshots",description:"Annotating and cropping screenshots taken with SeleniumLibrary.",tags:["ui","selenium"]},{name:"SeleniumLibrary",href:"https://github.com/robotframework/SeleniumLibrary/",description:"Web testing library that uses popular Selenium tool internally.",tags:["web","selenium"]},{name:"SeleniumLibrary for Java",href:"https://github.com/MarketSquare/robotframework-seleniumlibrary-java#readme",description:"Java port of the SeleniumLibrary.",tags:["java","selenium"]},{name:"SikuliLibrary",href:"https://github.com/rainmanwy/robotframework-SikuliLibrary#readme",description:'Provides keywords to test UI through Sikulix. This library supports Python 2.x and 3.x.',tags:["ui"]},{name:"SoapLibrary",href:"https://github.com/Altran-PT-GDC/Robot-Framework-SOAP-Library",description:"Designed for those who want to work with webservice automation as if they were using SoapUI, make a request through an XML file, and receive the response in another XML file.",tags:["http"]},{name:"SSHLibrary",href:"https://github.com/robotframework/SSHLibrary",description:"Enables executing commands on remote machines over an SSH connection. Also supports transfering files using SFTP.",tags:["ftp","ssh"]},{name:"SwingLibrary",href:"https://github.com/robotframework/SwingLibrary/wiki",description:"Testing Java applications with Swing GUI.",tags:["java","ui"]},{name:"TestFX Library",href:"https://github.com/Altran-PT-GDC/Robot-Framework-Test-FX-Library",description:'Enables testing Java FX applications using the TestFX framework. Has also remote interface support. Maintained Fork...',tags:["java"]},{name:"TFTPLibrary",href:"https://github.com/kowalpy/Robot-Framework-TFTP-Library",description:'Interact over Trivial File Transfer Portocol.',tags:["ftp"]},{name:"WADLibrary",href:"https://github.com/Adwisit/WADLibrary",description:"Application testing library that utilizes Win App Driver.",tags:["windows"]},{name:"Zoomba Library",href:"https://github.com/Accruent/robotframework-zoomba",description:"Extends features in many popular tools for GUI, Rest API, Soap API, Mobile, and Windows (WinAppDriver) automation. An ideal all-in-one toolkit for new or existing Robot Framework projects.",tags:["ui","http"]},{name:"Python Library Core",href:"https://github.com/robotframework/PythonLibCore",description:"Tools to ease creating larger test libraries for Robot Framework using Python.",tags:["tools"]},{name:"JavalibCore",href:"https://github.com/robotframework/JavalibCore/wiki",description:"Base for implementing larger Java based test libraries for Robot Framework.",tags:["java"]},{name:"RemoteApplications",href:"https://github.com/robotframework/RemoteApplications",description:"Special test library for launching Java applications on a separate JVM and taking other libraries into use on them.",tags:["java"]},{name:"Plone.app .robotframework",href:"https://github.com/plone/plone.app.robotframework/",description:"Provides resources and tools for writing functional Selenium tests for Plone CMS and its add-ons.",tags:["selenium"]},{name:"WatchUI",href:"https://github.com/Tesena-smart-testing/WatchUI",description:"Visual testing library for visual difference testing as well as image content testing (including PDF documents). Runs on Selenium to generate screenshots, uses PyMuPDF to process PDFs and Tesseract OCR to recognize text.",tags:["ui"]}]},wi=function(){return[{name:"RIDE",description:"Standalone Robot Framework test data editor.",href:"https://github.com/robotframework/RIDE/wiki",tags:["editor"]},{name:"Atom plugin",description:"Robot Framework plugin for Atom.",href:"https://github.com/wingyplus/language-robot-framework",tags:["editor"]},{name:"Brackets plugin",description:"Robot Framework plugin for Brackets.",href:"https://github.com/boakley/brackets-robotframework/wiki",tags:["editor"]},{name:"Eclipse plugin",description:"Robot Framework plugin for Eclipse IDE.",href:"https://github.com/NitorCreations/RobotFramework-EclipseIDE/wiki",tags:["editor"]},{name:"RobotCode",description:"RobotFramework support for Visual Studio Code, including features like code completion, navigation, refactoring, usage analysis, debugging, test explorer, test execution and more!",href:"https://github.com/d-biehl/robotcode",tags:["editor","vscode"]},{name:"Emacs major mode",description:"Emacs major mode for editing tests.",href:"https://github.com/sakari/robot-mode",tags:["editor"]},{name:"Gedit",description:"Syntax highlighting for Gedit.",href:"https://github.com/vkosuri/gedit-robot",tags:["editor"]},{name:"Robot Plugin for IntelliJ IDEA",description:"For IntelliJ IDEA-based editors by JIVE Software.",href:"https://plugins.jetbrains.com/plugin/7430",tags:["editor"]},{name:"Robot Support for IntelliJ IDEA",description:"For IntelliJ IDEA-based editors by Valerio Angelini.",href:"https://plugins.jetbrains.com/plugin/7415",tags:["editor"]},{name:"Notepad++",description:"Syntax highlighting for Notepad++.",href:"https://github.com/vkosuri/npp-robot",tags:["editor"]},{name:"RED",description:"Eclipse based editor with a debugger by Nokia.",href:"https://github.com/nokia/RED",tags:["editor"]},{name:"Language Server for VS Code",description:"VS Code LSP extension - syntax highlight, linting, code completion, debugging, and more",href:"https://marketplace.visualstudio.com/items?itemName=robocorptech.robotframework-lsp",tags:["editor"]},{name:"Language Server for PyCharm",description:"PyCharm LSP plugin - syntax highlight, code completion, and other LSP features for PyCharm.",href:"https://plugins.jetbrains.com/plugin/16086-robot-framework-language-server",tags:["editor"]},{name:"Sublime assistant",description:"A plugin for Sublime Text 2 & 3 by Andriy Hrytskiv.",href:"https://github.com/andriyko/sublime-robot-framework-assistant",tags:["editor"]},{name:"Sublime plugin",description:"A plugin for Sublime Text 2 by Mike Gershunovsky.",href:"https://github.com/shellderp/sublime-robot-plugin",tags:["editor"]},{name:"Vim plugin",description:"Vim plugin for development with Robot Framework.",href:"https://github.com/mfukar/robotframework-vim",tags:["editor"]},{name:"Intellisense for Visual Studio Code",description:"A Visual Studio Code extension that supports Robot Framework development.",href:"https://marketplace.visualstudio.com/items?itemName=TomiTurtiainen.rf-intellisense",tags:["editor"]},{name:"Debugger for Visual Studio Code",description:"A Visual Studio Code extension that lets you debug robot files with call stack, breakpoints, etc.",href:"https://marketplace.visualstudio.com/items?itemName=JacobPhilip.danfoss-robotframework-debug",tags:["editor"]},{name:"Jenkins plugin",description:"Plugin to collect and publish Robot Framework execution results in Jenkins.",href:"https://github.com/jenkinsci/robot-plugin",tags:["build"]},{name:"Maven plugin",description:"Maven plugin for using Robot Framework.",href:"https://github.com/robotframework/MavenPlugin",tags:["build"]},{name:"Ant task",description:"Ant task for running Robot Framework tests.",href:"https://github.com/lcarbonn/robotframework-ant",tags:["build"]},{name:"DbBot",description:"Tool for serializing Robot Framework execution results, i.e. output.xml files, into an SQLite database. It serves a good starting point to create your own reporting and analyzing tools.",href:"https://github.com/robotframework/DbBot",tags:[""]},{name:"Distbot",description:"A bot for self distribution of Robot Framework tests into multiple machines/docker and execute in parallel (without need of master node).",href:"https://github.com/rajeevnaikte/distbot",tags:[""]},{name:"Fixml",description:"Tool for fixing Robot Framework output files that are broken.",href:"https://bitbucket.org/robotframework/fixml",tags:[""]},{name:"Mabot",description:"Tool for reporting manual tests in format compatible with Robot Framework outputs.",href:"https://github.com/robotframework/mabot/",tags:[""]},{name:"Oxygen",description:"Tool for consolidating other test tools' reporting to Robot Framework outputs.",href:"https://github.com/eficode/robotframework-oxygen",tags:[""]},{name:"Pabot",description:"A parallel executor for Robot Framework tests and tasks.",href:"https://github.com/mkorpela/pabot",tags:[""]},{name:"RCC",description:"Share your Robot projects with ease. RCC allows you to create, manage, and distribute Python-based self-contained automation packages.",href:"https://github.com/robocorp/rcc",tags:[""]},{name:"RFDoc",description:"Web based system for storing and searching Robot Framework library and resource file documentations.",href:"https://github.com/robotframework/rfdoc",tags:[""]},{name:"rfswarm",description:"Testing tool that allows you to use Robot Framework test cases for performance or load testing.",href:"https://github.com/damies13/rfswarm",tags:[""]},{name:"Robot Corder",description:"Robot Corder generates Robot Framework test script by recording user interactions and scanning the html page in your Chrome browser. It aims to be equivalent of Selenium IDE for RobotFramework browser test automation.",href:"https://github.com/sohwendy/Robotcorder",tags:[""]},{name:"Robot Framework Hub",description:"Lightweight web server that provides access to the Robot Framework test assets via browser.",href:"https://github.com/boakley/robotframework-hub/wiki",tags:[""]},{name:"Robot Framework Lexer",description:"Robot Framework syntax highlighting with Pygments. Link is to the lexer project itself, but the lexer is part of Pygments from version 1.6 onwards.",href:"https://bitbucket.org/robotframework/pygmentslexer",tags:["editor"]},{name:"Robot Tools",description:"Collection of supporting tools that can be used with Robot Framework.",href:"https://bitbucket.org/robotframework/robottools",tags:[""]},{name:"Robocop linter",description:"Static code analysis tool for Robot Framework with use of latest robot API and many built-in rules that can be easily configured or switched off.",href:"https://github.com/MarketSquare/robotframework-robocop",tags:[""]},{name:"RobotMK",description:'RobotMK integrates results of Robot tests into the monitoring system Checkmk. Makes it possible to send alerts if any keyword/test/suite runtime exceeds the allowed runtime or fails. Performance graphs and SLA reports. Web based configuration of Robot parameters. Automatic client deployment rule system ("bakery").',href:"https://github.com/elabit/robotmk/",tags:[""]},{name:"SAGE Framework",description:"Multi-agent based extension to Robot Framework. Agent based systems make it possible to test distributed systems such as Service Oriented Architecture systems. SAGE Provides a library of Robot Framework keywords for creating and managing SAGE agent networks as well as collecting and reporting results from remote agents.",href:"https://www.nrl.navy.mil/itd/imda/products/sage",tags:[""]},{name:"StatusChecker",description:"A tool for validation that executed Robot Framework test cases have expected statuses and log messages. Mainly targeted for test library developers.",href:"https://github.com/robotframework/statuschecker/",tags:[""]},{name:"Test Assistant",description:"Control test processes and RPA tasks with your voice or with a text message sent directly to the assistant through leon-ai's UI..",href:"https://github.com/jg8481/leon/tree/develop/packages/robotframework-test-assistant",tags:[""]},{name:"TestDataTable",description:"Enables you to assign test data variable values from a single set of data to multiple scripts while allowing you to ensure each script has a unique data value.",href:"https://github.com/damies13/TestDataTable",tags:[""]},{name:"Tesults Listener",description:"A listener that provides a codeless integration experience for test results reporting from Robot Framework into Tesults.",href:"https://www.tesults.com/docs?doc=robot",tags:[""]},{name:"Xray Test Management",description:"Test management app for Jira that provides the ability to track coverage based on traditional manual test cases, exploratory testing and automation-related results. For automation, users can track detailed results from test scripts implemented with Robot Framework and link them to the respective requirements.",href:"https://www.getxray.app/",tags:[""]}]},yi=function(){return[{name:"Robot Framework Docs",description:"Learn with guides and examples that cover Robot Framework all the way from installation to advanced usage.",href:"https://docs.robotframework.org/"},{name:"User Guide",description:"Reference manual explaining all Robot Framework features in detail.",href:"https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html"},{name:"Public API",description:"Public API for writing your own tools against Robot Framework.",href:"https://robot-framework.readthedocs.org/en/latest/"},{name:"How to write good test cases",description:"Guidelines for writing good test cases using Robot Framework.",href:"https://github.com/robotframework/HowToWriteGoodTestCases/blob/master/HowToWriteGoodTestCases.rst"},{name:"Dos And Don'ts",description:"Slide set loosely based on 'How to write good test cases' guidelines.",href:"https://www.slideshare.net/pekkaklarck/robot-framework-dos-and-donts"},{name:"Introduction Slides",description:"Generic Robot Framework introduction slides.",href:"https://www.slideshare.net/pekkaklarck/robot-framework-introduction"},{name:"RPA tutorials",description:"Robocorp RPA tutorials, courses, and guidelines",href:"https://robocorp.com/docs/courses"},{name:"Robot Framework katas",description:"Series of exercises and examples how to get started with test automation. No prior knowledge of test automation required.",href:"https://github.com/eficode-academy/rf-katas"},{name:"Web Demo",description:"Demonstrates how to create tests and higher level keywords. The system under test is a simple web page that is tested using SeleniumLibrary.",href:"https://github.com/robotframework/WebDemo"},{name:"Robot Demo",description:"Demonstrates how to create tests and test libraries. The system under test is a simple calculator that is tested using a custom library.",href:"https://github.com/robotframework/RobotDemo"},{name:"Demo: ATDD with Robot Framework",description:"How to use Robot Framework for Acceptance Test Driven Development (ATDD) a.k.a. Specification by Example.",href:"https://code.google.com/p/atdd-with-robot-framework/"},{name:"Demo: Using C with Robot Framework",description:"This simple example demonstrates how to use C language from Robot Framework test libraries.",href:"https://bitbucket.org/robotframework/cdemo"},{name:"Demo: Robot Framework RPA example projects",description:"A library of sample RPA projects and code snippets built on Robot Framework",href:"https://robocorp.com/portal/"},{name:"Demo: Remote interface",description:'Example demonstrates how to use Robot Framework\'s Remote interface to call test libraries written in any programming language.',href:"https://github.com/jg8481/robotframework-scala-remote-library"}]},ki=function(){return[{title:"ABB",href:"https://www.abb.com",imgName:"abb.png",text:"ABB is using Robot Framework in software development for testing distribution\n automation related configuration tools, web interfaces and embedded devices."},{title:"Accruent",href:"https://www.accruent.com/",imgName:"accruent.png",text:'Accruent has been using Robot Framework since 2015 to drive API, GUI, mobile,\n and desktop automation testing throughout the company. Accruent has since made its\n Zoomba\n library open source to help other teams make the move to Robot Framework.'},{title:"Adwisit",href:"https://www.adwisit.se",imgName:"adwisit.png",text:"Adwisit uses Robot Framework to automate end-to-end testing of business processes\n for customers with a complex structure of third-party products, handling both web and desktop applications."},{title:"Alfastrahovanie",href:"https://www.alfastrah.ru/",imgName:"alfastrahovanie.png",text:"Alfastrahovanie is using Robot Framework as a main regression testing tool for\n SAP FS CM system. Alfastrahovanie is in the beginning of ATDD path and Robot Framework\n is the main vehicle there as well."},{title:"Alpha",href:"https://www.alpha.company/",imgName:"alpha.png",text:"At Alpha, we are developing the future of mobile apps for Health, with the latest\n advances in neuroscience, AI and mobile computing. Robot Framework is a key part of our\n Health Moonshot development process to help us automatize testing and guarantee the best quality."},{title:"Altran",href:"https://www.altran.com/",imgName:"altran.png",text:"Altran is a world leader in engineering solutions and R&D, and is using extensively\n RobotFramework mainly in it's Global Engineering Centers. Altran is also an active contributor\n for the RobotFramework community and is the main developer of several RobotFramework libraries."},{title:"Axon",href:"https://www.axon.tv",imgName:"axon.png",text:"Axon is using Robot Framework in testing embedded software and hardware development\n of broadcast equipment. We automate testing as much as possible in order to speed up development\n while guarantee quality. Robot Framework is the perfect tool for this job."},{title:"CENX",href:"https://www.cenx.com",imgName:"cenx.png",text:"CENX is using Robot Framework, within a Docker environment, for feature and integration\n testing of a product that empowers network- and service operation centers."},{title:"Charter Communications",href:"https://www.spectrum.com/",imgName:"spectrum.png",text:"Charter uses Robot Framework for automating feature and protocol testing on network\n devices like routers and firewalls for device certification, QA and network monitoring."},{title:"Cisco",href:"https://www.cisco.com/",imgName:"cisco.jpg",text:"Cisco’s Customer Experience (CX) supports the testing & validation of Cisco and\n 3rd party solutions deployed by our customers. This includes Solution Validation Services\n (SVS) delivered both on Cisco-premise and customer-premise as part of a NetDevOps (CI/CD)\n process where continuous validation accelerates technology adoption, de-risks IT deployments,\n changes and upgrades, and ensures complex migrations are transparent."},{title:"Conde Nast",href:"https://technology.condenast.com/",imgName:"condenast.png",text:'Condé Nast transformed their quality assurance for their brand sites, such as\n Brides, Wired and Architectural Digest, from an entirely manual process to automated one with Robot Framework.'},{title:"FICOSA",href:"https://www.ficosa.com",imgName:"ficosa.png",text:'FICOSA has been using Robot Framework for the last years in the automotive industry.\n It\'s being used for the automated testing of\n \n embedded software for in-vehicle telematic units with very good results. We have\n implemented several Robot Framework libraries to control complex hardware environments in an scalable way.'},{title:"Finnair",href:"https://www.finnair.com",imgName:"finnair.png",text:"Finnair is using Robot Framework to support Finnair digital platform development."},{title:"Finnish Tax Administration",href:"https://www.vero.fi/en/individuals/",imgName:"vero.png",text:"Finnish Tax Administration is using Robot Framework in multiple projects.\n Robot Framework is one of the core tools in their development to make Quality Assurance and Automation."},{title:"Flipdish",href:"https://www.flipdish.com/",imgName:"flipdish.png",text:"Flipdish are using Robot Framework for web, mobile and api, to enable us to test\n and release multiple white label products used for online ordering platforms across the globe."},{title:"HeyMath",href:"https://plp.heymath.com/",imgName:"heymath.png",text:"HeyMath! is a comprehensive E-learning program with world-class creative digital content.\n We use Robot Framework for end-to-end automation testing for our Products and ensuring the\n quality before delivering to the end users."},{title:"Juniper Networks",href:"https://www.juniper.net/",imgName:"juniper.png",text:"Juniper Networks has built an extensive automation framework on top of Robot Framework\n for end-to-end qualification of Juniper products to maintain our commitment to quality for our\n customers and users. It is used extensively in multiple groups including engineering and\n support amongst others. We have also worked with third-party test tool vendors to provide\n Robot Framework friendly APIs to integrate with our framework."},{title:"Kistler",href:"https://www.kistler.com",imgName:"kistler.svg",text:'Kistler is using the Robot Framework for automated system tests of backend and frontend\n applications for various, very accurate and highly precise\n measurement systems.'},{title:"KONE",href:"https://www.kone.com",imgName:"kone.png",text:"KONE is widely using Robot Framework in software development for testing embedded\n systems in elevators and escalators."},{title:"Lucid Software",href:"https://www.kovidndt.com/",imgName:"lucid.png",text:"Lucid Software is using Robot Framework for complete system automation testing of\n its NDT software products. Necessary unique libraries are created to test the applications\n in both Windows and WPF formats."},{title:"Metso",href:"https://www.metso.com",imgName:"metso.png",text:'Metso has had good results using Robot Framework in various domains. This includes\n testing embedded software in valve positioners and\n web testing of their Manufacturing\n Resource Planning system.'},{title:"Mews",href:"https://www.mews.com",imgName:"mews.png",text:"Mews builds modern hospitality software. Mews uses Robot Framework\n as part of CI/CD process to ensure system reliability and reduce manual testing efforts\n across multiple products in both browser and desktop apps."},{title:"Nokia",href:"https://www.nokia.com",imgName:"nokia.png",text:"Robot Framework was initially developed at Nokia Networks and it is used extensively\n around the whole company. It is used for testing different devices, software systems and\n protocols via GUIs, APIs and various other interfaces."},{title:"NRL",href:"https://www.nrl.navy.mil",imgName:"nrl.png",text:'The Naval Research Laboratory extends Robot Framework to provide a seamless integration\n with the SAGE\n multi-agent system. This integration enables Robot Framework to drive distributed simulation\n and monitoring for test automation of SOA systems.'},{title:"OpenDaylight",href:"https://www.opendaylight.org",imgName:"opendaylight.png",text:'OpenDaylight is a software-defined network (SDN) platform that uses Robot Framework\n for unit- and integration tests between different services. If you are interested how,\n check the wiki.'},{title:"Opuscapita",href:"https://www.opuscapita.com/",imgName:"opuscapita.png",text:"OpusCapita is using Robot Framework in software development for regression testing\n automation of web applications, API and internal software components."},{title:"Oriental Pearl New Media Co, Ltd",href:"https://www.opg.cn/",imgName:"oriental.png",text:"Oriental Pearl New Media Co, Ltd is using Robot Framework for API and UI testing."},{title:"QA Hive",href:"https://www.qahive.com",imgName:"qahive.png",text:"QA Hive is using Robot Framework for automation tests and automation tasks\n for reduce overall manual process and improve system reliability."},{title:"Rocla",href:"https://rocla.com/",imgName:"rocla.png",text:"Rocla is using Robot Framework widely in development and testing of the\n software for Trucks and Automated Guided Vehicles (AGV’s)."},{title:"Toronto Metropolitan University",href:"https://www.torontomu.ca/",imgName:"tmu_logo.png",text:"Toronto Metropolitan University uses Robot Framework to conduct desktop and mobile\n browser testing for its suite of applications that serve both students and staff."},{title:"Salicru",href:"https://www.salicru.com",imgName:"salicru.png",text:'Salicru has been using Robot Framework in testing embedded software and hardware\n development of power electronic equipment since 2011. We use Robot Framework along with\n our proprietary embedded software architecture\n Odyssey\n to assure the quality of our products and it has become one of the most important tools for us.'},{title:"Segron",href:"https://www.segron.com/",imgName:"segron.png",text:"Segron is a Bratislava-based company offering beyond end-to-end testing solution\n for Telecommunications. Our tool is based on Robot Framework and is the first true end-to-end\n solution for testing multiple interfaces and technologies with a single tool."},{title:"Smart Synergies",href:"https://www.smart-synergies.eu/",imgName:"smartsynergies.png",text:'Smart Synergies promotes Robotframework as the "Swiss Army Knife" of Software testing tools in the wide and open seas of commercial \n and open-source software testing tools and applies it since 2014 with great success to its customer\'s test automation projects. Smart Synergies delivers end-2-end test automation services from building pilots demoing Robotframeworks powers to making it part of the continuous integration pipeline, from creating test automation strategies to designing and implementing test scenarios and cases.'},{title:"Testmo",href:"https://www.testmo.com/",imgName:"testmo.png",text:"Testmo is a test management tool for modern software teams. The Testmo team uses\n Robot Framework for acceptance testing and to support its customers' QA."},{title:"Tesena",href:"https://www.tesena.com/",imgName:"tesena.png",text:"Testing is not just something we do. It is everything we do.\n We help companies reveal bugs in their software and save costs thanks to our know-how.\n We are leaders in the testing community, providing training courses, events and inspiration in the field of software testing."},{title:"TMA Solutions",href:"https://www.tmasolutions.com",imgName:"TMAlogo.png",text:"TMA Solutions is using Robot Framework to automate not only single product but also\n complex interoperability testing, involving API, desktop, mobile, web, network devices and\n special hardware. With this framework, we can easily expand testing scopes, improve automation\n run speed while still keeping high reliability."},{title:"Zilogic",href:"https://www.zilogic.com",imgName:"zilogic.png",text:"Zilogic Systems is using Robot Framework for integration testing of embedded products.\n We convert requirements into test cases,write necessary libraries to test the Device Under Test."},{title:"Zymr Inc",href:"https://www.zymr.com",imgName:"zymr.png",text:"Zymr has deep expertise in the Robot Framework and using it extensively for automating\n the test cases for the clients in various industries. It has been used within Docker and other containers."},{title:"Medical Billing Wholesalers",href:"https://www.medicalbillingwholesalers.com/",imgName:"medical_billing.png",text:"Consumed by our purpose of being the most agile healthcare services company in the world,\n we have created a strong delivery model combining the knowledge of our people with market-leading\n technologies to deliver great revenue cycle outcomes to our customers."}]},vi=function(){return[{title:"ABB",href:"https://new.abb.com/",img:"abb.png",description:"ABB is a leading global technology company that energizes the transformation of society and industry to achieve a more productive, sustainable future. ABB employs about 5000 people in Finland. We use Robot Framework for hardware and software testing of multiple product lines, including variable frequency drives and power distribution automation."},{title:"Aktia",href:"https://www.aktia.fi/",img:"aktia.png",description:"Aktia is a Finnish asset manager, bank and life insurer that has been creating wealth and well-being from one generation to the next already for 200 years. We serve our customers through digital channels everywhere and face-to-face in our offices in the Helsinki region as well as in Oulu, Tampere, Turku and Vaasa regions. Funds in our awarded asset management are sold also internationally to institutional clients. We employ approximately 800 people around Finland. In Aktia Robot Framework is used for test automation to guarantee the quality we deliver to our customers."},{title:"ams OSRAM",href:"https://ams-osram.com/",img:"ams_osram.png",description:"ams OSRAM is using Robot Framework to automate post silicon verification tasks of our light sensors and IC products."},{title:"Arvanto",href:"https://www.arvato-systems.com/",img:"arvanto.png",description:"Global IT specialist Arvato Systems supports major companies in Digital Transformation. About 3,100 staff in over 25 locations stand for in-depth technology expertise, industry knowledge, and focus on customer requirements. Working as a team, we develop innovative IT solutions, transition our clients into the Cloud, integrate digital processes, and take on IT systems operation and support. As a part of the Bertelsmann-owned Arvato network, we have the unique capability to work across the entire value chain. Through our strong strategic partner network with global top players such as AWS, Google, Microsoft, and SAP, we continuously strengthen our know-how and leverage the most advanced technology. We Empower Digital Leaders."},{title:"Botlabs",href:"https://botlabs.fi/en/home/",img:"botlabs.png",description:"Botlabs provides your company with modern software robotics and digitalization services. We want to humanize people’s work by outsourcing difficult and tedious tasks to robots, giving people time to do what they do best, which is to make decisions and communicate."},{title:"Capgemini",href:"https://www.capgemini.com",img:"capgemini.png",description:"Capgemini Netherlands is at the forefront of innovation to address the entire breadth of clients’ opportunities in the evolving world of cloud, digital and platforms. Building on its strong 50-year heritage and deep industry-specific expertise, Capgemini enables organizations to realize their business ambitions through an array of services from strategy to operations."},{title:"cgi",href:"https://www.cgi.com/en/intelligence-automation",img:"cgi.png",description:"Founded in 1976, CGI is among the largest IT and business consulting services firms in the world. We are insights-driven and outcomes-based to help accelerate returns on your investments. CGI is privileged to work with clients around the world to use technology to support the vital workings of society and create a better future for all."},{title:"checkmk",href:"https://checkmk.com/",img:"checkmk.png",description:"Checkmk is one of the leading tools for service monitoring of IT infrastructure. Developed in Python and C++, the software is used worldwide to monitor servers, networks, applications, public clouds, containers, storage, databases and environmental sensors. With Synthetic Monitoring based on Robotmk, Checkmk administrators can keep an eye on the availability, performance and functionality of their business-critical applications."},{title:"cisco",href:"https://www.cisco.com/",img:"cisco.png",description:"Cisco’s Customer Experience (CX) supports the testing & validation of Cisco and 3rd party solutions deployed by our customers. This includes Solution Validation Services (SVS) delivered both on Cisco-premise and customer-premise as part of a NetDevOps (CI/CD) process where continuous validation accelerates technology adoption, de-risks IT deployments, changes and upgrades, and ensures complex migrations are transparent."},{title:"comiq",href:"https://comiq.fi/",img:"comiq.png",description:"Comiq is a Finnish software quality service provider founded in 2003 employing around 60 QA consultants. Our expertise in quality assurance services helps our customers achieve their quality targets for their business critical IT projects."},{title:"continero",href:"https://www.continero.com/en/",img:"continero.png",description:"We are an IT company based in the Brno (Czech Republic), which has existed since 2018. Our primary focus is outsourcing developers and testers to interesting and worldwide projects. We always strive to deliver the best services with a strong emphasis on modern technologies and methodologies. While doing the outsourcing, our primary vision is to help organizations with software quality and together make better products. We are developing a new testing platform built on the Robot Framework. It is a brand new technology that will enable non-developers and business organizations to create comprehensive automation tests without the knowledge of any programming languages."},{title:"DB Schenker",href:"https://www.dbschenker.com/global/about/profile",img:"dbchenker.png",description:"DB Schenker is the world’s largest global logistics provider. The company manages IT development across Technology Solution Center hubs located in Warsaw (PL), Nanjing (CN) and Delhi (IN). To keep high quality of delivered IT solutions, we use a RobotFramework to ensure fast and reliable regression testing for both our legacy and agile projects. Our experts ensure transparency in delivered quality and continuously improve their framework."},{title:"deutsche post adress",href:"https://www.deutschepost.de/de/p/postadress.html",img:"deutschepost.png",description:"Deutsche Post Adress GmbH & Co. KG is the leading specialist for data quality solutions in Germany. It’s a joint venture between Deutsche Post, the biggest logistical and postal company in the world, and Bertelsmann, the largest media company in Europe. With our services we ensure the success of a company’s dialogue marketing by correcting, updating and managing their addresses. Since 2014 we are using the robot framework for test and process automation."},{title:"digia",href:"https://www.digia.com/",img:"digia.png",description:"Digia is a IT service company that helps its customers developing and innovating solutions that support business operations together with customers. We adapt to their specific industries to help them develop digital services, manage operations and utilise information, employing nearly 1,000 experts in Finland and Sweden."},{title:"eficode",href:"https://www.eficode.fi/",img:"eficode.png",description:"Eficode is the leading DevOps company in Europe, driving the DevOps and Agile movement and building the future of software development across seven countries with over 400 professionals. Eficode guides customers with DevOps and Agile skills and practices, and enables them to focus on their growth and customers with Eficode ROOT DevOps Platform: a managed service with over 40 preferred tools including Atlassian, Jenkins and Kubernetes; along with our Application Management and Atlassian services."},{title:"eliga",href:"https://eliga.fi/",img:"eliga.png",description:"Eliga is a one-man company owned and operated by Pekka Klärck, the original author and lead developer of Robot Framework. It offers first class training and consulting services related to using and extending Robot Framework, test automation in general and Python programming."},{title:"enqore",href:"https://www.enqore.tech/",img:"enqore.png",description:"Being able to rely on IT without a second thought. That is the objective of Enqore. The company helps organisations to be agile, to respond to new challenges and to be prepared for the unknown. With Test Automation Engineering in an Agile environment, this business ensures that every delivery to production proceeds without a hitch. Enqore does this at various levels: within teams that develop software in an Agile manner, with teams responsible for the CI/CD pipeline and at the level where the testing strategy is determined. Enqore is part of Conflux"},{title:"etteplan",href:"https://www.etteplan.com/services/testing-and-test-laboratory/software-test-automation",img:"etteplan.png",description:"Etteplan is a specialist in industrial equipment engineering, embedded systems and IoT and technical documentation solutions and services with deep knowledge in QA from network edge to cloud in Nordics. Etteplan provides also consulting services in test automation and QA process development."},{title:"eucon",href:"https://www.eucon.com/en/",img:"eucon.png",description:"Eucon is a digital pioneer and expert in data-driven decision making. We combine comprehensive market data and in-depth expert knowledge with modern technologies such as Artificial Intelligence and Robotic Process Automation. Using data intelligence, we create the basis for smart decisions and support our customers in the automotive, insurance and real estate industries in further digitalizing and automating their business processes. Eucon was founded in Münster in 1997. With over 500 people in offices in Europe, North and Latin America, and Asia-Pacific, the international team serves around 250 customers in more than 80 countries."},{title:"F2G Solutions",href:"https://www.f2gsolutions.com",img:"f2g.png",description:"5G testing, E2E automation and network quality assurance."},{title:"gofore",href:"https://gofore.com/en/",img:"gofore.png",description:'Gofore Plc is a Finnish digitalisation specialist with international growth plans. We’re made up of over 700 people across Finland, Germany, Spain, and Estonia – top experts in our industry who are our company’s heart, brain, and hands. We use consulting, coding and design as tools to incite positive change. We care for our people, our customers, and the surrounding world. We rely on RobotFramework at our consulting, coding, design and quality assurance. Learn to know us better at www.gofore.com.'},{title:"henix",href:"https://www.henix.com",img:"henix.png",description:"Henix is a French consulting company specializing in software quality assurance. By offering a wide range of services including test automation using Robot Framework, it has become the leading pure player test company in France. Since 2011, Henix is the publisher of the Squash Open Source testing suite. Made by testers for testers, it interfaces natively with Robot Framework to ease test automation management as efficiently as manual tests."},{title:"humanitec",href:"https://humanitec.com/",img:"humanitec.png",description:"Humanitec is a software engineering company based in Berlin, Germany. Our team is building a platform to automate the continuous delivery process for Kubernetes-native applications. We believe that every developer in a team should be able to deploy apps to cloud resources without having to learn all the technical details and that DevOps experts should focus on what really matters and not on repetitive tasks. Our overall goal is to develop an open DevOps API to master Continuous Delivery."},{title:"imbus",href:"https://www.imbus.de/softwaretest/",img:"imbus.png",description:"imbus is a German leading solution partner for professional software testing and intelligent software quality assurance. The portfolio includes consulting for process improvement as well as test automation, test tools, and training. Since 1992, imbus has been synonymous with smart test automation."},{title:"ing group",href:"https://www.ing.com/Home.htm",img:"ing.png",description:"The ING Group is a Dutch multinational banking and financial services corporation headquartered in Amsterdam. Its primary businesses are retail banking, direct banking, commercial banking, investment banking, wholesale banking, private banking, asset management, and insurance services. At the heart of the bank in the Netherlands, NL Corebank we use Robot Framework to test our applications."},{title:"knowit",href:"https://www.knowit.fi/",img:"knowit.png",description:"Knowit is a consulting company that helps its clients succeed by operating close and in an innovative, business-oriented way. With our large pool of test automation professionals, we can ensure highest software quality and gain immediate and future savings."},{title:"kuka",href:"https://www.kuka.com/",img:"kuka.png",description:"There is a good reason why KUKA products can be found in virtually every industry: our portfolio offers perfectly matched automation solutions for more efficient manufacturing processes – from just a single robot to specialized cells through to complete system concepts."},{title:"luoto",href:"https://www.luotocompany.fi/",img:"luoto.png",description:"Full-stack software development company that focus on high quality. Interest in data and AI/ML also. Luoto has one of a kind, modern organization structure through full partner program, with lean management and sharp focus on customer experience. Our customers will get best 10% of IT specialist in market, who own the customer experience."},{title:"nexi",href:"https://www.nexigroup.com/en/",img:"nexi.png",description:"Nexi Digital Finland is a software development and innovation centre for Nexi Group located in Espoo, Finland.
As a part of one of the biggest European PayTech companies, we drive the product development of digital in-store payment products and services. First of its kind in the Nordics, Nexi Digital Finland development hub aims to bring pioneering solutions to support Nexi Group shape the future of the payment industry.
Nexi Group is the merger and integration of Nexi, Nets and Sia and has operations in over 25 European countries. More than 10 000 professionals in Nexi Group work towards the transition of a cashless Europe by making every payment digital."},{title:"nokia",href:"https://www.nokia.com/",img:"nokia.png",description:"\n Nokia develops and delivers the telecommunications industry's only end-to-end portfolio of network equipment, software, services and licensing that is available globally. Nokia also serves consumers with technology and devices. First versions of Robot Framework were developed in Nokia and Robot Framework is extensively used and developed further in Nokia today."},{title:"nordea",href:"https://www.nordea.com/en/",img:"nordea.png",description:"Nordea is a leading Nordic universal bank. We are helping our customers realise their dreams and aspirations – and we have done that for 200 years. We want to make a real difference for our customers and the communities where we operate – by being a strong and personal financial partner. The Nordea share is listed on the Nasdaq Helsinki, Nasdaq Copenhagen and Nasdaq Stockholm exchanges."},{title:"northcode",href:"https://www.northcode.fi/",img:"northcode.png",description:"We are a consulting company that offers DevSecOps services.

The foundation of our operations is our epic ownership model, where every employee is also a shareholder in the company."},{title:"op",href:"https://www.op.fi/op-ryhma",img:"op.png",description:"\n OP Financial Group is Finland's largest financial services group whose mission is to promote the sustainable prosperity, security and wellbeing of its owner-customers and business environment. The Group has a staff of 12,000 and almost 2 million owner-customers. OP uses Robot Framework for improving our agile testing quality and CI/CD, as well for bringing more customer satisfaction with the RPA capabilities."},{title:"opuscapita",href:"https://www.opuscapita.com/",img:"opuscapita.png",description:"OpusCapita enables organizations to sell, buy and pay quickly and securely, with a real-time view of their business. Over 3000 customers in over 100 countries use our source-to-pay, cash management and product information management solutions to connect, transact and grow."},{title:"oura",href:"https://ouraring.com",img:"oura.png",description:"Oura Health Ltd. is a Finnish health technology company, best known for the Oura Ring, a smart ring used to track sleep and physical activities."},{title:"posti",href:"https://www.posti.com/",img:"posti.png",description:"Posti is one of the leading delivery and fulfillment companies in Finland, Sweden and Baltics. We tend to the smoothness of our customers’ everyday lives and business by offering a wide range of postal, logistics, freight, and eCommerce services. We have the widest network coverage in Finland, and we visit around three million households and companies every weekday. We actively use Robot Framework in the test automation suites, improving quality and allowing for increased speed of developing new features for our many products."},{title:"prove",href:"https://www.prove.fi/",img:"prove.png",description:"Prove is a trailblazer in the wildly unpredictable and fast-paced world of tech, where we excel as leaders in software testing. Specializing in those high-stakes moments characterized by tight deadlines and limited information, Prove delivers state-of-the-art software testing results. Our philosophy is simple: software quality is mental health. Everybody, from coder to client, is happier when software works. Everyone wants to play on the winning team. With Prove on your side, you're not just ensuring that your software development soars—you're also investing in peace of mind for your team and your customers."},{title:"provinzial",href:"https://www.provinzial.de/",img:"provinzial.png",description:"The Provinzial Holding AG is the second largest insurance group in Germany. We ensure what is dear to our customers. We gain our strength from the regional ties of our subsidiaries. For more than 300 years, we are where our customers are. Today, more than five million private and corporate customers place their trust in us. What makes us special is our regionality and proximity. Our advisors are at most a few minutes away from our customers and can be reached through our many digital channels at any time. Furthermore, we put great importance on sustainability and commitment to the regions that are firmly anchored in our corporate values. Whether in the field of art and culture, sports sponsorship or security: We engage ourselves - and we do so in many different areas. "},{title:"qentinel",href:"https://qentinel.fi/",img:"qentinel.png",description:"Qentinel is the leading robotic software testing company applying system thinking and AI to maximize value creation. We have over hundred enthusiastic specialists who create the next generation of automated QA without humans in the loop. We believe your business is as good as software driving it."},{title:"qfactory",href:"https://www.q-factory.fi/",img:"qfactory.png",description:"\n Q-Factory is specialized in test automation and quality assurance services. Our expertise is based on strong project experience, and extensive testing and test tool knowledge. We emphasize on early software quality and we help fixing quality issues when it's most economical – before they are made."},{title:"qubilea",href:"https://qubilea.fi/en/",img:"qubilea.png",description:"Qubilea is Finnish software quality assurance company, offering consulting services in software testing and test automation solutions."},{title:"reaktor",href:"https://reaktor.fi/",img:"reaktor.png",description:"Reaktor is a creative technology house that constructs exceptional digital services. We build services for clients specializing in finance, retail, media, telecommunications, in-flight services and the public sector."},{title:"relex",href:"https://www.relexsolutions.com/",img:"relex.png",description:"RELEX Solutions provides market-leading software optimising supply chain and retail planning to reduce the carbon footprint. Our QA teams use Robot Framework in test automation against APIs and user interfaces, among other good test automation tools the teams find valuable."},{title:"robocorp",href:"https://robocorp.com/",img:"robocorp.png",description:"Robocorp is set out to change Robotic Process Automation. RPA has the potential to change how millions of people work every day and Robocorp is making it accessible to everyone through license-free open source technologies, delivered from a cloud platform."},{title:"rpamaker",href:"https://www.rpamaker.com/",img:"rpamaker.png",description:"RPAMAKER provides end to end process automation services. We are a client-centric company focused on helping clients confidently walk through the automation journey. We drive our clients to discover, evaluate, develop, host, maintain, support and improve their automations."},{title:"segron",href:"https://www.segron.com",img:"segron.png",description:"SEGRON provides Beyond End2End Test Automation solutions for communication networks. Our unique Automated Test Framework approach can orchestrate real-time testing with Out-of-the-Box end-user devices (iOS and Android smartphones and IoT devices). We strive to offer the industry expertise and reliable service that businesses look for in a long-term test automation partner."},{title:"sepp.med",href:"https://www.seppmed.de/en/",img:"seppmed.png",description:"Digitalization boosted by sepp.med quality Software development, quality assurance and testing for security-critical fields – for more than 40 years. sepp.med is an it-consultancy, an it-service provider and also a tool manufacturer. With and for our customers, we shape the digitalization of the future. This starts with consulting on possible regulatory requirements, standards and guidelines (ISO/IEC, SPICE, FDA or MDR), includes requirements and project management and covers also the whole development process including reliable test concepts and test execution. Using the expertise and scalability of our agile software factory or our agile test factory we also take over entire development or test projects. Furthermore, we are happy to share our knowledge about software development and test processes in open or individual trainings within our ISTQB® accredited training academy."},{title:"signant health",href:"https://signanthealth.com",img:"signant.png",description:"Signant Health (formerly known as CRF Health, the 4th unicorn from Finland) is a Product Company creating eCOA product platform in regulated business area. We use Robot Framework and Python for our test automation in our offices in Helsinki and Iasi, Romania. We understand the importance of quality in software development. We are good, but we want to be the best in our industry."},{title:"siili",href:"https://www.siili.com/",img:"siili.png",description:"We are a modern, full-service technology company. We help you create better business and meaningful digital experiences by combining strategic insight, creative design, data management, and technology expertise."},{title:"simplr",href:"https://simplr.company/",img:"simplr.png",description:"Simplr is a software development company focused on creating applications and tooling to best match the requirements of users. At Simplr we value open-source culture and endorse our employees to create and contribute to projects they use and enjoy. In addition to working on open source, we deliver high quality solutions matching the needs of our clients."},{title:"Slovenská sporiteľňa",href:"https://www.slsp.sk/",img:"slsp.png",description:"Slovenská sporiteľňa is the largest commercial bank in Slovakia, servicing more than 2.2 million clients. For a long time, it keeps its leadership in the area of total assets, credits, client‘s deposits, number of branches and ATMs. It offers its comprehensive services in more than 190 branches and 8 commercial centers in Slovakia. The long-term tradition, trust, and customer satisfaction combined with the know-how and experience of its owner have created good prerequisites for the bank´s success in the Slovak and European banking market. From 2001 on, Slovenská sporiteľňa became a member of Erste Group, that operates in 7 European countries. Slovenská sporiteľňa focuses on digital innovations and value-added services. Robot Framework plays a key role in test automation and RPA solutions."},{title:"smartdocs",href:"https://www.smartdocs.ai",img:"smartdocs.png",description:"Smart Docs Procurement Platform empowers companies around the world to help optimize and streamline their procurement processes. SmartDocs uses Al/ML models and provides a comprehensive set of controls to help Enterprise Procurement teams to monitor and manage procurement operations. By providing an awesome user experience, SmartDocs eliminates the hurdles and complexities of enterprise procurement processes."},{title:"smart synergies",href:"https://www.smart-synergies.eu/",img:"smartsynergies.png",description:'Smart Synergies promotes Robotframework as the "Swiss Army Knife" of Software testing tools in the wide and open seas of commercial\n and open-source software testing tools and applies it since 2014 with great success to its customer\'s test automation projects. Smart Synergies delivers end-2-end test automation services from building pilots demoing Robotframeworks powers to making it part of the continuous integration pipeline, from creating test automation strategies to designing and implementing test scenarios and cases.'},{title:"symbio",href:"https://fi.symbio.com/",img:"symbio.png",description:"Symbio is international co-creation innovation partner. We help our customers create high quality products and future services in digital world. Our core capabilities include software development, test automation, IoT and Connected Car development, QA, embedded development, interoperability and globalization services."},{title:"testimate",href:"https://www.testimate.fi/",img:"testimate.png",description:"Testimate provides comprehensive and independent high-quality software testing services for small and large systems or products. Our employees are versatile testing experts with several years of experience in testing, managing and leading testing and test automation using commercial and open source tools. We know we are good at what we do – and our clients agree!"},{title:"tietoevry",href:"https://www.tietoevry.com/",img:"tietoevry.png",description:"TietoEVRY creates digital advantage for businesses and society. We are a leading digital services and software company with local presence and global capabilities. Our Nordic values and heritage steer our success.
Headquartered in Finland, TietoEVRY employs around 24 000 experts globally. The company serves thousands of enterprise and public sector customers in more than 90 countries."},{title:"vala",href:"https://www.valagroup.com/",img:"vala.png",description:"VALA Group provides outstanding software development and quality assurance services by utilizing automation, co-operation and intelligent tool selection for companies ranging from start-ups to major publicly listed companies. Our greatest strenghts include Test Automation, QA Process Consultation and Quality Driven Software Development."},{title:"veikkaus",href:"https://www.veikkaus.fi/",img:"veikkaus.png",description:"Almost all adult Finns play our games; at Veikkaus we have over two million loyal customers. Thanks to the players, over one billion euros a year are accumulated for the common good. Robot Framework plays a key role in our test automation and RPA."}]};function Ri(e){var t={className:"variable",begin:/\$\{/,end:/\}/},o={className:"variable",begin:/\&\{/,end:/\}/},r={className:"variable",begin:/\@\{/,end:/\}/},a={className:"number",begin:/\$\{([0-9])/,end:/\}/},i={className:"section",begin:/^(\*{1,3})/,end:/$/},n={className:"comment",begin:/^\s*\[?Documentation\]?\s+/,end:/$/},s={className:"comment",begin:/^\.\.\./,end:/$/},l={className:"comment",begin:/(^| {2,}|\t|\| {1,})#/,end:/$/},c={className:"name",begin:/(^([^*| |\t|\n)]))\w/,end:/($|\s{2,})/,contains:[t]},d={className:"built_in",begin:/^\s+\[(Tags|Setup|Teardown|Template|Timeout|Arguments|Return)\]/,end:/$| {2,}|\t/,contains:[t],relevance:10},m={className:"attribute",begin:/^(Library|Resource|Test Timeout|Test Template|Test Teardown|Test Setup|Default Tags|Force Tags|Variables|Suite Setup|Suite Teardown)(?:( )|( \| ))/,end:/$| {2,}|\t/,contains:[t],relevance:10},u={className:"comment",variants:[{begin:/^\s{2,}given/,end:/\s/},{begin:/^\s{2,}when/,end:/\s/},{begin:/^\s{2,}then/,end:/\s/},{begin:/^\s{2,}and/,end:/\s/}]};return{case_insensitive:!0,aliases:["robot","rf"],keywords:"Settings Keywords [Return] [Teardown] [Timeout] [Setup] [Tags] [Arguments] [Documentation]",contains:[a,t,o,r,i,m,n,s,c,l,d,u]}}const Di=function(e){e.registerLanguage("robot",Ri)};Di(ai.Z);var Ei={builtin:_i(),libraries:fi(),tools:wi(),learning:yi(),users:ki(),sponsors:vi()},Ti=(0,ri.o)({locale:"en-US",messages:{"en-US":(0,r.Z)((0,r.Z)({},ci()),{},{resourcesList:Ei}),"de-DE":(0,r.Z)((0,r.Z)({},di()),{},{resourcesList:Ei}),"pt-PT":(0,r.Z)((0,r.Z)({},mi()),{},{resourcesList:Ei}),"es-ES":(0,r.Z)((0,r.Z)({},hi()),{},{resourcesList:Ei}),"ru-RU":(0,r.Z)((0,r.Z)({},pi()),{},{resourcesList:Ei}),"zh-CN":(0,r.Z)((0,r.Z)({},bi()),{},{resourcesList:Ei}),"fr-FR":(0,r.Z)((0,r.Z)({},ui()),{},{resourcesList:Ei}),"ach-UG":(0,r.Z)((0,r.Z)({},gi()),{},{resourcesList:Ei})},warnHtmlInMessage:"off"});(0,a.ri)(d).use(oi).use(ei).use(Ti).use(ii.Z).mount("#app")},36741:(e,t,o)=>{o.d(t,{Z:()=>p});var r=o(66252),a=o(3577),i=function(e){return(0,r.dD)("data-v-b8d6b6a6"),e=e(),(0,r.Cn)(),e},n=["width","height","fill"],s=i((function(){return(0,r._)("path",{d:"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12l4.58-4.59z"},null,-1)})),l=[s];function c(e,t,o,i,s,c){return(0,r.wg)(),(0,r.iD)("svg",{viewBox:"0 0 24 24",width:o.size,height:o.size,fill:c.fillColor,style:(0,a.j5)("transform: ".concat(c.transform))},l,12,n)}const d={name:"Chevron",props:{direction:{type:String,default:"left"},size:{type:String,default:"1rem"},color:{type:String,default:"black"}},computed:{transform:function(){return"right"===this.direction?"rotate(180deg)":"up"===this.direction?"rotate(90deg)":"down"===this.direction?"rotate(-90deg)":""},fillColor:function(){return"white"===this.color?"#f5f5f5":"theme"===this.color?"#00c0b5":"#1d1d1d"}}};var m=o(83744);const u=(0,m.Z)(d,[["render",c],["__scopeId","data-v-b8d6b6a6"]]),p=u},90887:(e,t,o)=>{o.d(t,{Z:()=>b});var r=o(82482),a=o(66252),i=o(3577),n=function(e){return(0,a.dD)("data-v-5b0febe3"),e=e(),(0,a.Cn)(),e},s=["width","height"],l=n((function(){return(0,a._)("path",{d:"M0 0h24v24H0V0z",fill:"none"},null,-1)})),c=n((function(){return(0,a._)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-5 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z"},null,-1)})),d=[l,c];function m(e,t,o,n,l,c){var m;return(0,a.wg)(),(0,a.iD)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:o.size,height:o.size,class:(0,i.C_)((m={},(0,r.Z)(m,"fill-white","white"===o.color),(0,r.Z)(m,"fill-theme","theme"===o.color),(0,r.Z)(m,"fill-black","black"===o.color),m))},d,10,s)}const u={name:"DocumentIcon",props:{color:{type:String,default:"white"},size:{type:String,default:"1rem"}}};var p=o(83744);const h=(0,p.Z)(u,[["render",m],["__scopeId","data-v-5b0febe3"]]),b=h},44479:(e,t,o)=>{o.d(t,{Z:()=>b});var r=o(82482),a=o(66252),i=o(3577),n=function(e){return(0,a.dD)("data-v-56df7616"),e=e(),(0,a.Cn)(),e},s=["width","height"],l=n((function(){return(0,a._)("path",{d:"M0 0h24v24H0V0z",fill:"none"},null,-1)})),c=n((function(){return(0,a._)("path",{d:"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"},null,-1)})),d=[l,c];function m(e,t,o,n,l,c){var m;return(0,a.wg)(),(0,a.iD)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:o.size,height:o.size,class:(0,i.C_)((m={},(0,r.Z)(m,"fill-white","white"===o.color),(0,r.Z)(m,"fill-theme","theme"===o.color),m))},d,10,s)}const u={name:"NewTabIcon",props:{color:{type:String,default:"white"},size:{type:String,default:"1rem"}}};var p=o(83744);const h=(0,p.Z)(u,[["render",m],["__scopeId","data-v-56df7616"]]),b=h}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var o=__webpack_module_cache__[e]={id:e,loaded:!1,exports:{}};return __webpack_modules__[e].call(o.exports,o,o.exports,__webpack_require__),o.loaded=!0,o.exports}__webpack_require__.m=__webpack_modules__,(()=>{__webpack_require__.amdO={}})(),(()=>{var e=[];__webpack_require__.O=(t,o,r,a)=>{if(!o){var i=1/0;for(c=0;c=a)&&Object.keys(__webpack_require__.O).every((e=>__webpack_require__.O[e](o[s])))?o.splice(s--,1):(n=!1,a0&&e[c-1][2]>a;c--)e[c]=e[c-1];e[c]=[o,r,a]}})(),(()=>{__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e["default"]:()=>e;return __webpack_require__.d(t,{a:t}),t}})(),(()=>{__webpack_require__.d=(e,t)=>{for(var o in t)__webpack_require__.o(t,o)&&!__webpack_require__.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})}})(),(()=>{__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce(((t,o)=>(__webpack_require__.f[o](e,t),t)),[]))})(),(()=>{__webpack_require__.u=e=>"js/"+e+"."+{48:"4685ce6d",111:"d9da61a3",251:"fadca85d",271:"ab8f272a",341:"41664356",527:"8b363274",591:"b165421f",598:"23ac0c5a",706:"e776abfa",786:"0ef1748b",877:"d0105946",954:"c624148c",962:"15f5025a"}[e]+".js"})(),(()=>{__webpack_require__.miniCssF=e=>"css/"+e+"."+{251:"62c85cbe",591:"17818f9b",706:"56b2f530"}[e]+".css"})(),(()=>{__webpack_require__.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()})(),(()=>{__webpack_require__.hmd=e=>(e=Object.create(e),e.children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e)})(),(()=>{__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{var e={},t="robot-framework:";__webpack_require__.l=(o,r,a,i)=>{if(e[o])e[o].push(r);else{var n,s;if(void 0!==a)for(var l=document.getElementsByTagName("script"),c=0;c{n.onerror=n.onload=null,clearTimeout(u);var a=e[o];if(delete e[o],n.parentNode&&n.parentNode.removeChild(n),a&&a.forEach((e=>e(r))),t)return t(r)},u=setTimeout(m.bind(null,void 0,{type:"timeout",target:n}),12e4);n.onerror=m.bind(null,n.onerror),n.onload=m.bind(null,n.onload),s&&document.head.appendChild(n)}}})(),(()=>{__webpack_require__.r=e=>{"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})(),(()=>{__webpack_require__.p="/"})(),(()=>{if("undefined"!==typeof document){var e=(e,t,o,r,a)=>{var i=document.createElement("link");i.rel="stylesheet",i.type="text/css";var n=o=>{if(i.onerror=i.onload=null,"load"===o.type)r();else{var n=o&&("load"===o.type?"missing":o.type),s=o&&o.target&&o.target.href||t,l=new Error("Loading CSS chunk "+e+" failed.\n("+s+")");l.code="CSS_CHUNK_LOAD_FAILED",l.type=n,l.request=s,i.parentNode&&i.parentNode.removeChild(i),a(l)}};return i.onerror=i.onload=n,i.href=t,o?o.parentNode.insertBefore(i,o.nextSibling):document.head.appendChild(i),i},t=(e,t)=>{for(var o=document.getElementsByTagName("link"),r=0;rnew Promise(((r,a)=>{var i=__webpack_require__.miniCssF(o),n=__webpack_require__.p+i;if(t(i,n))return r();e(o,n,null,r,a)})),r={143:0};__webpack_require__.f.miniCss=(e,t)=>{var a={251:1,591:1,706:1};r[e]?t.push(r[e]):0!==r[e]&&a[e]&&t.push(r[e]=o(e).then((()=>{r[e]=0}),(t=>{throw delete r[e],t})))}}})(),(()=>{var e={143:0};__webpack_require__.f.j=(t,o)=>{var r=__webpack_require__.o(e,t)?e[t]:void 0;if(0!==r)if(r)o.push(r[2]);else{var a=new Promise(((o,a)=>r=e[t]=[o,a]));o.push(r[2]=a);var i=__webpack_require__.p+__webpack_require__.u(t),n=new Error,s=o=>{if(__webpack_require__.o(e,t)&&(r=e[t],0!==r&&(e[t]=void 0),r)){var a=o&&("load"===o.type?"missing":o.type),i=o&&o.target&&o.target.src;n.message="Loading chunk "+t+" failed.\n("+a+": "+i+")",n.name="ChunkLoadError",n.type=a,n.request=i,r[1](n)}};__webpack_require__.l(i,s,"chunk-"+t,t)}},__webpack_require__.O.j=t=>0===e[t];var t=(t,o)=>{var r,a,[i,n,s]=o,l=0;if(i.some((t=>0!==e[t]))){for(r in n)__webpack_require__.o(n,r)&&(__webpack_require__.m[r]=n[r]);if(s)var c=s(__webpack_require__)}for(t&&t(o);l__webpack_require__(71386)));__webpack_exports__=__webpack_require__.O(__webpack_exports__)})(); \ No newline at end of file diff --git a/docs/js/app.b8738b51.js b/docs/js/app.b8738b51.js deleted file mode 100644 index 57e914a37..000000000 --- a/docs/js/app.b8738b51.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var __webpack_modules__={41472:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var _Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(50124),_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(95082),_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(88478),_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(48534),core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(57327),core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4___default=__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4__),core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(41539),core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5___default=__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5__),core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(2707),core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_6___default=__webpack_require__.n(core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_6__),core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(21249),core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_7___default=__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_7__),core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(92222),core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_8___default=__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_8__),core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__(83710),core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_9___default=__webpack_require__.n(core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_9__),core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__(89554),core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_10___default=__webpack_require__.n(core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_10__),core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_11__=__webpack_require__(54747),core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_11___default=__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_11__),date_fns__WEBPACK_IMPORTED_MODULE_14__=__webpack_require__(28582),marked__WEBPACK_IMPORTED_MODULE_12__=__webpack_require__(87441),_icons_NewTabIcon__WEBPACK_IMPORTED_MODULE_13__=__webpack_require__(44479);const __WEBPACK_DEFAULT_EXPORT__={name:"Milestones",components:{NewTabIcon:_icons_NewTabIcon__WEBPACK_IMPORTED_MODULE_13__.Z},data:function(){return{milestones:[]}},computed:{milestonesSorted:function(){return{open:this.milestones.filter((function(e){var t=e.closed_at;return!t})),closed:this.milestones.filter((function(e){var t=e.closed_at;return t})).sort((function(e){return-1}))}}},created:function created(){var _this=this;return(0,_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_3__.Z)((0,_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_0__.Z)().mark((function _callee(){return(0,_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_0__.Z)().wrap((function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(_this.$store.state.milestones.length){_context.next=3;break}return _context.next=3,fetch("./livedata/milestones.js").then((function(e){return e.text()})).then((function(str){return _this.$store.commit("SET_VALUE",{key:"milestones",value:eval(str)})}));case 3:_this.milestones=[].concat((0,_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_2__.Z)(_this.$store.state.milestones.filter((function(e){var t=e.due_on;return t})).sort((function(e,t){return new Date(e.due_on)>new Date(t.due_on)?1:-1}))),(0,_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_2__.Z)(_this.$store.state.milestones.filter((function(e){var t=e.due_on;return!t})))).map((function(e){return(0,_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_1__.Z)((0,_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_1__.Z)({},e),{},{descriptionExpanded:!1,issuesExpanded:!1,issuesTab:e.open_issues>0||0===e.closed_issues?"open":"closed"})})),_this.milestones.forEach((function(e){e.issues.items.sort((function(e,t){return e.reactions.total_count>t.reactions.total_count?-1:1}))})),_this.$nextTick((function(){_this.milestones.forEach((function(e){var t=document.getElementById("milestone-".concat(e.id,"-description"));t&&(t.childElementCount>1||t.firstChild&&t.firstChild.scrollHeight>t.firstChild.offsetHeight+25||(e.descriptionExpanded=!0))}))}));case 6:case"end":return _context.stop()}}),_callee)})))()},methods:{format:date_fns__WEBPACK_IMPORTED_MODULE_14__.Z,parseDescription:function(e){return marked__WEBPACK_IMPORTED_MODULE_12__.TU.parse(e)},parseIssueDescription:function(e){return marked__WEBPACK_IMPORTED_MODULE_12__.TU.parseInline(e)}}}},81318:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var _Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(95082),_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(88478),core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(92222),core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2___default=__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2__),core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(69826),core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_3___default=__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_3__),core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(41539),core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4___default=__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__),core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(82526),core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5___default=__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__),core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(41817),core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_6___default=__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_6__),core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(21249),core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_7___default=__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_7__),core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(57327),core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_8___default=__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_8__),core_js_modules_es_array_some_js__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__(5212),core_js_modules_es_array_some_js__WEBPACK_IMPORTED_MODULE_9___default=__webpack_require__.n(core_js_modules_es_array_some_js__WEBPACK_IMPORTED_MODULE_9__),core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__(2707),core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_10___default=__webpack_require__.n(core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_10__),core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11__=__webpack_require__(47042),core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11___default=__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11__),core_js_modules_es_set_js__WEBPACK_IMPORTED_MODULE_12__=__webpack_require__(70189),core_js_modules_es_set_js__WEBPACK_IMPORTED_MODULE_12___default=__webpack_require__.n(core_js_modules_es_set_js__WEBPACK_IMPORTED_MODULE_12__),core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_13__=__webpack_require__(78783),core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_13___default=__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_13__),core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_14__=__webpack_require__(33948),core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_14___default=__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_14__),core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_15__=__webpack_require__(86535),core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_15___default=__webpack_require__.n(core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_15__),core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_16__=__webpack_require__(99244),core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_16___default=__webpack_require__.n(core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_16__),core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_17__=__webpack_require__(85827),core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_17___default=__webpack_require__.n(core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_17__),core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_18__=__webpack_require__(68309),core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_18___default=__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_18__),core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_19__=__webpack_require__(26699),core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_19___default=__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_19__),core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_20__=__webpack_require__(32023),core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_20___default=__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_20__),core_js_modules_web_url_search_params_js__WEBPACK_IMPORTED_MODULE_21__=__webpack_require__(41637),core_js_modules_web_url_search_params_js__WEBPACK_IMPORTED_MODULE_21___default=__webpack_require__.n(core_js_modules_web_url_search_params_js__WEBPACK_IMPORTED_MODULE_21__),core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_22__=__webpack_require__(74916),core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_22___default=__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_22__),core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_23__=__webpack_require__(64765),core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_23___default=__webpack_require__.n(core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_23__),_icons_ChevronIcon_vue__WEBPACK_IMPORTED_MODULE_24__=__webpack_require__(36741);const __WEBPACK_DEFAULT_EXPORT__={name:"ResourceBox",components:{ChevronIcon:_icons_ChevronIcon_vue__WEBPACK_IMPORTED_MODULE_24__.Z},data:function(){return{tabs:["libraries","builtin","tools"],activeTab:"libraries",sortBy:"Stars",direction:"descending",tagsDropdownShown:!1,filterInput:"",showAll:!1,eventSent:!1}},computed:{tableHeaders:function(){return["Name","Description"].concat((0,_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_1__.Z)("builtin"!==this.activeTab?["Stars"]:[]),["Tags"])},selectedDescription:function(){var e=this,t=this.$tm("resources.tabs").find((function(t){var o=t.key;return o===e.activeTab}));return t?t.description:""},selectedList:function(){var e=this;return this.$tm("resourcesList.".concat(this.activeTab)).map((function(t){return(0,_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0__.Z)((0,_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0__.Z)({},t),{},{stars:e.getStarCount(t.href)})}))},itemsFilteredByTag:function(){var e=this;return this.selectedList.filter((function(t){return!e.tagFilterExactMatch||t.tags&&t.tags.some((function(t){return t.toLowerCase()===e.filterInput.toLowerCase()}))}))},visibleItems:function(){return this.showAll?this.itemsFilteredByTag.concat().sort(this.listSortFn):this.itemsFilteredByTag.concat().sort(this.listSortFn).slice(0,7)},tagFilterExactMatch:function(){var e=this;return""!==this.filterInput&&this.tabTags.some((function(t){return t.toLowerCase()===e.filterInput.toLowerCase()}))},tabTags:function(){return(0,_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_1__.Z)(new Set(this.selectedList.flatMap((function(e){return e.tags})).filter((function(e){return e})).sort((function(e,t){return e>t?1:-1}))))},showFiltering:function(){return"builtin"!==this.activeTab}},watch:{activeTab:function(){this.filterInput="","builtin"!==this.activeTab?this.sortBy="Stars":this.sortBy="Name",this.eventSent||(window.plausible("Interact",{props:{element:"Resources"}}),this.eventSent=!0);var e="".concat(window.location.href.split("?")[0].split("#")[0],"?tab=").concat(this.activeTab,"#resources");history.replaceState(null,null,e)},showAll:function(){this.eventSent||(window.plausible("Interact",{props:{element:"Resources"}}),this.eventSent=!0)}},methods:{getTagColor:function(e){if("built-in"===e)return"#00c0b5";var t=(0,_Users_sami_code_robotframework_github_com_node_modules_babel_runtime_helpers_esm_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_1__.Z)(e.toLowerCase()).flatMap((function(e){return 100*e.charCodeAt(0)})).reduce((function(e,t){return t+e}),0),o=t%360,r=t%49+51;return"hsl(".concat(o,", ").concat(r,"%, 70%)")},listSortFn:function(e,t){var o=e[this.sortBy.toLowerCase()],r=t[this.sortBy.toLowerCase()],a="number"===typeof o||"number"===typeof r;return a?o>r?"descending"===this.direction?-1:1:"descending"===this.direction?1:-1:o>r?"descending"===this.direction?1:-1:"descending"===this.direction?-1:1},switchSortDirection:function(){"descending"===this.direction?this.direction="ascending":this.direction="descending"},getStarCount:function(e){var t=this.$store.state.stars.find((function(t){var o=t.name;return e.toLowerCase().includes(o.toLowerCase())}));return t&&t.stars||null},onClick:function(e){var t=e.target;this.$refs.tagInput&&!this.$refs.tagInput.contains(t)&&(this.tagsDropdownShown=!1)}},created:function created(){var _this5=this;if(this.$store.state.stars.length||fetch("./livedata/stars.js").then((function(e){return e.text()})).then((function(str){return _this5.$store.commit("SET_VALUE",{key:"stars",value:eval(str)})})),"#resources"===window.location.hash){var param=new URLSearchParams(window.location.search),tab=param.get("tab");tab&&(this.activeTab=tab)}},mounted:function(){document.addEventListener("click",this.onClick)},beforeUnmount:function(){document.removeEventListener("click",this.onClick)}}},58285:(e,t,o)=>{var r=o(95082),a=(o(66992),o(88674),o(19601),o(17727),o(49963)),i=o(66252);function n(e,t,o,r,a,n){var s=(0,i.up)("router-view");return(0,i.wg)(),(0,i.j4)(s)}const s={methods:{setDeviceSize:function(e){var t=this;this.$nextTick((function(){t.$store.commit("SET_IS_MOBILE",e<700),t.$store.commit("SET_IS_TABLET",e>699&&e<1024),t.$store.commit("SET_IS_DESKTOP",e>1023)}))}},created:function(){var e=this;document.documentElement.lang=this.$i18n.locale,this.setDeviceSize(window.innerWidth),window.addEventListener("resize",(function(){e.setDeviceSize(window.innerWidth)})),window.addEventListener("click",(function(){return document.body.classList.remove("accessible")})),window.addEventListener("keydown",(function(e){var t=e.key;"Tab"===t&&document.body.classList.add("accessible")}))},watch:{"$i18n.locale":function(){document.documentElement.lang=this.$i18n.locale}}};var l=o(83744);const c=(0,l.Z)(s,[["render",n]]),d=c;var m=o(22201),u=(o(68309),o(82526),o(41817),o(3577)),p={class:"container mb-xlarge"},h={class:"col-sm-12 col-lg-9 row"},b={class:"col-sm-12 col-lg-8 pr-small"},g=["innerHTML"],_={class:"col-lg-4 pt-2xsmall"},f=["href"],w=["innerHTML"],y={class:"col-sm-12 col-lg-9 col-lg-offset-3 row"};function k(e,t,o,r,a,n){var s=(0,i.up)("nav-mobile"),l=(0,i.up)("robocon-banner"),c=(0,i.up)("banner"),d=(0,i.up)("navbar"),m=(0,i.up)("news"),k=(0,i.up)("page-section"),v=(0,i.up)("monaco-editor"),R=(0,i.up)("tab-box"),D=(0,i.up)("resource-box"),E=(0,i.up)("community-items"),T=(0,i.up)("router-link"),C=(0,i.up)("video-component"),P=(0,i.up)("sponsors"),A=(0,i.up)("milestones"),F=(0,i.up)("page-footer");return(0,i.wg)(),(0,i.iD)(i.HY,null,[(0,i.Wm)(s),(0,i.Wm)(l),(0,i.Wm)(c),(0,i.Wm)(d,{class:"nav-desktop"}),(0,i._)("div",p,[(0,i.Wm)(k,{"title-id":"introduction",title:e.$t("introduction.title")},{default:(0,i.w5)((function(){return[(0,i._)("div",h,[(0,i._)("div",b,[(0,i._)("div",{innerHTML:e.$t("introduction.body"),id:"intro-text",class:"mb-small"},null,8,g)]),(0,i._)("div",_,[(0,i.Wm)(m)])])]})),_:1},8,["title"]),(0,i.Wm)(k,{"title-id":"getting-started",title:e.$t("gettingStarted.title"),body:e.$t("gettingStarted.body")},{default:(0,i.w5)((function(){return[(0,i.Wm)(R,{class:"col-sm-12 col-lg-9 col-lg-offset-3",tabs:e.$tm("gettingStarted.tabs")},{"tab-1":(0,i.w5)((function(){return[(0,i.Wm)(v)]})),"tab-3":(0,i.w5)((function(){return[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.$tm("resourcesList.learning"),(function(e){return(0,i.wg)(),(0,i.iD)("div",{key:e.name,class:"mt-small mb-small"},[(0,i._)("a",{href:e.href},(0,u.zw)(e.name),9,f),(0,i._)("div",{class:"type-small",innerHTML:e.description},null,8,w)])})),128))]})),_:1},8,["tabs"])]})),_:1},8,["title","body"]),(0,i.Wm)(k,{"title-id":"resources",title:e.$t("resources.title"),body:e.$t("resources.body")},{default:(0,i.w5)((function(){return[(0,i.Wm)(D,{class:"col-sm-12 col-lg-9 col-lg-offset-3"})]})),_:1},8,["title","body"]),(0,i.Wm)(k,{"title-id":"community",title:e.$t("community.title"),body:e.$t("community.body")},{default:(0,i.w5)((function(){return[(0,i._)("div",y,[(0,i.Wm)(E),(0,i._)("button",{class:(0,u.C_)(["theme mt-medium",e.$store.state.isMobile?"ml-xsmall":""])},[(0,i.Wm)(T,{to:{name:"CoC"},class:"type-no-underline"},{default:(0,i.w5)((function(){return[(0,i.Uk)(" Code of Ethics ")]})),_:1})],2),(0,i.Wm)(C,{videoId:"2GDrtvz_1Ds",class:"col-sm-12 mt-small"})])]})),_:1},8,["title","body"]),(0,i.Wm)(k,{"title-id":"development",title:e.$t("development.title"),body:e.$t("development.body")},{default:(0,i.w5)((function(){return[(0,i.Wm)(P,{class:"col-sm-12 col-lg-9 col-lg-offset-3"}),(0,i.Wm)(A,{class:"col-sm-12 col-lg-9 col-lg-offset-3 mt-medium"})]})),_:1},8,["title","body"])]),(0,i.Wm)(F)],64)}o(41539),o(78783),o(33948),o(29254),o(92222);var v=function(e){return(0,i.dD)("data-v-121f48b8"),e=e(),(0,i.Cn)(),e},R=v((function(){return(0,i._)("h2",{style:{"letter-spacing":"0.125rem",position:"sticky",top:"0"},class:"type-center type-large mb-none color-black bg-theme"}," NEWS ",-1)})),D={class:"bg-grey-dark pt-small"},E={key:0},T=["href"],C={class:"mb-none line-height-1 font-body"},P={key:1,class:"mb-none line-height-1 font-body"},A={class:"type-small"},F=["src"],x=["innerHTML"];function S(e,t,o,r,n,s){return(0,i.wg)(),(0,i.j4)(a.uT,{appear:"",name:"opacity"},{default:(0,i.w5)((function(){return[e.height?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"news-container card",style:(0,u.j5)({height:"".concat(e.height,"px")})},[R,(0,i._)("div",D,[0===e.news.length?((0,i.wg)(),(0,i.iD)("div",E," loading... ")):((0,i.wg)(!0),(0,i.iD)(i.HY,{key:1},(0,i.Ko)(e.news,(function(t){return(0,i.wg)(),(0,i.iD)("article",{key:t.id,class:"pb-small px-small"},[t.link?((0,i.wg)(),(0,i.iD)("a",{key:0,href:t.link,target:"blank",class:"mb-none line-height-1"},[(0,i._)("h3",C,(0,u.zw)(t.title),1)],8,T)):((0,i.wg)(),(0,i.iD)("h3",P,(0,u.zw)(t.title),1)),(0,i._)("div",A,(0,u.zw)(t.date),1),t.image?((0,i.wg)(),(0,i.iD)("img",{key:2,src:"".concat(t.image.file.url).concat(e.imgUrlParams),class:"main"},null,8,F)):(0,i.kq)("",!0),t.body?((0,i.wg)(),(0,i.iD)("div",{key:3,class:"mb-none",style:{"line-height":"1.25"},innerHTML:s.parseBody(t.body)},null,8,x)):(0,i.kq)("",!0)])})),128))])],4)):(0,i.kq)("",!0)]})),_:1})}var I=o(50124),O=o(48534),M=(o(32564),o(2707),o(83710),o(21249),o(95229)),L=M.createClient({space:"bpm5i5mj2o02",accessToken:"kDjw4Ergl45z3NFMv6Bhd5Z5w_HTIdcioiY4Hq9mC0I"}),W=function(){var e=(0,O.Z)((0,I.Z)().mark((function e(){var t;return(0,I.Z)().wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,L.getEntries({content_type:"latestNews"}).then((function(e){var t=e.items;return t.map((function(e){var t,o=e.fields;return(0,r.Z)((0,r.Z)({},o),{},{image:null===(t=o.image)||void 0===t?void 0:t.fields})}))}));case 2:return t=e.sent,e.abrupt("return",t);case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),j=o(22135);const B={data:function(){return{news:[],imgUrlParams:"?w=500&h=500",height:0}},mounted:function(){var e=this;return(0,O.Z)((0,I.Z)().mark((function t(){var o;return(0,I.Z)().wrap((function(t){while(1)switch(t.prev=t.next){case 0:return o=document.getElementById("intro-text"),setTimeout((function(){e.height=o.offsetHeight-16}),500),t.next=4,W();case 4:e.news=t.sent.sort((function(e,t){return new Date(e.date)>new Date(t.date)?-1:1}));case 5:case"end":return t.stop()}}),t)})))()},methods:{parseBody:function(e){return(0,j.S)(e,{renderNode:{paragraph:function(e,t){return'

'.concat(t(e.content),"

")},blockquote:function(e,t){return'
'.concat(t(e.content),"
")}}})}}},q=(0,l.Z)(B,[["render",S],["__scopeId","data-v-121f48b8"]]),N=q;var U=function(e){return(0,i.dD)("data-v-2b387997"),e=e(),(0,i.Cn)(),e},K={class:"row bg-theme center p-medium"},z=U((function(){return(0,i._)("div",null,[(0,i._)("h1",{class:"title"},[(0,i.Uk)(" ROBOT"),(0,i._)("br"),(0,i.Uk)(" FRAME"),(0,i._)("br"),(0,i.Uk)(" WORK"),(0,i._)("div",{style:{"font-size":"2.5rem",transform:"translateY(-.5rem)",display:"inline-block"}},"🇺🇦")])],-1)})),H=[z];function G(e,t,o,r,a,n){return(0,i.wg)(),(0,i.iD)("div",K,H)}const $={name:"Banner"},Z=(0,l.Z)($,[["render",G],["__scopeId","data-v-2b387997"]]),V=Z;var J=function(e){return(0,i.dD)("data-v-05afb24c"),e=e(),(0,i.Cn)(),e},Y={class:"font-title bg-black color-white type-left type-slimbanner between flex type-large"},X=J((function(){return(0,i._)("div",{class:"m-small"},[(0,i.Uk)(" Tickets for "),(0,i._)("span",{class:"type-uppercase color-robocon"},"Robocon 2024"),(0,i.Uk)(" are on sale now! ")],-1)})),Q=J((function(){return(0,i._)("div",{class:"m-small"},[(0,i.Uk)(" More info at "),(0,i._)("a",{class:"color-robocon",href:"https://robocon.io/"},"robocon.io"),(0,i.Uk)(". ")],-1)})),ee=[X,Q];function te(e,t){return(0,i.wg)(),(0,i.iD)("div",Y,ee)}const oe={},re=(0,l.Z)(oe,[["render",te],["__scopeId","data-v-05afb24c"]]),ae=re;var ie=function(e){return(0,i.dD)("data-v-49880187"),e=e(),(0,i.Cn)(),e},ne={class:"row bg-black color-white p-small pt-large pb-large"},se={class:"container",style:{"line-height":"2"}},le={class:"row"},ce={class:"col-sm-6 col-md-3"},de={class:"mb-small"},me=ie((function(){return(0,i._)("div",null," Robot Framework ry ",-1)})),ue=ie((function(){return(0,i._)("div",null," Kampinkuja 2 ",-1)})),pe=ie((function(){return(0,i._)("div",null," 00100 Helsinki ",-1)})),he=ie((function(){return(0,i._)("div",null," Finland ",-1)})),be=ie((function(){return(0,i._)("a",{href:"mailto:board@robotframework.org"}," Contact ",-1)})),ge=(0,i.uE)('

Community

GitHub
Forum
Facebook
Twitter
LinkedIn
',6),_e=[ge],fe={key:0,class:"col-sm-12 mb-large"},we=(0,i.uE)('',1),ye={class:"col-sm-6 col-md-3 flex flex-col between"},ke=ie((function(){return(0,i._)("div",null,null,-1)}));function ve(e,t,o,r,a,n){var s=(0,i.up)("router-link");return(0,i.wg)(),(0,i.iD)("div",ne,[(0,i._)("div",se,[(0,i._)("div",le,[(0,i._)("div",ce,[(0,i._)("h3",de,[(0,i.Wm)(s,{to:{name:"Foundation"}},{default:(0,i.w5)((function(){return[(0,i.Uk)(" Foundation ")]})),_:1})]),me,ue,pe,he,be]),(0,i._)("div",{class:(0,u.C_)(["col-sm-6 col-md-3",e.$store.state.isMobile?"type-right":""])},_e,2),e.$store.state.isMobile?((0,i.wg)(),(0,i.iD)("div",fe)):(0,i.kq)("",!0),we,(0,i._)("div",ye,[ke,(0,i._)("div",{class:(0,u.C_)(e.$store.state.isMobile?"type-right":"")},[(0,i._)("div",null,[(0,i.Wm)(s,{to:{name:"PrivacyPolicy"}},{default:(0,i.w5)((function(){return[(0,i.Uk)(" Privacy Policy ")]})),_:1})]),(0,i._)("div",null,[(0,i.Wm)(s,{to:{name:"CoC"}},{default:(0,i.w5)((function(){return[(0,i.Uk)(" Code of Ethics ")]})),_:1})])],2)])])])])}o(57327),o(47941);const Re={name:"PageFooter",components:{},data:function(){return{langDropdownOpen:!1}},computed:{langNames:function(){var e=this;return Object.keys(this.$i18n.messages).map((function(t){return{lang:t,name:e.$i18n.messages[t].langName}})).filter((function(e){var t=e.name;return"translation"!==t}))}},methods:{setLang:function(e){this.$i18n.locale=e,window.localStorage.setItem("lang",e)}}},De=(0,l.Z)(Re,[["render",ve],["__scopeId","data-v-49880187"]]),Ee=De;var Te={ref:"nav",class:"flex navbar bg-black color-white p-xsmall"},Ce={key:0},Pe={class:"container row middle pr-small"},Ae={class:"col-sm-3 flex"},Fe={class:"flex"},xe=["name","onClick"],Se={class:"relative",ref:"dropdownDocs"},Ie={key:0,class:"dropdown-container bg-black color-white p-small card",style:{left:"0.25rem"}},Oe=["href","onClick"];function Me(e,t,o,r,n,s){var l=(0,i.up)("robot-icon"),c=(0,i.up)("chevron-icon");return(0,i.wg)(),(0,i.iD)("div",Te,[(0,i.Wm)(a.uT,{name:"opacity"},{default:(0,i.w5)((function(){return[e.navSticky&&!e.iconInContainer?((0,i.wg)(),(0,i.iD)("div",Ce,[(0,i.Wm)(l,{size:"1.75rem",class:"absolute rf-icon-rotation cursor-pointer",onClick:s.logoClick},null,8,["onClick"])])):(0,i.kq)("",!0)]})),_:1}),(0,i._)("div",Pe,[(0,i._)("div",Ae,[(0,i.Wm)(a.uT,{name:"opacity"},{default:(0,i.w5)((function(){return[e.navSticky&&e.iconInContainer?((0,i.wg)(),(0,i.j4)(l,{key:0,size:"1.75rem",class:"rf-icon-rotation cursor-pointer",onClick:s.logoClick},null,8,["onClick"])):(0,i.kq)("",!0)]})),_:1})]),(0,i._)("div",Fe,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.$tm("navbar.items"),(function(e,t){return(0,i.wg)(),(0,i.iD)("button",{key:e.name,name:"go-to-".concat(e.name),class:(0,u.C_)(["color-white font-title type-no-underline type-uppercase line-height-body border-right-white border-light",0===t?"pl-xsmall pr-small":"px-small"]),onClick:function(t){return s.itemClick(e.id)}},(0,u.zw)(e.name),11,xe)})),128)),(0,i._)("div",Se,[(0,i._)("button",{class:(0,u.C_)(["flex middle px-small font-title type-uppercase line-height-body dropdown-button",e.docsDropdownOpen?"color-theme":"color-white"]),onClick:t[0]||(t[0]=function(t){return e.docsDropdownOpen=!e.docsDropdownOpen})},[(0,i._)("div",null,(0,u.zw)(e.$t("navbar.dropdownDocs.name")),1),(0,i.Wm)(c,{color:e.docsDropdownOpen?"theme":"white",direction:e.docsDropdownOpen?"up":"down",size:"1.5rem"},null,8,["color","direction"])],2),(0,i.Wm)(a.uT,{name:"fade"},{default:(0,i.w5)((function(){return[e.docsDropdownOpen?((0,i.wg)(),(0,i.iD)("div",Ie,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.$tm("navbar.dropdownDocs.items"),(function(t,o){var r=t.name,a=t.url,n=t.description;return(0,i.wg)(),(0,i.iD)("div",{key:r},[(0,i._)("a",{href:a,onClick:function(e){return s.linkClick(r)}},(0,u.zw)(r),9,Oe),(0,i._)("p",{class:(0,u.C_)(["type-small mt-none",o===e.$tm("navbar.dropdownDocs.items").length-1?"mb-none":""])},(0,u.zw)(n),3)])})),128))])):(0,i.kq)("",!0)]})),_:1})],512)])])],512)}var Le=o(82482),We=function(e){return(0,i.dD)("data-v-266d6681"),e=e(),(0,i.Cn)(),e},je=["width","height"],Be=We((function(){return(0,i._)("path",{id:"path",d:"M5,10.2c0-1.9,1.5-3.4,3.4-3.4c1.9,0,3.4,1.5,3.4,3.4c0,0.7-0.6,1.2-1.2,1.2c-0.7,0-1.2-0.6-1.2-1.2\n c0-0.5-0.4-0.9-0.9-0.9c-0.5,0-0.9,0.4-0.9,0.9c0,0.7-0.6,1.2-1.2,1.2S5,10.9,5,10.2 M19,15.9c0,0.7-0.6,1.2-1.2,1.2H6.4\n c-0.7,0-1.2-0.6-1.2-1.2c0-0.7,0.6-1.2,1.2-1.2h11.5C18.5,14.7,19,15.3,19,15.9 M13.7,10.9c-0.4-0.6-0.2-1.3,0.3-1.7l2.9-1.9\n c0.6-0.4,1.3-0.2,1.7,0.3c0.4,0.6,0.2,1.3-0.3,1.7l-2.9,1.9c-0.2,0.1-0.5,0.2-0.7,0.2C14.3,11.5,13.9,11.3,13.7,10.9 M21.5,18.5\n c0,0.2-0.1,0.5-0.3,0.6l-2.1,2.1c-0.2,0.2-0.4,0.3-0.6,0.3h-13c-0.2,0-0.5-0.1-0.6-0.3l-2.1-2.1c-0.2-0.2-0.3-0.4-0.3-0.6v-13\n c0-0.2,0.1-0.5,0.3-0.6l2.1-2.1C5,2.6,5.2,2.5,5.5,2.5h13c0.2,0,0.5,0.1,0.6,0.3l2.1,2.1c0.2,0.2,0.3,0.4,0.3,0.6V18.5z M23.3,3.4\n l-2.8-2.8C20.1,0.2,19.6,0,19,0H5C4.4,0,3.9,0.2,3.4,0.7L0.7,3.4C0.2,3.9,0,4.4,0,5v14c0,0.6,0.2,1.2,0.7,1.6l2.8,2.8\n C3.9,23.8,4.4,24,5,24h14c0.6,0,1.2-0.2,1.6-0.7l2.8-2.8c0.4-0.4,0.7-1,0.7-1.6V5C24,4.4,23.8,3.9,23.3,3.4"},null,-1)})),qe=[Be];function Ne(e,t,o,r,a,n){var s;return(0,i.wg)(),(0,i.iD)("svg",{version:"1.1",id:"face",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:o.size,height:o.size,class:(0,u.C_)((s={},(0,Le.Z)(s,"fill-white","white"===o.color),(0,Le.Z)(s,"fill-theme","theme"===o.color),s))},qe,10,je)}const Ue={name:"RobotIcon",props:{color:{type:String,default:"white"},size:{type:String,default:"1rem"}}},Ke=(0,l.Z)(Ue,[["render",Ne],["__scopeId","data-v-266d6681"]]),ze=Ke;var He=o(36741);const Ge={name:"Navbar",components:{RobotIcon:ze,ChevronIcon:He.Z},data:function(){return{navSticky:!1,linksDropdownOpen:!1,docsDropdownOpen:!1,langDropdownOpen:!1,iconInContainer:!1}},computed:{langNames:function(){var e=this;return Object.keys(this.$i18n.messages).map((function(t){return{lang:t,name:e.$i18n.messages[t].langName}}))}},methods:{itemClick:function(e){var t=document.getElementById(e);t&&(history.replaceState(null,null,"".concat(location.href.split("?")[0].split("#")[0],"#").concat(e)),window.scrollTo({top:t.offsetTop,behavior:"smooth"}),window.plausible("Nav click",{props:{section:e}}))},linkClick:function(e){window.plausible("Nav click",{props:{section:e}})},setLang:function(e){this.$i18n.locale=e,window.localStorage.setItem("lang",e)},onClick:function(e){this.$refs.dropdownDocs&&!this.$refs.dropdownDocs.contains(e.target)&&(this.docsDropdownOpen=!1)},onResize:function(){this.iconInContainer=window.innerWidth<1500},logoClick:function(){window.scrollTo({top:0,behavior:"smooth"})}},mounted:function(){var e=this,t=new IntersectionObserver((function(t){e.navSticky=!t[0].isIntersecting}),{threshold:1});t.observe(this.$refs.nav),document.addEventListener("click",this.onClick),window.addEventListener("resize",this.onResize),this.onResize()},beforeUnmount:function(){document.removeEventListener("click",this.onClick),window.removeEventListener("resize",this.onResize)},watch:{linksDropdownOpen:function(){this.linksDropdownOpen&&(this.langDropdownOpen=!1)},langDropdownOpen:function(){this.langDropdownOpen&&(this.linksDropdownOpen=!1)}}},$e=(0,l.Z)(Ge,[["render",Me],["__scopeId","data-v-56858196"]]),Ze=$e;var Ve={class:"bar flex middle p-xsmall"},Je={class:"container row"},Ye={class:"font-title color-white type-uppercase line-height-body"};function Xe(e,t,o,r,a,n){var s=(0,i.up)("robot-icon"),l=(0,i.up)("router-link");return(0,i.wg)(),(0,i.iD)("div",Ve,[(0,i.Wm)(l,{to:{name:"Home"},class:"flex mr-xsmall"},{default:(0,i.w5)((function(){return[(0,i.Wm)(s,{size:"1.75rem",class:"rf-icon-rotation cursor-pointer"})]})),_:1}),(0,i._)("div",Je,[(0,i.Wm)(l,{to:{name:"Home"},class:"color-theme font-title"},{default:(0,i.w5)((function(){return[(0,i.Uk)(" RBTFRMWRK ")]})),_:1}),(0,i._)("div",Ye," /"+(0,u.zw)(o.title),1)])])}const Qe={name:"NavbarSubPage",props:{title:{type:String,required:!0}},components:{RobotIcon:ze}},et=(0,l.Z)(Qe,[["render",Xe],["__scopeId","data-v-06e6a84e"]]),tt=et;var ot=function(e){return(0,i.dD)("data-v-46404a29"),e=e(),(0,i.Cn)(),e},rt={key:0,class:"menu bg-black pt-xlarge pb-large pr-small",style:{"padding-left":"3.75rem"}},at={key:"1",class:"mt-small"},it=["name","onClick"],nt={key:"3",class:"mt-medium"},st={class:"flex middle"},lt=["href"],ct={class:"flex middle"},dt=ot((function(){return(0,i._)("div",{class:"font-title ml-xsmall"}," ROBOT FRAMEWORK ",-1)})),mt=ot((function(){return(0,i._)("span",null,null,-1)})),ut=ot((function(){return(0,i._)("span",null,null,-1)})),pt=ot((function(){return(0,i._)("span",null,null,-1)})),ht=ot((function(){return(0,i._)("span",null,null,-1)})),bt=[mt,ut,pt,ht];function gt(e,t,o,r,n,s){var l=(0,i.up)("chevron-icon"),c=(0,i.up)("robot-icon");return(0,i.wg)(),(0,i.iD)(i.HY,null,[(0,i.Wm)(a.uT,{name:"fade"},{default:(0,i.w5)((function(){return[e.isOpen?((0,i.wg)(),(0,i.iD)("div",rt,[(0,i.Wm)(a.uT,{name:e.docsOpen?"fade-left":"fade-right",mode:"out-in"},{default:(0,i.w5)((function(){return[e.docsOpen?((0,i.wg)(),(0,i.iD)("div",nt,[(0,i._)("button",{class:"type-uppercase font-title flex middle mb-medium",style:{"margin-left":"-0.5rem"},onClick:t[1]||(t[1]=function(t){return e.docsOpen=!1})},[(0,i.Wm)(l,{direction:"left",color:"white",size:"2rem"}),(0,i.Uk)(" "+(0,u.zw)(e.$t("navbar.dropdownDocs.name")),1)]),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.$tm("navbar.dropdownDocs.items"),(function(t,o){var r=t.name,a=t.url,n=t.description;return(0,i.wg)(),(0,i.iD)("div",{key:r},[(0,i._)("div",st,[(0,i._)("a",{href:a,class:"line-height-1"},(0,u.zw)(r),9,lt)]),(0,i._)("p",{class:(0,u.C_)(["type-small color-white mt-none",o===e.$tm("navbar.dropdownDocs.items").length-1?"mb-none":"mb-small"])},(0,u.zw)(n),3)])})),128))])):((0,i.wg)(),(0,i.iD)("div",at,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.$tm("navbar.items"),(function(t){return(0,i.wg)(),(0,i.iD)("div",{key:t.name},[(0,i._)("button",{name:"go-to-".concat(t.name),class:"mb-small mt-xsmall color-white font-title type-uppercase",onClick:function(o){s.scrollTo(t.id,400),e.isOpen=!1}},(0,u.zw)(t.name),9,it)])})),128)),(0,i._)("div",null,[(0,i._)("button",{class:"flex middle mt-medium color-white font-title type-uppercase",style:{"margin-left":"-0.5rem"},onClick:t[0]||(t[0]=function(t){return e.docsOpen=!0})},[(0,i.Wm)(l,{direction:"right",color:"white",size:"2rem"}),(0,i._)("div",null,(0,u.zw)(e.$t("navbar.dropdownDocs.name")),1)])])]))]})),_:1},8,["name"])])):(0,i.kq)("",!0)]})),_:1}),(0,i._)("div",{class:(0,u.C_)(["navbar row between bg-black color-white",e.isOpen?"open":""])},[(0,i._)("div",ct,[(0,i.Wm)(c,{size:"2rem",class:"ml-small",onClick:t[2]||(t[2]=function(e){return s.scrollTo(null,400)})}),dt]),(0,i._)("button",{class:(0,u.C_)(["hamburger",e.isOpen?"open":""]),onClick:t[3]||(t[3]=function(t){e.isOpen=!e.isOpen,e.docsOpen=!1})},bt,2)],2),(0,i.Wm)(a.uT,{name:"opacity"},{default:(0,i.w5)((function(){return[e.isOpen?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"menu-background",onClick:t[4]||(t[4]=function(t){e.isOpen=!1,e.docsOpen=!1})})):(0,i.kq)("",!0)]})),_:1})],64)}o(91058);const _t={name:"NavMobile",components:{ChevronIcon:He.Z,RobotIcon:ze},data:function(){return{isOpen:!1,docsOpen:!1}},methods:{scrollTo:function(e,t){var o=function(e,t,o,r){var a=e/(r/2);return a<1?o/2*a*a+t:(a-=1,-o/2*(a*(a-2)-1)+t)},r=e?document.getElementById(e).offsetTop-80:0,a=document.scrollingElement||document.documentElement,i=a.scrollTop,n=r-i,s=+new Date,l=function e(){var l=+new Date,c=l-s;a.scrollTop=parseInt(o(c,i,n,t),10),c7?((0,i.wg)(),(0,i.iD)("button",{key:0,class:"stroke type-uppercase mt-small type-small mb-xsmall",onClick:t[3]||(t[3]=function(t){return e.showAll=!0})}," Show more ")):(0,i.kq)("",!0)],2)]))]})),_:1})],2)])}var bo=o(81318);const go=(0,l.Z)(bo.Z,[["render",ho],["__scopeId","data-v-16a2d6f8"]]),_o=go;o(74916),o(15306);var fo={class:"row"},wo=["onClick"],yo={key:0,class:"row mt-small color-white"},ko=["innerHTML"],vo={key:1},Ro=["innerHTML"],Do={key:2,class:"w-100"};function Eo(e,t,o,r,n,s){var l=(0,i.up)("robot-code");return(0,i.wg)(),(0,i.iD)("div",{class:(0,u.C_)(["bg-grey-dark card",e.$store.state.isMobile?"p-small pt-medium sharp":"p-large"])},[(0,i._)("div",fo,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(o.tabs,(function(t,o){return(0,i.wg)(),(0,i.iD)("button",{key:t.name,class:(0,u.C_)(["type-uppercase theme type-small mb-xsmall",[e.activeTabIndex===o?"active":"",2===o?"mr-none":"mr-small"]]),onClick:function(t){return e.activeTabIndex=o}},(0,u.zw)(t.name),11,wo)})),128))]),s.activeTab?((0,i.wg)(),(0,i.iD)("div",yo,[(0,i.Wm)(a.uT,{name:"opacity",mode:"out-in"},{default:(0,i.w5)((function(){return[s.includesRobotCode||e.$slots["tab-".concat(e.activeTabIndex+1)]?s.includesRobotCode?((0,i.wg)(),(0,i.iD)("div",vo,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(s.splitDescription,(function(e){return(0,i.wg)(),(0,i.iD)(i.HY,{key:e},[""===e.slice(0,7)?((0,i.wg)(),(0,i.j4)(l,{key:0,code:e.replace("","").replace("","")},null,8,["code"])):((0,i.wg)(),(0,i.iD)("div",{key:1,innerHTML:e},null,8,Ro))],64)})),128))])):((0,i.wg)(),(0,i.iD)("div",Do,[(0,i.WI)(e.$slots,"tab-".concat(e.activeTabIndex+1))])):((0,i.wg)(),(0,i.iD)("div",{key:s.activeTab.name,class:"w-100",innerHTML:s.activeTab.description},null,8,ko))]})),_:3})])):(0,i.kq)("",!0)],2)}o(9653),o(91038),o(41637),o(64765);function To(e,t,o,r,a,n){var s=(0,i.up)("highlightjs");return(0,i.wg)(),(0,i.iD)("div",null,[(0,i.Wm)(s,{class:"highlight-container",language:"robot",code:o.code},null,8,["code"])])}const Co={name:"RobotCode",props:{code:{type:String,default:""}}},Po=(0,l.Z)(Co,[["render",To]]),Ao=Po,Fo={name:"TabBox",components:{RobotCode:Ao},props:{tabs:{type:Array,required:!0},defaultTab:{type:Number,required:!1}},data:function(){return{activeTabIndex:0,eventSent:!1}},computed:{activeTab:function(){return this.tabs[this.activeTabIndex]},includesRobotCode:function(){return this.activeTab.description&&this.activeTab.description.includes("")},splitDescription:function(){if(!this.includesRobotCode)return null;var e=document.createElement("template");return e.innerHTML=this.activeTab.description,Array.from(e.content.children).map((function(e){return e.outerHTML}))}},created:function(){if(this.defaultTab&&(this.activeTabIndex=this.defaultTab),"#getting-started"===window.location.hash){var e=new URLSearchParams(window.location.search),t=e.get("tab");t&&(this.activeTabIndex=Number(t))}},watch:{activeTab:function(){if(this.eventSent||(window.plausible("Interact",{props:{element:"Learning"}}),this.eventSent=!0),!this.defaultTab){var e="".concat(window.location.href.split("?")[0].split("#")[0],"?tab=").concat(this.activeTabIndex,"#getting-started");history.replaceState(null,null,e)}}}},xo=(0,l.Z)(Fo,[["render",Eo]]),So=xo;var Io={class:"row bg-grey-dark-darkmode pt-medium pb-medium p-small"},Oo={class:"col-sm-12 mb-xsmall type-center color-theme"},Mo=["href"],Lo={class:"cursor-pointer bg-white card"},Wo=["innerHTML"];function jo(e,t,o,r,a,n){return(0,i.wg)(),(0,i.iD)("div",Io,[(0,i._)("div",Oo,[(0,i._)("h3",null,(0,u.zw)(e.$t("development.sponsorBoxTitle")),1)]),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.$tm("resourcesList.sponsors"),(function(t){return(0,i.wg)(),(0,i.iD)("a",{key:t.name,href:t.href,target:"_blank",class:"sponsor"},[(0,i._)("div",Lo,[(0,i._)("div",{class:"img-container mb-small",style:(0,u.j5)("background-image: url(".concat(e.publicPath,"img/sponsors/").concat(t.img,")"))},null,4)])],8,Mo)})),128)),(0,i._)("div",{class:"col-sm-12 type-small type-right pr-small",innerHTML:e.$t("development.howToJoin")},null,8,Wo)])}const Bo={name:"Sponsors",data:function(){return{publicPath:"/"}}},qo=(0,l.Z)(Bo,[["render",jo],["__scopeId","data-v-0fb3dc1b"]]),No=qo;var Uo={class:"row color-black color-white-darkmode type-small"},Ko={class:"bg-white bg-grey-dark-darkmode card p-medium"},zo={class:"bg-white-darkmode rounded"},Ho=["href"],Go=["innerHTML"];function $o(e,t,o,r,a,n){return(0,i.wg)(),(0,i.iD)("div",Uo,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(n.columns,(function(t,o){return(0,i.wg)(),(0,i.iD)("div",{key:o,class:(0,u.C_)(3===n.columns.length?"col-sm-4":"col-sm-12")},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(t,(function(t){return(0,i.wg)(),(0,i.iD)("div",{key:t.name,class:(0,u.C_)(["mb-small",[3===n.columns.length&&0===o?"pr-small":"",3===n.columns.length&&1===o?"pr-xsmall pl-xsmall":"",3===n.columns.length&&2===o?"pl-small":""]])},[(0,i._)("div",Ko,[(0,i._)("div",zo,[(0,i._)("a",{href:t.href},[(0,i._)("div",{class:"img-container mb-small",style:(0,u.j5)("background-image: url(".concat(e.publicPath,"img/sponsors/").concat(t.img,")"))},null,4)],8,Ho)]),(0,i._)("div",{innerHTML:t.description},null,8,Go)])],2)})),128))],2)})),128))])}const Zo={name:"SponsorsDetailed",data:function(){return{publicPath:"/",columnAmount:3}},computed:{columns:function(){return 3===this.columnAmount?[this.$tm("resourcesList.sponsors").filter((function(e,t){return t%3===0})),this.$tm("resourcesList.sponsors").filter((function(e,t){return t%3===1})),this.$tm("resourcesList.sponsors").filter((function(e,t){return t%3===2}))]:[this.$tm("resourcesList.sponsors")]}},created:function(){window.addEventListener("resize",this.calculateColumnAmount),this.calculateColumnAmount()},beforeUnmount:function(){window.removeEventListener("resize",this.calculateColumnAmount)},methods:{calculateColumnAmount:function(){window.innerWidth<450?this.columnAmount=1:this.columnAmount=3}}},Vo=(0,l.Z)(Zo,[["render",$o],["__scopeId","data-v-fb75dab4"]]),Jo=Vo;var Yo=(0,i._)("a",{href:"https://github.com/robotframework/robotframework/milestones",target:"_blank"},[(0,i._)("h3",{class:"type-center color-theme"}," Development milestones ")],-1),Xo={class:"col-sm-12 ml-2xsmall"},Qo={class:"card bg-white color-black p-small"},er={class:"row between middle"},tr=["href"],or={class:"type-large"},rr={class:"type-small"},ar={key:0,class:"type-small type-italic border-bottom-theme border-thin pb-small description-container"},ir=["id","innerHTML"],nr=["onClick"],sr={key:1,class:"type-small"},lr=(0,i._)("h4",{class:"mt-small"}," Issues ",-1),cr={class:"row"},dr={class:"col-sm-6 pr-3xsmall"},mr=["onClick"],ur={class:"col-sm-6 pl-3xsmall"},pr=["onClick"],hr=["innerHTML"],br=["href"],gr=["onClick"],_r=(0,i._)("div",{class:"type-right type-small mt-medium"}," * Release dates due to change ",-1);function fr(e,t,o,r,n,s){var l=(0,i.up)("new-tab-icon");return(0,i.wg)(),(0,i.iD)("div",{class:(0,u.C_)(["bg-grey-dark-darkmode pt-medium pb-medium",e.$store.state.isMobile?"p-xsmall":"p-small"])},[Yo,((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(["open","closed"],(function(e){return(0,i._)("div",{key:e,class:"row"},[(0,i._)("h4",Xo,(0,u.zw)(e),1),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(s.milestonesSorted[e],(function(t){var o,r;return(0,i.wg)(),(0,i.iD)("div",{key:t.id,class:"col-sm-12 col-md-6 col-lg-4 pl-2xsmall pr-2xsmall mb-small"},[(0,i._)("div",Qo,[(0,i._)("div",er,[(0,i._)("a",{href:t.html_url,target:"_blank"},[(0,i._)("h4",or,(0,u.zw)(t.title),1)],8,tr),(0,i._)("div",rr,["closed"===e?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[(0,i.Uk)(" released: "+(0,u.zw)(s.format(new Date(t.closed_at),"MMM dd yyyy")),1)],64)):t.due_on?((0,i.wg)(),(0,i.iD)(i.HY,{key:1},[(0,i.Uk)(" target: "+(0,u.zw)(s.format(new Date(t.due_on),"MMM dd yyyy")),1)],64)):((0,i.wg)(),(0,i.iD)(i.HY,{key:2},[(0,i.Uk)(" target open ")],64))])]),""!==t.description?((0,i.wg)(),(0,i.iD)("div",ar,[(0,i._)("div",{id:"milestone-".concat(t.id,"-description"),innerHTML:s.parseDescription(t.description),class:(0,u.C_)(["milestone-description mt-small",t.descriptionExpanded?"expanded":""])},null,10,ir),t.descriptionExpanded?(0,i.kq)("",!0):((0,i.wg)(),(0,i.iD)("button",{key:0,class:"type-small weight-bold type-underline color-black",onClick:function(e){return t.descriptionExpanded=!0}}," Expand ",8,nr))])):(0,i.kq)("",!0),t.issues.items.length?((0,i.wg)(),(0,i.iD)("div",sr,[lr,(0,i._)("div",cr,[(0,i._)("div",dr,[(0,i._)("button",{class:(0,u.C_)(["theme type-xsmall w-100 type-center",(o={},(0,Le.Z)(o,"active","open"===t.issuesTab),(0,Le.Z)(o,"disabled",0===t.open_issues),o)]),style:{padding:"0.5rem 0.5rem"},onClick:function(e){return t.issuesTab="open"}}," Open ("+(0,u.zw)(t.open_issues)+") ",11,mr)]),(0,i._)("div",ur,[(0,i._)("button",{class:(0,u.C_)(["theme type-xsmall w-100 type-center",(r={},(0,Le.Z)(r,"active","closed"===t.issuesTab),(0,Le.Z)(r,"disabled",0===t.closed_issues),r)]),style:{padding:"0.5rem 0.5rem"},onClick:function(e){return t.issuesTab="closed"}}," Closed ("+(0,u.zw)(t.closed_issues)+") ",11,pr)])]),(0,i.Wm)(a.uT,{name:"opacity",mode:"out-in"},{default:(0,i.w5)((function(){return[((0,i.wg)(),(0,i.iD)("div",{class:"row mt-xsmall",key:t.issuesTab},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(t.issues.items.filter((function(e){var o=e.state;return t.issuesTab===o})).slice(0,t.issuesExpanded?void 0:3),(function(e){return(0,i.wg)(),(0,i.iD)("div",{key:e.id,class:"card w-100 flex issue-card mb-xsmall type-small p-2xsmall"},[(0,i._)("div",{innerHTML:s.parseIssueDescription(e.title),style:{width:"calc(100% - 1.5rem)"}},null,8,hr),(0,i._)("a",{class:"mt-3xsmall",href:e.html_url,target:"_blank"},[(0,i.Wm)(l,{color:"theme",size:"1.25rem"})],8,br)])})),128)),!t.issuesExpanded&&t.issues.items.filter((function(e){var o=e.state;return t.issuesTab===o})).length>3?((0,i.wg)(),(0,i.iD)("button",{key:0,class:"type-small weight-bold type-underline ml-2xsmall color-black",onClick:function(e){return t.issuesExpanded=!0}}," Show all ",8,gr)):(0,i.kq)("",!0)]))]})),_:2},1024)])):(0,i.kq)("",!0)])])})),128))])})),64)),_r],2)}var wr=o(41472);const yr=(0,l.Z)(wr.Z,[["render",fr]]),kr=yr;var vr=["src"];function Rr(e,t,o,r,a,n){return(0,i.wg)(),(0,i.iD)("div",null,[(0,i._)("iframe",{style:{width:"100%","aspect-ratio":"16/9"},src:"https://www.youtube.com/embed/"+o.videoId+"?html5=1&enablejsapi=1&autoplay=0&rel=0&showinfo=0&modestbranding=1&controls=1&autohide=0&vq=large",frameborder:"0",allowfullscreen:""},"\n ",8,vr)])}const Dr={name:"VideoComponent",props:{videoId:String}},Er=(0,l.Z)(Dr,[["render",Rr]]),Tr=Er;o(44479),o(90887);const Cr={name:"App",components:{VideoComponent:Tr,RoboconBanner:ae,Banner:V,PageFooter:Ee,Navbar:Ze,NavMobile:wt,PageSection:Ct,News:N,CommunityItems:Kt,ResourceBox:_o,TabBox:So,Sponsors:No,Milestones:kr,MonacoEditor:(0,i.RC)((function(){return Promise.all([o.e(591),o.e(251)]).then(o.bind(o,51251))}))}},Pr=(0,l.Z)(Cr,[["render",k],["__scopeId","data-v-0ed9c1fe"]]),Ar=Pr;var Fr={class:"container mb-3xlarge"},xr={class:"col-lg-offset-3 pt-large"},Sr={class:"mt-small"},Ir={href:"https://testcon.lt/"},Or=["src"],Mr=(0,i._)("i",null,"Robot Framework Foundation is going to TestCon - come say hi!",-1),Lr=["innerHTML"];function Wr(e,t,o,r,a,n){var s=(0,i.up)("navbar-sub-page"),l=(0,i.up)("VideoComponent"),c=(0,i.up)("page-section"),d=(0,i.up)("sponsors-detailed"),m=(0,i.up)("page-footer");return(0,i.wg)(),(0,i.iD)("div",null,[(0,i.Wm)(s,{title:"Foundation"}),(0,i._)("div",Fr,[(0,i._)("div",xr,[(0,i._)("div",Sr,[(0,i._)("a",Ir,[(0,i._)("img",{src:"".concat(e.publicPath,"img/TestCon-banner.png"),style:{"max-width":"100%"}},null,8,Or)]),Mr])]),(0,i._)("div",{class:"col-sm-12 col-lg-9 col-lg-offset-3",innerHTML:e.$t("foundation.lead")},null,8,Lr),(0,i.Wm)(l,{videoId:"jlhgitypC5Q",class:"col-sm-12 col-lg-9 col-lg-offset-3"}),(0,i.Wm)(c,{"title-id":"benefits-and-cost",title:e.$t("foundation.benefitsAndCost.title"),body:e.$t("foundation.benefitsAndCost.body")},null,8,["title","body"]),(0,i.Wm)(c,{"title-id":"how-to-join",title:e.$t("foundation.howToJoin.title"),body:e.$t("foundation.howToJoin.body")},null,8,["title","body"]),(0,i.Wm)(c,{"title-id":"what-we-do",title:e.$t("foundation.whatWeDo.title"),body:e.$t("foundation.whatWeDo.body")},{default:(0,i.w5)((function(){return[(0,i.Wm)(d,{class:"col-sm-12 col-lg-9 col-lg-offset-3"})]})),_:1},8,["title","body"])]),(0,i.Wm)(m)])}const jr={name:"Foundation",components:{VideoComponent:Tr,NavbarSubPage:tt,PageSection:Ct,SponsorsDetailed:Jo,PageFooter:Ee},data:function(){return{publicPath:"/"}}},Br=(0,l.Z)(jr,[["render",Wr]]),qr=Br;var Nr={class:"container mb-3xlarge"},Ur={class:"container narrow mt-large",ref:"tabs"},Kr=["innerHTML"],zr={class:"mb-none mt-small"},Hr={class:"type-italic type-small mb-small"},Gr=["href"],$r={class:"type-small mb-small"};function Zr(e,t,o,r,a,n){var s=(0,i.up)("navbar-sub-page"),l=(0,i.up)("tab-box"),c=(0,i.up)("page-section"),d=(0,i.up)("page-footer");return(0,i.wg)(),(0,i.iD)("div",null,[(0,i.Wm)(s,{title:"RPA"}),(0,i._)("div",Nr,[(0,i._)("div",Ur,[(0,i._)("div",{innerHTML:e.$t("rpa.hero.description")},null,8,Kr),(0,i.Wm)(l,{tabs:e.$tm("rpa.hero.tabs"),"default-tab":e.defaultTab},null,8,["tabs","default-tab"])],512),(0,i.Wm)(c,{"long-title":"","title-id":"intro",title:e.$t("rpa.intro.title"),body:e.$t("rpa.intro.body")},null,8,["title","body"]),(0,i.Wm)(c,{"long-title":"","title-id":"benefits",title:e.$t("rpa.benefits.title"),body:e.$t("rpa.benefits.body")},null,8,["title","body"]),(0,i.Wm)(c,{"long-title":"","title-id":"quickstart",title:e.$t("rpa.quickstart.title"),body:e.$t("rpa.quickstart.body")},null,8,["title","body"]),(0,i.Wm)(c,{"long-title":"","title-id":"resources",title:e.$t("rpa.resources.title"),body:e.$t("rpa.resources.body")},{default:(0,i.w5)((function(){return[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(["tooling","libraries","tutorials"],(function(t){return(0,i._)("div",{key:t,class:"col-sm-12 col-lg-9 col-lg-offset-3"},[(0,i._)("h3",zr,(0,u.zw)(e.$t("rpa.resources.".concat(t,".title"))),1),(0,i._)("div",Hr,(0,u.zw)(e.$t("rpa.resources.".concat(t,".description"))),1),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.$tm("rpa.resources.".concat(t,".list")),(function(e){return(0,i.wg)(),(0,i.iD)("div",{key:e.name},[(0,i._)("a",{class:"block line-height-small",href:e.href},(0,u.zw)(e.name),9,Gr),(0,i._)("div",$r,(0,u.zw)(e.description),1)])})),128))])})),64))]})),_:1},8,["title","body"])]),(0,i.Wm)(d)])}const Vr={name:"RPA",components:{NavbarSubPage:tt,PageSection:Ct,PageFooter:Ee,TabBox:So},data:function(){return{defaultTab:0}},created:function(){window.navigator.userAgentData.platform.toLowerCase().includes("mac")&&(this.defaultTab=1),window.navigator.userAgentData.platform.toLowerCase().includes("linux")&&(this.defaultTab=2)},mounted:function(){this.$refs.tabs.addEventListener("click",(function(e){var t=e.target;if(t.classList.contains("icon-copy")){var o=new Blob([t.nextElementSibling.innerText],{type:"text/plain"}),r=new window.ClipboardItem({"text/plain":o});navigator.clipboard.write([r]).then((function(){t.classList.add("copied")}))}}))}},Jr=(0,l.Z)(Vr,[["render",Zr]]),Yr=Jr;var Xr={class:"container mb-3xlarge"},Qr=["innerHTML"];function ea(e,t,o,r,a,n){var s=(0,i.up)("navbar-sub-page"),l=(0,i.up)("VideoComponent"),c=(0,i.up)("page-footer");return(0,i.wg)(),(0,i.iD)("div",null,[(0,i.Wm)(s,{title:"TestAutomation"}),(0,i._)("div",Xr,[(0,i._)("div",{class:"col-sm-12 col-lg-9 col-lg-offset-3",innerHTML:e.$t("testautomation.lead")},null,8,Qr),(0,i.Wm)(l,{videoId:"0q4-AjqpO9M"}),(0,i.Wm)(l,{videoId:"SypNjILTRl0"}),(0,i.Wm)(l,{videoId:"mSR-HPCBeEQ"}),(0,i.Wm)(l,{videoId:"PFqmZ5GwXgg"}),(0,i.Wm)(l,{videoId:"g98m3XpE8gw"}),(0,i.Wm)(l,{videoId:"Ju90-ewW_gM"})]),(0,i.Wm)(c)])}const ta={name:"TestAutomation",components:{VideoComponent:Tr,NavbarSubPage:tt,PageFooter:Ee}},oa=(0,l.Z)(ta,[["render",ea]]),ra=oa;var aa={class:"container narrow pl-small pr-small"},ia={class:"row mb-large mt-large"},na=(0,i.uE)('

Robot Framework Privacy Policy

This Privacy Policy is applicable to the personal data processed by Robot Framework Foundation("Robot Framework" or "we") relating to the users of the Robot Framework website and the Robocon website (hereinafter jointly refered to as “Service”)

This Privacy Policy is also applicable to personal data processed by Robot Framework in regard to the representatives of our member organizations and other partners, including personal data collected in connection to our marketing activities and events. All of the aforementioned data subjects are hereinafter collectively referred to as “Users” or “you.”

The purpose of this Privacy Policy is to provide you with information about the processing of yourpersonal data in accordance with the General Data Protection Regulation 2016/679 (GDPR).

Please note that this Privacy Policy only applies to processing carried out by Robot Frameworkas a data controller. This Privacy Policy does not address, and we are not responsible for, the privacy and data processing practices of any third parties.

In regard to Robot Framework documentation available via Github, Github acts as the datacontroller for any user information. For more information, please see the Github Privacy Statement. The payment transactions for purchases of Robot Framework gear are facilitated via the Reddy platform. For more information please see the Reddy Privacy Statement.

This Privacy Policy may be updated if required in order to reflect the changes in data processing practices or otherwise. The current version can be found on our website. We will not make substantial changes to this Privacy Policy or reduce your rights under this Privacy Policy without providing a notice thereof.

CONTACT DETAILS

Robot Framework Ry
Business ID: 2754775-1
Pohjoinen Rautatiekatu 25, 00100 Helsinki https://robotframework.org/
Contact person: René Rohner, Chairman of The Board, +49 173 7089491
chair@robotframework.org

PERSONAL DATA PROCESSED AND SOURCES OF DATA

We collect two types of information concerning our Users: (i) User Data; and (ii) Analytics Data.

User Data is primarily received directly from you either in connection to your use of the Service or in connection to your interaction with us. In certain cases your personal data may also be directly provided to us by the company or organization you represent.

Analytics Data is collected automatically as you use the Service. Although we do not normally use Analytics Data to identify individuals, sometimes individuals can be recognized from it, either alone or when combined or linked with other data. In such situations, Analytics Data shall also be considered to be personal data under applicable laws and we will treat the combined data as personal data.

User Data and Analytics Data typically consist of the following categories of data:

User Data

  • Name;
  • Organisation and work title;
  • Contact information (such as email address, postal address and phone number);
  • Any direct correspondence with Robot Framework;
  • Information relating to your participation to our events, such as event registrations, attendance and cancellations, event feedback and special dietary restrictions you may provide;
  • Purchase and delivery information for orders of Robot Framework gear;
  • Direct marketing opt-outs and opt-ins.

Analytics Data

  • IP address;
  • Device type and model;
  • Operating system;
  • Time of visit;
  • Browser type and version;
  • Language settings.

COOKIES AND ANALYTICS TOOLS

We use various technologies to collect and store Analytics Data and other information when you visit our Service, including cookies. These technologies are also used to integrate our social media accounts with the Service.

Cookies are small text files sent and saved on your device that allow us to identify visitors of our websites and facilitate the use of our Service and to create aggregate information of our visitors. The cookies will not harm your device or files. We may use cookies to tailor and improve our Service.

Users may choose to set their web browser to refuse cookies, or to alert when cookies are being sent. For example, the following links provide information on how to adjust the cookie settings on some popular browsers:

Please note that some parts of our Service may not function properly if the use of cookies is refused. We use Google Analytics to compile Analytics Data and reports on visitor usage. For an overview of Google Analytics, please visit Google Analytics It is possible to opt-out of Google Analytics with the following browser add-on tool: Google Analytics opt-out add-on.

PURPOSES AND LEGITIMATE GROUNDS OF PROCESSING

  • Purposes of processing
  • To provide our Service and to carry out our contractual obligations (legal ground: performance of a contract and legitimate interest)
    We process personal data to be able to offer the Service to our Users and to run and maintain our operations. Personal data may be processed in order to carry out our contractual obligations towards the individual User or towards the organization the User represents. We may use the data for example to process member applications or to process orders of Robot Framework gear. For our legal obligations (legal ground: compliance with a legal obligation)
    We process personal data to enable us to administer and fulfil our obligations under law. This includes data processed for complying with our accounting obligations and providing information to relevant authorities. For claims handling and legal processes (legal ground: legitimate interest)
    We may process personal data in relation to claims handling, debt collection and legal processes. We may also process data for the prevention of fraud, misuse of our ervices and for data, system and network security.
    For communication and marketing (legal ground: legitimate interest)
    We may process personal data for the purpose of contacting our Users regarding our Service and events and for informing Users of changes in our Service, overall operations or updates to the documentation and tools we provide. We may also process personal data for direct marketing purposes, for example in the form of sending newsletters.
    For quality improvement and trend analysis (legal ground: legitimate interest)
    We may process information regarding your use of the Service to improve the quality of our Service, for example by analysing any trends in the use of our Service. Similarly we may process any feedback provided by you to improve our operations in general. Where possible, we will do this using only aggregated, non-personally identifiable data.
  • Legal grounds for processing
  • We primarily process personal data on a contractual basis. For individuals acting asrepresentatives of our customer or partner organizations, personal data is primarilyprocessed based on our legitimate interest whilst fulfilling our contractual obligationstowards the organisations they represent.
  • We may also process personal data based on our legitimate interests, for example in connection with analytics and marketing. When choosing to use your data on the basis of our legitimate interests, we carefully weigh our own interests against your right to privacy.
  • In certain cases you may be requested to grant your consent for the processing of your personal data. In this event, the legal ground for such processing is your consent. You may withdraw your consent at any time.

INTERNATIONAL TRANSFERS

Robot Framework stores personal data primarily within the European Economic Area. However, we have service providers in several geographical locations. As such, we, our service providers may transfer personal data to, or access it in, jurisdictions outside the European Economic Area or outside of your domicile.

We will take steps to ensure that your personal data receives an adequate level of protection in the jurisdictions in which it is processed. We provide adequate protection for the transfers of personal data to countries outside of the European Economic Area through a series of agreements with our service providers based on the Standard Contractual Clauses or through other appropriate safeguards, such as the Privacy Shield Framework.

PERSONAL DATA RECIPIENTS

We do not share personal data with third parties outside of Robot Framework’s organizationunless one of the following circumstances applies:

  • For legal reasons
  • We may share personal data with third parties outside of our organization if we have a good-faith belief that access to and use of the personal data is reasonably necessary to: (i) meet any applicable law, regulation, and/or court order; (ii) detect, prevent, or otherwise address fraud, security or technical issues; and/or (iii) protect the interests, property or safety of Robot Framework, our Users or the public in accordance with the law. When possible, we will inform you about such transfer and processing.
  • To authorized service providers
  • We may share personal data to authorized service providers who perform services for us(including data storage, sales, marketing and support services). Our agreements with ourservice providers include commitments that the service providers agree to limit their useof personal data and to comply with privacy and security standards at least as stringentas the terms of this Privacy Policy.
  • For other legitimate reasons
  • If Robot Framework is involved in an acquisition or similar reconstructing, we maytransfer personal data to the third party involved. However, we will continue to ensure theconfidentiality of all personal data. We will give notice to those concerned when thepersonal data are transferred or become subject to a different privacy policy as soon asreasonably possible.
  • With explicit consent
  • We may share personal data with third parties outside of our organization for otherreasons than the ones mentioned before, when we have your explicit consent to do so.You have the right to withdraw this consent at all times.

STORAGE PERIOD

  • Robot Framework does not store personal data longer than is legally permitted and necessary for purposes of providing the Service or the relevant parts thereof, or for another individual purpose for which your personal data is being processed. The storage period depends on the nature of the information and the purposes of processing. The maximum period may therefore vary per use.
  • We will store Analytics Data relating to the Service 50 months

YOUR RIGHTS

  • Right to access
  • You have the right to access your personal data processed by us. You may contact us and we will inform what personal data we have collected and processed regarding you.
  • Right to withdraw consent
  • In case the processing is based on a consent you have granted to us, you may withdraw the consent at any time. Withdrawing a consent may lead to fewer possibilities to use our Service. The withdrawal of consent does not affect the lawfulness of processing based on consent before its withdrawal.
  • Right to rectify
  • You have the right to have incorrect or incomplete personal data we have stored about you corrected or completed by contacting us.
  • Right to erasure
  • You may also ask us to erase your personal data from our systems. We will comply with such request unless we have a legitimate ground to not delete the data.
  • Right to object
  • You have the right to object to certain use of your personal data if such data are processed for other purposes than necessary for the performance of the Service or for compliance with a legal obligation. If you object to the further processing of your personal data, this may lead to fewer possibilities to use the our Service.
  • Right to restriction of processing
  • You may request us to restrict processing of personal data for example when your data erasure, rectification or objection requests are pending and/or when we do not have legitimate grounds to process your data. This may however lead to fewer possibilities to use our Service.
  • Right to data portability
  • You have the right to receive your personal data from us in a structured and commonly used format and to independently transmit those data to a third party.
  • How to use the rights
  • The above mentioned rights may be used by sending a letter or an e-mail to us on the addresses set out above. We may request the provision of additional information necessary to confirm your identity.
  • We reserve the right to reject requests that are unreasonably repetitive, excessive or manifestly unfounded.

DIRECT MARKETING

  • Notwithstanding any consent granted beforehand for the purposes of direct marketing, you have the right to prohibit us from using your personal data for direct marketing purposes, market research and profiling made for direct marketing purposes by contacting us on the addresses indicated above or by using the unsubscribe possibility offered in connection with any direct marketing messages.

INFORMATION SECURITY

  • We use administrative, organizational, technical, and physical safeguards to protect the personal data we collect and process. Our security controls are designed to maintain an appropriate level of data confidentiality, integrity, availability, resilience and ability restore the data. We regularly test our systems, and other assets for security vulnerabilities.
  • Should despite of the security measures, a security breach occur that is likely to have negative effects on your privacy, we will inform you and other affected parties, as well as relevant authorities when required by applicable data protection laws, about the breach as soon as possible.

LODGING A COMPLAINT

  • In case you consider our processing of personal data to be inconsistent with the applicable data protection laws, a complaint may be lodged with the local supervisory authority for data protection.

In Finland, the local supervisory authority is the Data Protection Ombudsman (https://www.tietosuoja.fi).

',2),sa={class:"mb-xlarge"};function la(e,t,o,r,a,n){var s=(0,i.up)("router-link");return(0,i.wg)(),(0,i.iD)("div",aa,[(0,i._)("div",ia,[(0,i.Wm)(s,{to:{name:"Home"}},{default:(0,i.w5)((function(){return[(0,i.Uk)(" Back ")]})),_:1})]),na,(0,i._)("div",sa,[(0,i.Wm)(s,{to:{name:"Home"}},{default:(0,i.w5)((function(){return[(0,i.Uk)(" Back ")]})),_:1})])])}const ca={name:"PrivacyPolicy"},da=(0,l.Z)(ca,[["render",la]]),ma=da;var ua={class:"container narrow mb-xlarge pl-small pr-small"},pa={class:"row mb-large mt-large"},ha=(0,i.uE)('

Robot Framework Code of Conduct

ROBOT FRAMEWORK FOUNDATION is dedicated to providing a harassment-free experience for everyone, regardless of gender, gender identity and expression, sexual orientation, disability, physical appearance, body size, age, race, or religion. We do not tolerate harassment of participants in any form.

This code of conduct applies to all ROBOT FRAMEWORK spaces, both online and off. Anyone who violates this code of conduct may be sanctioned or expelled from these spaces at the discretion of the Robot Framework board.

Some ROBOT FRAMEWORK spaces may have additional rules in place, which will be made clearly available to participants. Participants are responsible for knowing and abiding by these rules. If you are being harassed by a member of ROBOT FRAMEWORK, notice that someone else is being harassed, or have any other concerns, please Contact awareness@robotframework.org.

Harassment includes

  • Offensive comments related to gender, gender identity and expression, sexual orientation, disability, mental illness, neuro(a)typicality, physical appearance, body size, age, race, or religion.
  • Unwelcome comments regarding a person’s lifestyle choices and practices, including those related to food, health, parenting, drugs, and employment.
  • Deliberate misgendering or use of ‘dead’ or rejected names.
  • Gratuitous or off-topic sexual images or behaviour in spaces where they’re not appropriate.
  • Physical contact and simulated physical contact (eg, textual descriptions like “*hug*” or “*backrub*”) without consent or after a request to stop.
  • Threats of violence.
  • Incitement of violence towards any individual, including encouraging a person to commit suicide or to engage in self-harm.
  • Deliberate intimidation.
  • Stalking or following.
  • Harassing photography or recording, including logging online activity for harassment purposes.
  • Sustained disruption of discussion.
  • Unwelcome sexual attention.
  • Pattern of inappropriate social contact, such as requesting/assuming inappropriate levels of intimacy with others
  • Continued one-on-one communication after requests to cease.
  • Deliberate “outing” of any aspect of a person’s identity without their consent except as necessary to protect vulnerable people from intentional abuse.
  • Publication of non-harassing private communication.

ROBOT FRAMEWORK community prioritizes marginalized people’s safety over privileged people’s comfort. The Robot Framework board reserves the right not to act on complaints regarding:

  • ‘Reverse’ -isms, including ‘reverse racism,’ ‘reverse sexism,’ and ‘cisphobia’
  • Reasonable communication of boundaries, such as “leave me alone,” “go away,” or “I’m not discussing this with you.”
  • Communicating in a ‘tone’ you don’t find congenial
  • Criticizing racist, sexist, cissexist, or otherwise oppressive behaviour or assumptions

Reporting

  • If you are being harassed by a member of ROBOT FRAMEWORK, notice that someone else is being harassed, or have any other concerns, please contact awareness@robotframework.org. If the person who is harassing you is on the team, they will recuse themselves from handling your incident. We will respond as promptly as we can.
  • This code of conduct applies to ROBOT FRAMEWORK spaces, but if you are being harassed by a member of ROBOT FRAMEWORK outside our spaces, we still want to know about it. We will take all good-faith reports of harassment by ROBOT FRAMEWORK members seriously. This includes harassment outside our spaces and harassment that took place at any point in time. The abuse team reserves the right to exclude people from ROBOT FRAMEWORK based on their past behaviour, including behaviour outside ROBOT FRAMEWORK spaces and behaviour towards people who are not in ROBOT FRAMEWORK community.
  • In order to protect volunteers from abuse and burnout, we reserve the right to reject any report we believe to have been made in bad faith. Reports intended to silence legitimate criticism may be deleted without response.
  • We will respect confidentiality requests for the purpose of protecting victims of abuse. At our discretion, we may publicly name a person about whom we’ve received harassment complaints, or privately warn third parties about them, if we believe that doing so will increase the safety of ROBOT FRAMEWORK members or the general public. We will not name harassment victims without their affirmative consent.

Consequences

  • Participants asked to stop any harassing behaviour are expected to comply immediately.
  • If a participant engages in harassing behaviour, the Robot Framework board may take any action they deem appropriate, up to and including expulsion from all ROBOT FRAMEWORK spaces and identification of the participant as a harasser to other ROBOT FRAMEWORK members or the general public.
',12),ba={class:"row mb-large mt-large"};function ga(e,t,o,r,a,n){var s=(0,i.up)("router-link");return(0,i.wg)(),(0,i.iD)("div",ua,[(0,i._)("div",pa,[e.cameFromHome?((0,i.wg)(),(0,i.iD)("button",{key:0,onClick:t[0]||(t[0]=function(t){return e.$router.go(-1)}),class:"color-theme type-underline"}," Back ")):((0,i.wg)(),(0,i.j4)(s,{key:1,to:{name:"Home"}},{default:(0,i.w5)((function(){return[(0,i.Uk)(" Back ")]})),_:1}))]),ha,(0,i._)("div",ba,[e.cameFromHome?((0,i.wg)(),(0,i.iD)("button",{key:0,onClick:t[1]||(t[1]=function(t){return e.$router.go(-1)}),class:"color-theme type-underline"}," Back ")):((0,i.wg)(),(0,i.j4)(s,{key:1,to:{name:"Home"}},{default:(0,i.w5)((function(){return[(0,i.Uk)(" Back ")]})),_:1}))])])}const _a={name:"Coc",data:function(){return{cameFromHome:!1}},beforeRouteEnter:function(e,t,o){o((function(e){e.cameFromHome="Home"===t.name}))}},fa=(0,l.Z)(_a,[["render",ga]]),wa=fa;var ya={class:"container mb-xlarge p-small"},ka=["innerHTML"],va={class:"row"},Ra=["href"],Da=["innerHTML"];function Ea(e,t,o,r,n,s){var l=(0,i.up)("navbar-sub-page");return(0,i.wg)(),(0,i.iD)("div",null,[(0,i.Wm)(l,{title:"Users"}),(0,i._)("div",ya,[(0,i._)("h2",null,(0,u.zw)(e.$t("usersPage.title")),1),(0,i._)("p",{innerHTML:e.$t("usersPage.body")},null,8,ka),(0,i._)("div",va,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(s.columns,(function(t,o){return(0,i.wg)(),(0,i.iD)("div",{key:o,class:(0,u.C_)(["p-small","\n col-sm-".concat(12/s.columns.length,"\n ").concat(0===o&&1!==e.columnAmount?"pl-none pr-medium":"pl-small","\n ").concat(o===s.columns.length-1&&1!==e.columnAmount?"pr-none pl-medium":"pr-small")])},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(t,(function(t,r){return(0,i.wg)(),(0,i.iD)("div",{key:t.name},[(0,i.Wm)(a.uT,{appear:"",name:"opacity-slow"},{default:(0,i.w5)((function(){return[(0,i._)("div",{class:"card p-small mb-large bg-white user-card",style:(0,u.j5)("transition-delay: ".concat((r/10+o/s.columns.length/10)*s.columns.length+.1,"s;"))},[(0,i._)("div",{class:"img-container mb-small",style:(0,u.j5)("background-image: url(".concat(e.publicPath,"img/users/").concat(t.imgName,")"))},null,4),(0,i._)("h3",null,[(0,i._)("a",{href:t.href,target:"_blank"},(0,u.zw)(t.title),9,Ra)]),(0,i._)("p",{innerHTML:t.text},null,8,Da)],4)]})),_:2},1024)])})),128))],2)})),128))])])])}const Ta={name:"Users",components:{NavbarSubPage:tt},data:function(){return{publicPath:"/",columnAmount:4,cameFromHome:!1}},computed:{columns:function(){return 4===this.columnAmount?[this.$tm("resourcesList.users").filter((function(e,t){return t%4===0})),this.$tm("resourcesList.users").filter((function(e,t){return t%4===1})),this.$tm("resourcesList.users").filter((function(e,t){return t%4===2})),this.$tm("resourcesList.users").filter((function(e,t){return t%4===3}))]:3===this.columnAmount?[this.$tm("resourcesList.users").filter((function(e,t){return t%3===0})),this.$tm("resourcesList.users").filter((function(e,t){return t%3===1})),this.$tm("resourcesList.users").filter((function(e,t){return t%3===2}))]:2===this.columnAmount?[this.$tm("resourcesList.users").filter((function(e,t){return t%2===0})),this.$tm("resourcesList.users").filter((function(e,t){return t%2===1}))]:[this.$tm("resourcesList.users")]}},created:function(){window.addEventListener("resize",this.calculateColumnAmount),this.calculateColumnAmount(),window.history.replaceState(null,null,null)},beforeUnmount:function(){window.removeEventListener("resize",this.calculateColumnAmount)},beforeRouteEnter:function(e,t,o){o((function(e){e.cameFromHome="Home"===t.name}))},methods:{calculateColumnAmount:function(){window.innerWidth<450?this.columnAmount=1:window.innerWidth<900?this.columnAmount=2:window.innerWidth<1300?this.columnAmount=3:this.columnAmount=4}}},Ca=(0,l.Z)(Ta,[["render",Ea],["__scopeId","data-v-acaa66fe"]]),Pa=Ca;function Aa(e,t,o,r,a,n){var s=(0,i.up)("navbar-sub-page"),l=(0,i.up)("editor");return(0,i.wg)(),(0,i.iD)("div",null,[(0,i.Wm)(s,{title:"Code Playground"}),(0,i.Wm)(l)])}const Fa={name:"CodeEditor",components:{NavbarSubPage:tt,Editor:(0,i.RC)((function(){return Promise.all([o.e(591),o.e(251)]).then(o.bind(o,51251))}))}},xa=(0,l.Z)(Fa,[["render",Aa]]),Sa=xa;function Ia(e,t,o,r,a,n){var s=(0,i.up)("editor");return(0,i.wg)(),(0,i.iD)("div",null,[(0,i.Wm)(s)])}const Oa={name:"EmbeddedEditor",components:{Editor:(0,i.RC)((function(){return Promise.all([o.e(591),o.e(706)]).then(o.bind(o,27706))}))}},Ma=(0,l.Z)(Oa,[["render",Ia]]),La=Ma;var Wa={class:"login-form-container"},ja={key:0,class:"login-form"},Ba=["src"],qa=["src"],Na={key:1},Ua={key:2};function Ka(e,t,o,r,n,s){return(0,i.wg)(),(0,i.iD)("div",Wa,[e.invalid||e.valid?(0,i.kq)("",!0):((0,i.wg)(),(0,i.iD)("form",ja,[e.isDarkMode?((0,i.wg)(),(0,i.iD)("img",{key:0,src:"".concat(e.publicPath,"img/RF-white.svg"),class:"small-robot"},null,8,Ba)):((0,i.wg)(),(0,i.iD)("img",{key:1,src:"".concat(e.publicPath,"img/RF.svg"),class:"small-robot"},null,8,qa)),(0,i._)("label",null,[(0,i.Uk)("Username"),(0,i.wy)((0,i._)("input",{type:"text","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.username=t})},null,512),[[a.nr,e.username]])]),(0,i._)("label",null,[(0,i.Uk)("Password"),(0,i.wy)((0,i._)("input",{type:"password","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.password=t})},null,512),[[a.nr,e.password]])]),(0,i._)("input",{type:"submit",value:"Login",onClick:t[2]||(t[2]=function(){return s.checkUsernameAndPassword&&s.checkUsernameAndPassword.apply(s,arguments)})})])),e.invalid?((0,i.wg)(),(0,i.iD)("span",Na,"No humans allowed!")):(0,i.kq)("",!0),e.valid?((0,i.wg)(),(0,i.iD)("span",Ua,"I salute you, Robot overloard!")):(0,i.kq)("",!0)])}const za={name:"Demoapp",data:function(){return{publicPath:"/",isDarkMode:!1,username:"",password:"",invalid:!1,valid:!1}},created:function(){this.isDarkMode=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches},methods:{checkUsernameAndPassword:function(e){"robot"===this.username&&"overloard"===this.password?this.valid=!0:this.invalid=!0,document.title="Robots rule",e.preventDefault()}}},Ha=(0,l.Z)(za,[["render",Ka],["__scopeId","data-v-6a9ed5b0"]]),Ga=Ha;var $a={class:"container"},Za={class:"row center type-center",style:{"margin-top":"calc(100vh / 2 - 7rem)"}},Va=(0,i._)("div",{class:"col-sm-12"},[(0,i._)("h3",null,"404 - Not found")],-1),Ja=["src"],Ya=["src"],Xa={class:"col-sm-12 mt-medium"};function Qa(e,t,o,r,a,n){var s=(0,i.up)("router-link");return(0,i.wg)(),(0,i.iD)("div",$a,[(0,i._)("div",Za,[Va,e.isDarkMode?((0,i.wg)(),(0,i.iD)("img",{key:0,src:"".concat(e.publicPath,"img/RF-white.svg")},null,8,Ja)):((0,i.wg)(),(0,i.iD)("img",{key:1,src:"".concat(e.publicPath,"img/RF.svg"),class:"mt-small"},null,8,Ya)),(0,i._)("div",Xa,[(0,i.Wm)(s,{to:{name:"Home"}},{default:(0,i.w5)((function(){return[(0,i.Uk)(" Back to home ")]})),_:1})])])])}const ei={name:"NotFound",data:function(){return{publicPath:"/",isDarkMode:!1}},created:function(){window.plausible("404",{props:{path:document.location.pathname}}),this.isDarkMode=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}},ti=(0,l.Z)(ei,[["render",Qa]]),oi=ti;var ri=[{path:"/",name:"Home",component:Ar},{path:"/foundation",name:"Foundation",component:qr},{path:"/rpa",name:"RPA",component:Yr,meta:{title:"RPA"}},{path:"/test-automation",name:"Test Automation",component:ra,meta:{title:"Test Automation"}},{path:"/foundation",name:"Foundation",component:qr,meta:{title:"Foundation"}},{path:"/robot-framework-foundation",redirect:{name:"Foundation"}},{path:"/privacy-policy",name:"PrivacyPolicy",component:ma,meta:{title:"Privacy Policy"}},{path:"/code-of-conduct",redirect:{name:"CoC"}},{path:"/code-of-ethics",name:"CoC",component:wa,meta:{title:"Code of Ethics"}},{path:"/users",name:"Users",component:Pa,meta:{title:"Users"}},{path:"/code",name:"Code",component:Sa,meta:{title:"Playground"}},{path:"/embed",name:"Embed",component:La,meta:{title:"EmbeddedCode"}},{path:"/demoapp",name:"DemoApp",component:Ga},{path:"/:pathMatch(.*)*",name:"NotFound",component:oi,meta:{title:"404"}}],ai=(0,m.p7)({history:(0,m.PO)(),routes:ri,scrollBehavior:function(e,t,o){return o||{top:0}}});ai.afterEach((function(e,t,o){var r=e.meta.title;return document.title=r?"".concat(r," | Robot Framework"):"Robot Framework",!0}));const ii=ai;var ni=o(33907);const si=(0,ni.MT)({state:{isMobile:null,isTablet:null,isDesktop:null,milestones:[],stars:[]},mutations:{SET_IS_MOBILE:function(e,t){e.isMobile=t},SET_IS_TABLET:function(e,t){e.isTablet=t},SET_IS_DESKTOP:function(e,t){e.isDesktop=t},SET_VALUE:function(e,t){var o=t.key,r=t.value;e[o]=r}},actions:{},modules:{}});var li=o(85845),ci=o(30837),di=o(66246);const mi=function(){return{foundation:{lead:'

Robot Framework Foundation is a non-profit consortium that fosters the growth of Robot Framework.\n It was founded by companies with a common interest to ensure the development of Robot Framework now and in\n the future. We are always looking for new members to join.

',benefitsAndCost:{title:"Benefits and cost",body:'

When your company becomes a member you will:

\n
    \n
  1. Ensure Robot Framework is maintained and developed
  2. \n
  3. Get visibility about your membership for your company if you wish
  4. \n
  5. Gain ability to participate in decision making
  6. \n
  7. Get all this for an affordable price per user
  8. \n
\n

Annual Fees

\n

Annual fee is determined by how many Robot Framework users are in your organization:

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
UsersFee
1-2500€
3-101500€
11-503000€
51-2506000€
251-12000€
'},howToJoin:{title:"How to join",body:"

If you'd like to become a member of Robot Framework Foundation, please

\n
    \n
  1. Fill in the application
  2. \n
  3. Robot Framework Foundation board will make a voting according to our rules
  4. \n
  5. You are added to the webpage and mailing list, when you are accepted
  6. \n
  7. Welcome to make the world of Open Source and Automation better!
  8. \n
\n

If you have any questions related to the membership, please send an email to\n board{at}{'@'}{at}robotframework.org\n and we will get back to you.

\n

For existing members

\n

If your contact person changes and for other such matters, please contact admin{at}{'@'}{at}robotframework.org

\n "},whatWeDo:{title:"What we do",body:'

We sponsor the development of Robot Framework. Sponsoring other projects in the wider\n Robot Framework ecosystem can also be considered. We take care of the overall Robot Framework infrastructure\n including public websites, email lists and CI servers. We promote Robot Framework by organizing meetups and\n the yearly conference RoboCon.\n
Read more..

\n

Robot Framework Foundation Members

'}}}},ui=function(){return{rpa:{hero:{description:'\n

\n Get started in seconds with Robot Framework RPA\n

\n

\n Here´s how you set up your first RPA project\n

',tabs:[{name:"Windows",description:'\n
curl -o rcc.exe https://downloads.robocorp.com/rcc/releases/latest/windows64/rcc.exe\n  rcc create example\n  cd example\n  rcc run
'},{name:"macOS",description:'\n
brew install robocorp/tools/rcc\n  rcc create example\n  cd example\n  rcc run
'},{name:"Linux",description:'\n
curl -o rcc https://downloads.robocorp.com/rcc/releases/latest/linux64/rcc\n  chmod a+x rcc\n  rcc create example\n  cd example\n  rcc run
'}]},intro:{title:"What is Robot Framework RPA?",body:"

RPA stands for Robotic Process Automation and it’s a method for automating routine\n tasks and processes through user interfaces, APIs, and other interactions that mimic the way\n a human user performs tasks. The power of RPA lies in how you can automate tasks without having\n to change the underlying systems.

\n\n

Robot Framework is a keyword-driven automation framework that sits on top of Python. It is an\n abstraction that lets you write powerful automations with simple human-readable commands and minimum overhead.

\n\n

The power of Robot Framework comes from its ecosystem of tools, libraries, and community. It is\n the world’s most popular and widely used framework for open-source RPA.

"},benefits:{title:"Why use it and what can you do with it?",body:"

Robot Framework and its ecosystem projects are 100% free and open-source. It is used\n by thousands of developers worldwide and the core Robot Framework is supported by dozens of\n companies through the Robot Framework foundation. Hundreds of companies globally offer support\n and services in the Robot Framework ecosystem.

\n\n

Robot Framework is natively extendable through libraries that are built on Python.\n Creating new extensions is extremely simple, so you never run out of capabilities. Community-built\n libraries around Robot Framework provide the functionality to perform virtually any RPA task imaginable.

\n\n

There are literally tens of thousands of use-cases for RPA with Robot Framework. Anything\n from automating financial processes like accounts payable, order to cash, procure to pay,\n to healthcare applications around electronic health records, or HR applications such as new employee\n onboarding. You can complete any routine task that a human would do through digital workers built on the Robot Framework.

"},quickstart:{title:"Quickstart",body:'

Quickstart is still work in progress and will be released later this year.\n Meanwhile, check User Guide for general task creation instructions!

'},resources:{title:"Resources",body:"

Robot Framework itself provides the language to describe automations. To create an RPA\n bot with Robot Framework, you’ll combine tooling (develop, package, run) with libraries (bot capabilities.)\n This list is a collection of RPA resources to get you started

",tooling:{title:"Tooling",description:"Tools for developing and running bots with Robot Framework",list:[{name:"RCC",href:"https://github.com/robocorp/rcc#readme",description:"Toolchain for creating, packaging, and running bots with Robot Framework and Python"},{name:"Robot Framework Language Server for VS Code",href:"https://marketplace.visualstudio.com/items?itemName=robocorp.robotframework-lsp",description:"VS Code extension for Robot Framework language"},{name:"RCC features for VS Code",href:"https://marketplace.visualstudio.com/items?itemName=robocorp.robocorp-code",description:"VS Code extension for RCC"}]},libraries:{title:"Libraries",description:"RPA focused / useful libraries",list:[{name:"RPA framework",href:"https://rpaframework.org",description:"Common RPA functionality in a single library - includes desktop, browser, Excel, PDF, email, and many more capabilities"},{name:"Playwright",href:"https://robotframework-browser.org",description:"Powerful browser automation library utilizing Playwright. It comes with a built-in browser."},{name:"SAP GUI Library",href:"https://github.com/frankvanderkuur/robotframework-sapguilibrary",description:"GUI automation for SAP"},{name:"Mainframe 3270 Library",href:"https://github.com/Altran-PT-GDC/Robot-Framework-Mainframe-3270-Library",description:"Automating 3270 mainframes"},{name:"DataDriver Libary",href:"https://github.com/Snooz82/robotframework-datadriver",description:"Data-driven automation through tables (csv, xls, xlsx, etc.)"}]},tutorials:{title:"Examples and tutorials for RPA",description:"",list:[{name:"Robocorp Portal",href:"https://robocorp.com/portal/",description:"Examples and templates for RPA projects"},{name:"Robocorp RPA certifications",href:"https://robocorp.com/docs/courses",description:"Robocorp certification trainings for RPA (free)"}]}}}}},pi=function(){return{testautomation:{lead:'

"In software testing, test automation is the use of software separate from the software being tested to control the execution of tests and the comparison of actual outcomes with predicted outcomes. Test automation can automate some repetitive but necessary tasks in a formalized testing process already in place, or perform additional testing that would be difficult to do manually. Test automation is critical for continuous delivery and continuous testing." - Wikipedia

Here are some examples of Robot Framework usage in test automation from robocons:

'}}},hi=function(){return(0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({},mi()),ui()),pi()),{},{langName:"English",newsBanner:"",navbar:{items:[{name:"Getting started",id:"getting-started"},{name:"Resources",id:"resources"},{name:"Community",id:"community"},{name:"Development",id:"development"}],dropdownDocs:{name:"Docs",items:[{name:"Guides (new)",url:"https://docs.robotframework.org/docs",description:"How to start"},{name:"User Guide",url:"https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html",description:"All features explained"},{name:"BuiltIn Library",url:"https://robotframework.org/robotframework/latest/libraries/BuiltIn.html",description:"Always available keywords"},{name:"Standard Libraries",url:"https://robotframework.org/robotframework/#standard-libraries",description:"Keyword documentation"},{name:"Public API",url:"https://robot-framework.readthedocs.io/en/stable/",description:"Build RF extensions"}]}},introduction:{title:"Introduction",body:'Robot Framework is a generic open source automation framework.\n It can be used for test automation and robotic process automation (RPA).

\n\n Robot Framework is supported by Robot Framework Foundation.\n Many industry-leading companies use the tool in their software development.

\n\n Robot Framework is open and extensible. Robot Framework can be integrated with virtually any\n other tool to create powerful and flexible automation solutions.\n Robot Framework is free to use without licensing costs.

\n\n Robot Framework has an easy syntax, utilizing human-readable keywords. Its capabilities can be extended\n by libraries implemented with Python, Java or many other programming languages.\n Robot Framework has a rich ecosystem around it, consisting of libraries and tools that are developed as separate projects.',usedByTitle:"Robot Framework is used by...",companies:[{name:"ABB",description:"ABB is using Robot Framework in software development for testing distribution automation related configuration tools, web interfaces and embedded devices.",imgName:"ABB.svg"},{name:"Cisco",description:"Cisco’s Customer Experience (CX) supports the testing & validation of Cisco and 3rd party solutions deployed by our customers. This includes Solution Validation Services (SVS) delivered both on Cisco-premise and customer-premise.",imgName:"Cisco.svg"},{name:"Condé Nast",description:'Condé Nast transformed their quality assurance for their brand sites, such as Brides, Wired and Architectural Digest, from an entirely manual process to automated one with Robot Framework.',imgName:"Condé_Nast.svg"},{name:"KONE",description:"KONE is widely using Robot Framework in software development for testing embedded systems in elevators and escalators.",imgName:"Kone.svg"},{name:"Finnair",description:"Finnair is using Robot Framework to support Finnair digital platform development.",imgName:"Finnair.svg"},{name:"Finnish Tax Administration",description:"Finnish Tax Administration is using Robot Framework in multiple projects.\n Robot Framework is one of the core tools in their development to make Quality Assurance and Automation.",imgName:"Vero.svg"},{name:"Juniper Networks",description:"Juniper Networks has built an extensive automation framework on top of Robot Framework for end-to-end qualification of Juniper products. It is used extensively in multiple groups including engineering and support.",imgName:"Juniper_Networks.svg"},{name:"Naval Research Laboratory",description:'The Naval Research Laboratory extends Robot Framework to provide a seamless integration with the SAGE multi-agent system. This integration enables Robot Framework to drive distributed simulation and monitoring for test automation of SOA systems.',imgName:"Naval_Research_Laboratory.svg"},{name:"Nokia",description:"Robot Framework was initially developed at Nokia Networks and it is used extensively around the whole company. It is used for testing different devices, software systems and protocols via GUIs, APIs and various other interfaces.",imgName:"Nokia.svg"}]},gettingStarted:{title:"Getting Started",body:'Code is worth a thousand words.\n

Below you\'ll find a live Robot Framework editor with embedded WASM Python environment to run it online.\n Feel free to experiment with it! NOTE: This is the editor\'s first release. If you find bugs,\n please report them in Github issues.

\n

To start using Robot Framework in a project of your own, please check tabs "Install" and "Learn". Also be sure to visit the new Robot Framework Docs!

',tabs:[{name:"Editor"},{name:"Install",description:'\n

Robot Framework is implemented with Python, so you need to have\n Python installed.\n
On Windows machines, make sure to add\n Python to PATH\n during installation.

\n

Installing Robot Framework with pip is simple:\n

pip install robotframework

\n

To check that the installation was successful, run\n

robot --version

\n

For a full guide, please see\n Installation instructions.\n It also covers topics such as running Robot Framework on Jython (JVM) and IronPython (.NET).

\n

Now you are ready to write your first tests!

\n '},{name:"Learn"}]},community:{title:"Community",body:'

Robot Framework has a vibrant community of testing enthusiasts around it. Feel free to\n stop by if you have any questions, need advice or would just like to connect with like-minded people!

\n

There is also an annual RoboCon conference that is hosted in Helsinki, Finland.\n For more information and to watch previous years\' talks, visit\n robocon.io or our\n YouTube Channel.

\n

To support Robot Framework you can find a 👕 T-shirt\n and a ☕ coffee cup\n from our Shop.

\n',links:{forum:{title:"Forum",description:"Official Robot Framework forum."},slack:{title:"Slack",description:'Community team chat.
Click for invite!'}}},resources:{title:"Resources",body:'

Robot Framework is open source and supported by Robot Framework Foundation.\n There is a huge community of contributors around the tool.\n The software is built with expandability in mind and there are numerous ways to extend\n it\'s use cases for various needs.

\n

If you have created or found a library that you think should be listed here, please\n let us know\n by submitting a pull request or an issue. You are also welcome to report unmaintained\n ones that shouldn\'t be listed anymore.',tabs:[{name:"Libraries",key:"libraries",description:'Separately developed external libraries that\n can be installed based on your needs. Creating your own libraries is a breeze. For instructions, see\n \n creating test libraries in Robot Framework User Guide.'},{name:"Built-in",key:"builtin",description:"Libraries and tools that are bundled with the framework. Libraries provide\n the actual automation and testing capabilities to Robot Framework by providing keywords."},{name:"Tools",key:"tools",description:"Supporting tools ease automation: editing, running, building and so on.\n Most of these tools are developed as separate projects, but some are built into the framework itself."}],mobileTitles:["Standard","External"]},development:{title:"Development",body:'

Development of Robot Framework is funded by the non-profit\n Robot Framework Foundation. It consists\n of companies and organizations that want to ensure the continuity of Robot Framework now and\n in the future.

\n

Project is hosted at GitHub

\n

Thanks to the sponsors, Robot Framework remains completely\n free to use while being actively maintained and developed. Foundation also covers other\n related expenses such as the development of this website and organizing various meetups.',sponsorBoxTitle:"Members of Robot Framework Foundation",howToJoin:'How to join'},usersPage:{title:"Users of Robot Framework",body:'If you\'d like your company added here, please submit a\n pull request or an\n issue.'}})},bi=function(){return{langName:"Deutsch",newsBanner:'RF 4.0 is out! Click here for release notes',navbar:{items:["Einführung","Einstieg","Gemeinschaft","Ressourcen"],dropdownName:"Links",dropdown:[{name:"Github",url:"https://github.com/robotframework/robotframework",description:"Source code + issues"},{name:"Forum",url:"http://forum.robotframework.org/",description:"Discuss Robot Framework"},{name:"Foundation",url:"https://robotframework.org/foundation/",description:"Support the development"},{name:"Robocon",url:"https://robocon.io/",description:"Annual conference"},{name:"Shop",url:"https://reddyshop.co/robotframework/",description:"Support the development"},{name:"RPA",url:"https://robotframework.org/rpa/",description:"RPA stuff"}]},introduction:{title:"Introduction",body:"Robot Framework is a generic open source automation framework.\n It can be used for test automation and robotic process automation (RPA).

\n\n Robot Framework is actively supported, with many industry-leading companies using it in their software development.

\n\n Robot Framework is open and extensible and can be integrated with virtually any other tool to create powerful and flexible automation solutions.\n Being open source also means that Robot Framework is free to use without licensing costs.\n Robot Framework has easy syntax, utilizing human-readable keywords. Its capabilities can be extended by libraries implemented with Python or Java.\n The framework has a rich ecosystem around it, consisting of libraries and tools that are developed as separate projects.",companies:[{name:"ABB",description:"ABB is using Robot Framework in software development for testing distribution automation related configuration tools, web interfaces and embedded devices.",imgName:"ABB.svg"},{name:"Cisco",description:"Cisco’s Customer Experience (CX) supports the testing & validation of Cisco and 3rd party solutions deployed by our customers. This includes Solution Validation Services (SVS) delivered both on Cisco-premise and customer-premise as part of a NetDevOps (CI/CD) process where continuous validation accelerates technology adoption, de-risks IT deployments, changes and upgrades, and ensures complex migrations are transparent.",imgName:"Cisco.svg"},{name:"Condé Nast",description:'Condé Nast transformed their quality assurance for their brand sites, such as Brides, Wired and Architectural Digest, from an entirely manual process to automated one with Robot Framework.',imgName:"Condé_Nast.svg"},{name:"KONE",description:"KONE is widely using Robot Framework in software development for testing embedded systems in elevators and escalators.",imgName:"Kone.svg"}]},gettingStarted:{title:"Getting Started",body:"Robot Framework is a generic open source automation framework.\n It can be used for test automation and robotic process automation (RPA).

\n\n Robot Framework is actively supported, with many industry-leading companies using it in their software development.

\n\n Robot Framework is open and extensible and can be integrated with virtually any other tool to create powerful and flexible automation solutions.\n Being open source also means that Robot Framework is free to use without licensing costs.\n Robot Framework has easy syntax, utilizing human-readable keywords. Its capabilities can be extended by libraries implemented with Python or Java.\n The framework has a rich ecosystem around it, consisting of libraries and tools that are developed as separate projects.

\n\n Robot Framework project is hosted on GitHub where you can find further documentation, source code, and issue tracker. Downloads are hosted at PyPI.\n\n Robot Framework is operating system and application independent.\n The core framework is implemented using Python and also runs on Jython (JVM) and IronPython (.NET).

\n\n Robot Framework itself is open source software released under Apache License 2.0, and most of the libraries and tools in the ecosystem are also open source.\n The framework was initially developed at Nokia Networks and was open sourced in 2008."}}},gi=function(){return{langName:"Português",newsBanner:'🎉 RF 4.0 is out! Click here for release notes',navbar:{items:["Introduction","Getting started","Community","Resources"],dropdownName:"Links",dropdown:[{name:"Github",url:"https://github.com/robotframework/robotframework",description:"Source code + issues"},{name:"Forum",url:"http://forum.robotframework.org/",description:"Discuss Robot Framework"},{name:"Foundation",url:"https://robotframework.org/foundation/",description:"Support the development"},{name:"Robocon",url:"https://robocon.io/",description:"Annual conference"},{name:"Shop",url:"https://reddyshop.co/robotframework/",description:"Support the development"},{name:"RPA",url:"https://robotframework.org/rpa/",description:"RPA stuff"}]},introduction:{title:"Introduction",body:"Robot Framework is a generic open source automation framework.\n It can be used for test automation and robotic process automation (RPA).

\n\n Robot Framework is actively supported, with many industry-leading companies using\n it in their software development.

\n\n Robot Framework is open and extensible and can be integrated with virtually any\n other tool to create powerful and flexible automation solutions. Being open source\n also means that Robot Framework is free to use without licensing costs. Robot Framework\n has easy syntax, utilizing human-readable keywords. Its capabilities can be extended\n by libraries implemented with Python or Java. The framework has a rich ecosystem\n around it, consisting of libraries and tools that are developed as separate projects.",companies:[{name:"ABB",description:"ABB is using Robot Framework in software development for testing distribution automation related configuration tools, web interfaces and embedded devices.",imgName:"ABB.svg"},{name:"Cisco",description:"Cisco’s Customer Experience (CX) supports the testing & validation of Cisco and 3rd party solutions deployed by our customers. This includes Solution Validation Services (SVS) delivered both on Cisco-premise and customer-premise.",imgName:"Cisco.svg"},{name:"Condé Nast",description:'Condé Nast transformed their quality assurance for their brand sites, such as Brides, Wired and Architectural Digest, from an entirely manual process to automated one with Robot Framework.',imgName:"Condé_Nast.svg"},{name:"KONE",description:"KONE is widely using Robot Framework in software development for testing embedded systems in elevators and escalators.",imgName:"Kone.svg"}]},gettingStarted:{title:"Getting Started",body:"Robot Framework is open and extensible and can be integrated with virtually any other\n tool to create powerful and flexible automation solutions. Being open source also means\n that Robot Framework is free to use without licensing costs. Robot Framework has easy\n syntax, utilizing human-readable keywords. Its capabilities can be extended by libraries\n implemented with Python or Java."},community:{title:"Community",body:"Robot Framework has a vibrant community around it with various online forums, annual\n RoboCon conference, and meetup groups around the world."},resources:{title:"Resources",body:"If you want to add your library here, make a PR.",tabs:[{name:"Libraries",key:"libraries",description:"Libraries provide the actual automation and testing capabilities to\n Robot Framework by providing keywords. Several standard libraries are bundled with\n the framework, and there are separately developed external libraries galore that\n can be installed based on your needs. Creating your own libraries is a breeze."},{name:"Tools",key:"tools",description:"Supporting tools ease automation: editing, running, building and so on.\n Most of these tools are developed as separate projects, but some are built into the framework itself."},{name:"Learning",key:"learning",description:"Want to get started? Looking for a way to do things? Here are the most\n important documentation resources needed to work with Robot Framework. Notice that\n individual libraries and tools in the ecosystem have their own documentation that\n is typically accessed via their project pages."}]}}},_i=function(){return{langName:"Français",newsBanner:'🎉 RF 4.0 is out! Click here for release notes',navbar:{items:["Introduction","Getting started","Community","Resources"],dropdownName:"Links",dropdown:[{name:"Github",url:"https://github.com/robotframework/robotframework",description:"Source code + issues"},{name:"Forum",url:"http://forum.robotframework.org/",description:"Discuss Robot Framework"},{name:"Foundation",url:"https://robotframework.org/foundation/",description:"Support the development"},{name:"Robocon",url:"https://robocon.io/",description:"Annual conference"},{name:"Shop",url:"https://reddyshop.co/robotframework/",description:"Support the development"},{name:"RPA",url:"https://robotframework.org/rpa/",description:"RPA stuff"}]},introduction:{title:"Introduction",body:"Robot Framework is a generic open source automation framework.\n It can be used for test automation and robotic process automation (RPA).

\n\n Robot Framework is actively supported, with many industry-leading companies using\n it in their software development.

\n\n Robot Framework is open and extensible and can be integrated with virtually any\n other tool to create powerful and flexible automation solutions. Being open source\n also means that Robot Framework is free to use without licensing costs. Robot Framework\n has easy syntax, utilizing human-readable keywords. Its capabilities can be extended\n by libraries implemented with Python or Java. The framework has a rich ecosystem\n around it, consisting of libraries and tools that are developed as separate projects.",companies:[{name:"ABB",description:"ABB is using Robot Framework in software development for testing distribution automation related configuration tools, web interfaces and embedded devices.",imgName:"ABB.svg"},{name:"Cisco",description:"Cisco’s Customer Experience (CX) supports the testing & validation of Cisco and 3rd party solutions deployed by our customers. This includes Solution Validation Services (SVS) delivered both on Cisco-premise and customer-premise.",imgName:"Cisco.svg"},{name:"Condé Nast",description:'Condé Nast transformed their quality assurance for their brand sites, such as Brides, Wired and Architectural Digest, from an entirely manual process to automated one with Robot Framework.',imgName:"Condé_Nast.svg"},{name:"KONE",description:"KONE is widely using Robot Framework in software development for testing embedded systems in elevators and escalators.",imgName:"Kone.svg"}]},gettingStarted:{title:"Getting Started",body:"Robot Framework is open and extensible and can be integrated with virtually any other\n tool to create powerful and flexible automation solutions. Being open source also means\n that Robot Framework is free to use without licensing costs. Robot Framework has easy\n syntax, utilizing human-readable keywords. Its capabilities can be extended by libraries\n implemented with Python or Java."},community:{title:"Community",body:"Robot Framework has a vibrant community around it with various online forums, annual\n RoboCon conference, and meetup groups around the world."},resources:{title:"Resources",body:"If you want to add your library here, make a PR.",tabs:[{name:"Libraries",key:"libraries",description:"Libraries provide the actual automation and testing capabilities to\n Robot Framework by providing keywords. Several standard libraries are bundled with\n the framework, and there are separately developed external libraries galore that\n can be installed based on your needs. Creating your own libraries is a breeze."},{name:"Tools",key:"tools",description:"Supporting tools ease automation: editing, running, building and so on.\n Most of these tools are developed as separate projects, but some are built into the framework itself."},{name:"Learning",key:"learning",description:"Want to get started? Looking for a way to do things? Here are the most\n important documentation resources needed to work with Robot Framework. Notice that\n individual libraries and tools in the ecosystem have their own documentation that\n is typically accessed via their project pages."}]}}},fi=function(){return{langName:"русский",newsBanner:'🎉 RF 4.0 is out! Click here for release notes',navbar:{items:["Introduction","Getting started","Community","Resources"],dropdownName:"Links",dropdown:[{name:"Github",url:"https://github.com/robotframework/robotframework",description:"Source code + issues"},{name:"Forum",url:"http://forum.robotframework.org/",description:"Discuss Robot Framework"},{name:"Foundation",url:"https://robotframework.org/foundation/",description:"Support the development"},{name:"Robocon",url:"https://robocon.io/",description:"Annual conference"},{name:"Shop",url:"https://reddyshop.co/robotframework/",description:"Support the development"},{name:"RPA",url:"https://robotframework.org/rpa/",description:"RPA stuff"}]},introduction:{title:"Introduction",body:"Robot Framework is a generic open source automation framework.\n It can be used for test automation and robotic process automation (RPA).

\n\n Robot Framework is actively supported, with many industry-leading companies using\n it in their software development.

\n\n Robot Framework is open and extensible and can be integrated with virtually any\n other tool to create powerful and flexible automation solutions. Being open source\n also means that Robot Framework is free to use without licensing costs. Robot Framework\n has easy syntax, utilizing human-readable keywords. Its capabilities can be extended\n by libraries implemented with Python or Java. The framework has a rich ecosystem\n around it, consisting of libraries and tools that are developed as separate projects.",companies:[{name:"ABB",description:"ABB is using Robot Framework in software development for testing distribution automation related configuration tools, web interfaces and embedded devices.",imgName:"ABB.svg"},{name:"Cisco",description:"Cisco’s Customer Experience (CX) supports the testing & validation of Cisco and 3rd party solutions deployed by our customers. This includes Solution Validation Services (SVS) delivered both on Cisco-premise and customer-premise.",imgName:"Cisco.svg"},{name:"Condé Nast",description:'Condé Nast transformed their quality assurance for their brand sites, such as Brides, Wired and Architectural Digest, from an entirely manual process to automated one with Robot Framework.',imgName:"Condé_Nast.svg"},{name:"KONE",description:"KONE is widely using Robot Framework in software development for testing embedded systems in elevators and escalators.",imgName:"Kone.svg"}]},gettingStarted:{title:"Getting Started",body:"Robot Framework is open and extensible and can be integrated with virtually any other\n tool to create powerful and flexible automation solutions. Being open source also means\n that Robot Framework is free to use without licensing costs. Robot Framework has easy\n syntax, utilizing human-readable keywords. Its capabilities can be extended by libraries\n implemented with Python or Java."},community:{title:"Community",body:"Robot Framework has a vibrant community around it with various online forums, annual\n RoboCon conference, and meetup groups around the world."},resources:{title:"Resources",body:"If you want to add your library here, make a PR.",tabs:[{name:"Libraries",key:"libraries",description:"Libraries provide the actual automation and testing capabilities to\n Robot Framework by providing keywords. Several standard libraries are bundled with\n the framework, and there are separately developed external libraries galore that\n can be installed based on your needs. Creating your own libraries is a breeze."},{name:"Tools",key:"tools",description:"Supporting tools ease automation: editing, running, building and so on.\n Most of these tools are developed as separate projects, but some are built into the framework itself."},{name:"Learning",key:"learning",description:"Want to get started? Looking for a way to do things? Here are the most\n important documentation resources needed to work with Robot Framework. Notice that\n individual libraries and tools in the ecosystem have their own documentation that\n is typically accessed via their project pages."}]}}},wi=function(){return{langName:"Español",newsBanner:'🎉 RF 4.0 is out! Click here for release notes',navbar:{items:["Introduction","Getting started","Community","Resources"],dropdownName:"Links",dropdown:[{name:"Github",url:"https://github.com/robotframework/robotframework",description:"Source code + issues"},{name:"Forum",url:"http://forum.robotframework.org/",description:"Discuss Robot Framework"},{name:"Foundation",url:"https://robotframework.org/foundation/",description:"Support the development"},{name:"Robocon",url:"https://robocon.io/",description:"Annual conference"},{name:"Shop",url:"https://reddyshop.co/robotframework/",description:"Support the development"},{name:"RPA",url:"https://robotframework.org/rpa/",description:"RPA stuff"}]},introduction:{title:"Introduction",body:"Robot Framework is a generic open source automation framework.\n It can be used for test automation and robotic process automation (RPA).

\n\n Robot Framework is actively supported, with many industry-leading companies using\n it in their software development.

\n\n Robot Framework is open and extensible and can be integrated with virtually any\n other tool to create powerful and flexible automation solutions. Being open source\n also means that Robot Framework is free to use without licensing costs. Robot Framework\n has easy syntax, utilizing human-readable keywords. Its capabilities can be extended\n by libraries implemented with Python or Java. The framework has a rich ecosystem\n around it, consisting of libraries and tools that are developed as separate projects.",companies:[{name:"ABB",description:"ABB is using Robot Framework in software development for testing distribution automation related configuration tools, web interfaces and embedded devices.",imgName:"ABB.svg"},{name:"Cisco",description:"Cisco’s Customer Experience (CX) supports the testing & validation of Cisco and 3rd party solutions deployed by our customers. This includes Solution Validation Services (SVS) delivered both on Cisco-premise and customer-premise.",imgName:"Cisco.svg"},{name:"Condé Nast",description:'Condé Nast transformed their quality assurance for their brand sites, such as Brides, Wired and Architectural Digest, from an entirely manual process to automated one with Robot Framework.',imgName:"Condé_Nast.svg"},{name:"KONE",description:"KONE is widely using Robot Framework in software development for testing embedded systems in elevators and escalators.",imgName:"Kone.svg"}]},gettingStarted:{title:"Getting Started",body:"Robot Framework is open and extensible and can be integrated with virtually any other\n tool to create powerful and flexible automation solutions. Being open source also means\n that Robot Framework is free to use without licensing costs. Robot Framework has easy\n syntax, utilizing human-readable keywords. Its capabilities can be extended by libraries\n implemented with Python or Java."},community:{title:"Community",body:"Robot Framework has a vibrant community around it with various online forums, annual\n RoboCon conference, and meetup groups around the world."},resources:{title:"Resources",body:"If you want to add your library here, make a PR.",tabs:[{name:"Libraries",key:"libraries",description:"Libraries provide the actual automation and testing capabilities to\n Robot Framework by providing keywords. Several standard libraries are bundled with\n the framework, and there are separately developed external libraries galore that\n can be installed based on your needs. Creating your own libraries is a breeze."},{name:"Tools",key:"tools",description:"Supporting tools ease automation: editing, running, building and so on.\n Most of these tools are developed as separate projects, but some are built into the framework itself."},{name:"Learning",key:"learning",description:"Want to get started? Looking for a way to do things? Here are the most\n important documentation resources needed to work with Robot Framework. Notice that\n individual libraries and tools in the ecosystem have their own documentation that\n is typically accessed via their project pages."}]}}},yi=function(){return{langName:"中国人",newsBanner:'🎉 RF 4.0 is out! Click here for release notes',navbar:{items:["Introduction","Getting started","Community","Resources"],dropdownName:"Links",dropdown:[{name:"Github",url:"https://github.com/robotframework/robotframework",description:"Source code + issues"},{name:"Forum",url:"http://forum.robotframework.org/",description:"Discuss Robot Framework"},{name:"Foundation",url:"https://robotframework.org/foundation/",description:"Support the development"},{name:"Robocon",url:"https://robocon.io/",description:"Annual conference"},{name:"Shop",url:"https://reddyshop.co/robotframework/",description:"Support the development"},{name:"RPA",url:"https://robotframework.org/rpa/",description:"RPA stuff"}]},introduction:{title:"Introduction",body:"Robot Framework is a generic open source automation framework.\n It can be used for test automation and robotic process automation (RPA).

\n\n Robot Framework is actively supported, with many industry-leading companies using\n it in their software development.

\n\n Robot Framework is open and extensible and can be integrated with virtually any\n other tool to create powerful and flexible automation solutions. Being open source\n also means that Robot Framework is free to use without licensing costs. Robot Framework\n has easy syntax, utilizing human-readable keywords. Its capabilities can be extended\n by libraries implemented with Python or Java. The framework has a rich ecosystem\n around it, consisting of libraries and tools that are developed as separate projects.",companies:[{name:"ABB",description:"ABB is using Robot Framework in software development for testing distribution automation related configuration tools, web interfaces and embedded devices.",imgName:"ABB.svg"},{name:"Cisco",description:"Cisco’s Customer Experience (CX) supports the testing & validation of Cisco and 3rd party solutions deployed by our customers. This includes Solution Validation Services (SVS) delivered both on Cisco-premise and customer-premise.",imgName:"Cisco.svg"},{name:"Condé Nast",description:'Condé Nast transformed their quality assurance for their brand sites, such as Brides, Wired and Architectural Digest, from an entirely manual process to automated one with Robot Framework.',imgName:"Condé_Nast.svg"},{name:"KONE",description:"KONE is widely using Robot Framework in software development for testing embedded systems in elevators and escalators.",imgName:"Kone.svg"}]},gettingStarted:{title:"Getting Started",body:"Robot Framework is open and extensible and can be integrated with virtually any other\n tool to create powerful and flexible automation solutions. Being open source also means\n that Robot Framework is free to use without licensing costs. Robot Framework has easy\n syntax, utilizing human-readable keywords. Its capabilities can be extended by libraries\n implemented with Python or Java."},community:{title:"Community",body:"Robot Framework has a vibrant community around it with various online forums, annual\n RoboCon conference, and meetup groups around the world."},resources:{title:"Resources",body:"If you want to add your library here, make a PR.",tabs:[{name:"Libraries",key:"libraries",description:"Libraries provide the actual automation and testing capabilities to\n Robot Framework by providing keywords. Several standard libraries are bundled with\n the framework, and there are separately developed external libraries galore that\n can be installed based on your needs. Creating your own libraries is a breeze."},{name:"Tools",key:"tools",description:"Supporting tools ease automation: editing, running, building and so on.\n Most of these tools are developed as separate projects, but some are built into the framework itself."},{name:"Learning",key:"learning",description:"Want to get started? Looking for a way to do things? Here are the most\n important documentation resources needed to work with Robot Framework. Notice that\n individual libraries and tools in the ecosystem have their own documentation that\n is typically accessed via their project pages."}]}}},ki=function(){return{langName:"translation",newsBanner:"crwdns525:0crwdne525:0",navbar:{items:["crwdns527:0crwdne527:0","crwdns529:0crwdne529:0","crwdns531:0crwdne531:0","crwdns533:0crwdne533:0"],dropdownName:"crwdns535:0crwdne535:0",dropdown:[{name:"crwdns537:0crwdne537:0",url:"crwdns539:0crwdne539:0",description:"crwdns541:0crwdne541:0"},{name:"crwdns543:0crwdne543:0",url:"crwdns545:0crwdne545:0",description:"crwdns547:0crwdne547:0"},{name:"crwdns549:0crwdne549:0",url:"crwdns551:0crwdne551:0",description:"crwdns553:0crwdne553:0"},{name:"crwdns555:0crwdne555:0",url:"crwdns557:0crwdne557:0",description:"crwdns559:0crwdne559:0"},{name:"crwdns561:0crwdne561:0",url:"crwdns563:0crwdne563:0",description:"crwdns565:0crwdne565:0"},{name:"crwdns567:0crwdne567:0",url:"crwdns569:0crwdne569:0",description:"crwdns571:0crwdne571:0"}]},introduction:{title:"crwdns573:0crwdne573:0",body:"crwdns575:0crwdne575:0",companies:[{name:"crwdns577:0crwdne577:0",description:"crwdns579:0crwdne579:0",imgName:"crwdns581:0crwdne581:0"},{name:"crwdns583:0crwdne583:0",description:"crwdns585:0crwdne585:0",imgName:"crwdns587:0crwdne587:0"},{name:"crwdns589:0crwdne589:0",description:"crwdns591:0crwdne591:0",imgName:"crwdns593:0crwdne593:0"},{name:"crwdns595:0crwdne595:0",description:"crwdns597:0crwdne597:0",imgName:"crwdns599:0crwdne599:0"}]},gettingStarted:{title:"crwdns601:0crwdne601:0",body:"crwdns603:0crwdne603:0"},community:{title:"crwdns605:0crwdne605:0",body:"crwdns607:0crwdne607:0"},resources:{title:"crwdns609:0crwdne609:0",body:"crwdns611:0crwdne611:0",tabs:[{name:"crwdns613:0crwdne613:0",key:"crwdns615:0crwdne615:0",description:"crwdns617:0crwdne617:0"},{name:"crwdns619:0crwdne619:0",key:"crwdns621:0crwdne621:0",description:"crwdns623:0crwdne623:0"},{name:"crwdns625:0crwdne625:0",key:"crwdns627:0crwdne627:0",description:"crwdns629:0crwdne629:0"}]}}},vi=function(){return[{name:"Builtin",href:"https://robotframework.org/robotframework/latest/libraries/BuiltIn.html",description:"Provides a set of often needed generic keywords. Always automatically available without imports.",tags:["library"]},{name:"Collections",href:"https://robotframework.org/robotframework/latest/libraries/Collections.html",description:"Provides a set of keywords for handling Python lists and dictionaries.",tags:["library"]},{name:"DateTime",href:"https://robotframework.org/robotframework/latest/libraries/DateTime.html",description:"Library for date and time conversions.",tags:["library"]},{name:"Dialogs",href:"https://robotframework.org/robotframework/latest/libraries/Dialogs.html",description:"Provides means for pausing the execution and getting input from users.",tags:["library"]},{name:"OperatingSystem",href:"https://robotframework.org/robotframework/latest/libraries/OperatingSystem.html",description:"Enables various operating system related tasks to be performed in the system where Robot Framework is running.",tags:["library"]},{name:"Process",href:"https://robotframework.org/robotframework/latest/libraries/Process.html",description:"Library for running processes in the system.",tags:["library"]},{name:"Remote",href:"https://github.com/robotframework/RemoteInterface",description:"Special library acting as a proxy between Robot Framework and libraries elsewhere. Actual libraries can be running on different machines and be implemented using any programming language supporting XML-RPC protocol.",tags:["library"]},{name:"Screenshot",href:"https://robotframework.org/robotframework/latest/libraries/Screenshot.html",description:"Provides keywords to capture screenshots of the desktop.",tags:["library"]},{name:"String",href:"https://robotframework.org/robotframework/latest/libraries/String.html",description:"Library for generating, modifying and verifying strings.",tags:["library"]},{name:"Telnet",href:"https://robotframework.org/robotframework/latest/libraries/Telnet.html",description:"Makes it possible to connect to Telnet servers and execute commands on the opened connections.",tags:["library"]},{name:"XML",href:"https://robotframework.org/robotframework/latest/libraries/XML.html",description:"Library for generating, modifying and verifying XML files.",tags:["library"]},{name:"Rebot",description:"Generate logs and reports based on XML outputs and for combining multiple outputs together.",href:"https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#post-processing-outputs",tags:["tool"]},{name:"Libdoc",description:"Generate keyword documentation for test libraries and resource files.",href:"https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#libdoc",tags:["tool"]},{name:"Testdoc",description:"Generate high level HTML documentation based on Robot Framework test cases.",href:"https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#testdoc",tags:["tool"]},{name:"Tidy",description:"Cleaning up and changing format of Robot Framework test data files.",href:"https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#tidy",tags:["tool"]}]},Ri=function(){return[{name:"AppiumLibrary",href:"https://github.com/serhatbolsu/robotframework-appiumlibrary",description:"Android and iOS testing. Uses Appium internally.",tags:["mobile"]},{name:"ArchiveLibrary",href:"https://github.com/MarketSquare/robotframework-archivelibrary",description:"Handling zip- and tar-archives.",tags:["zip"]},{name:"AutoItLibrary",href:"https://github.com/nokia/robotframework-autoitlibrary",description:"Windows GUI testing library that uses AutoIt freeware tool as a driver.",tags:["windows","ui"]},{name:"AutoRecorder",href:"https://github.com/sebastianciupinski/robotframework-autorecorder#readme",description:"Allows automatically recording video for test/suites execution.",tags:["visual"]},{name:"Browser Library",href:"https://github.com/MarketSquare/robotframework-browser",description:'A modern web testing library powered by Playwright. Aiming for speed, reliability and visibility.',tags:["web"]},{name:"CncLibrary",href:"https://github.com/eficode/robotframework-cnclibrary",description:"Driving a CNC milling machine.",tags:["rpa"]},{name:"ConfluentKafkaLibrary",href:"https://github.com/robooo/robotframework-ConfluentKafkaLibrary",description:"Python confluent kafka."},{name:"CURFLibrary",href:"https://github.com/Openwide-Ingenierie/robotframework-can-uds-library",description:"Testing CAN bus with support for ISO-TP and UDS."},{name:"Database Library (Java)",href:"https://github.com/MarketSquare/robotframework-dblibrary",description:'Java-based library for database testing. Usable with Jython. Available also at Maven central.',tags:["java"]},{name:"Database Library (Python)",href:"https://github.com/MarketSquare/Robotframework-Database-Library",description:"Python based library for database testing. Works with any Python interpreter, including Jython.",tags:["db"]},{name:"DataDriver Library",href:"https://github.com/Snooz82/robotframework-datadriver",description:"Data-Driven Testing with external 📤 data tables (csv, xls, xlsx, etc.). 🧬 Pairwise Combinatorial Testing support.",tags:["db"]},{name:"Debug Library",href:"https://github.com/xyb/robotframework-debuglibrary",description:"A debug library for RobotFramework, which can be used as an interactive shell(REPL) also."},{name:"Dependency Library",href:"https://github.com/mentalisttraceur/robotframework-dependencylibrary",description:"Declare dependencies between tests. Ideally tests are independent, but when tests depend on earlier tests, DependencyLibrary makes it easy to explicitly declare these dependencies and have tests that depend on each other do the right thing."},{name:"Diff Library",href:"https://github.com/MarketSquare/robotframework-difflibrary",description:"Diff two files together."},{name:"Django Library",href:"https://github.com/kitconcept/robotframework-djangolibrary",description:'Library for Django, a Python web framework.',tags:["django"]},{name:"DocTest Library",href:"https://github.com/manykarim/robotframework-doctestlibrary",description:"Library for Document Testing, offers visual/content comparisons and masks for images, PDFs and more.",tags:["pdf","visual"]},{name:"DoesIsLibrary",href:"https://github.com/sebastianciupinski/robotframework-doesislibrary#readme",description:"Autogenerated keywords like Is Something, Does Someting created form assertion keywords like Should Be, Should Not Be, etc"},{name:"Eclipse Library",href:"https://github.com/lcarbonn/robotframework-eclipselibrary/",description:"Testing Eclipse RCP applications using SWT widgets."},{name:"FTP library",href:"https://github.com/kowalpy/Robot-Framework-FTP-Library",description:"Testing and using FTP server with Robot Framework.",tags:["ftp"]},{name:"HTTP RequestsLibrary (Python)",href:"https://github.com/MarketSquare/robotframework-requests#readme",description:"HTTP level testing using Python Requests internally.",tags:["http"]},{name:"HttpRequestLibrary (Java)",href:"https://github.com/MarketSquare/robotframework-httprequestlibrary",description:'HTTP level testing using Apache HTTP client. Available also at Maven central.',tags:["http","java"]},{name:"ImageHorizonLibrary",href:"https://github.com/eficode/robotframework-imagehorizonlibrary#readme",description:"Cross-platform, pure Python library for GUI automation based on image recognition.",tags:["ui","visual"]},{name:"JavaFXLibrary",href:"https://github.com/eficode/JavaFXLibrary#readme",description:'Testing JavaFX applications, based on TestFX. Has also remote interface support.',tags:["java"]},{name:"KiCadLibrary",href:"https://github.com/madworx/robotframework-kicadlibrary#readme",description:"Interacting with KiCad EDA designs."},{name:"ListenerLibrary",href:"https://github.com/sebastianciupinski/robotframework-listenerlibrary#readme",description:"Register keywords to run before/after other keywords and suites."},{name:"Mainframe3270 Library",href:"https://github.com/Altran-PT-GDC/Robot-Framework-Mainframe-3270-Library/blob/master/README.md",description:"Allows the creation of automated test scripts to test IBM Mainframe 3270.",tags:["ibm"]},{name:"MQTT library",href:"https://github.com/randomsync/robotframework-mqttlibrary#readme",description:"Testing MQTT brokers and applications.",tags:["iot"]},{name:"PuppeteerLibrary",href:"https://github.com/qahive/robotframework-puppeteer",description:"Web testing using Puppeteer tool internally.",tags:["web","ui"]},{name:"Qweb",href:"https://github.com/qentinelqi/qweb",description:"A modern web testing library focusing on making web testing and automation Easy 🎉 and maintainable 🧹 with its high level keyword design.",tags:["web","ui"]},{name:"Rammbock",href:"https://github.com/robotframework/Rammbock#readme",description:"Generic network protocol test library that offers easy way to specify network packets and inspect the results of sent and received packets.",tags:["http"]},{name:"RemoteSwingLibrary",href:"https://github.com/robotframework/remoteswinglibrary",description:"Testing and connecting to a java process and using SwingLibrary, especially Java Web Start applications.",tags:["java"]},{name:"RESTinstance",href:"https://github.com/asyrjasalo/RESTinstance/",description:"Test library for HTTP JSON APIs.",tags:["http"]},{name:"Robotframework-faker",href:"https://github.com/guykisel/robotframework-faker",description:'Library for Faker, a fake test data generator.'},{name:"Robotframework-FlaUI",href:"https://github.com/GDATASoftwareAG/robotframework-flaui",description:"Robotframework-FlaUI is a keyword based user interface automation testing library for Windows applications like Win32, WinForms, WPF or Store Apps. It's based on the FlaUI user interface automation library.",tags:["windows","ui"]},{name:"RPA framework",href:"https://github.com/robocorp/rpaframework",description:"Collection of open-source libraries and tools for Robotic Process Automation (RPA), designed to be used both with Robot Framework and Python.",tags:["rpa"]},{name:"SapGuiLibrary",href:"https://github.com/frankvanderkuur/robotframework-sapguilibrary/",description:"Testing the SAPGUI client using the internal SAP Scripting Engine",tags:["ui","sap"]},{name:"ScreenCapLibrary",href:"https://github.com/rticau/ScreenCapLibrary",description:"Taking screenshots and video recording. Similar functionality as Screenshot standard library, with some additional features.",tags:["ui"]},{name:"SeleniumScreenshots",href:"https://github.com/MarketSquare/robotframework-seleniumscreenshots",description:"Annotating and cropping screenshots taken with SeleniumLibrary.",tags:["ui","selenium"]},{name:"SeleniumLibrary",href:"https://github.com/robotframework/SeleniumLibrary/",description:"Web testing library that uses popular Selenium tool internally.",tags:["web","selenium"]},{name:"SeleniumLibrary for Java",href:"https://github.com/MarketSquare/robotframework-seleniumlibrary-java#readme",description:"Java port of the SeleniumLibrary.",tags:["java","selenium"]},{name:"SikuliLibrary",href:"https://github.com/rainmanwy/robotframework-SikuliLibrary#readme",description:'Provides keywords to test UI through Sikulix. This library supports Python 2.x and 3.x.',tags:["ui"]},{name:"SoapLibrary",href:"https://github.com/Altran-PT-GDC/Robot-Framework-SOAP-Library",description:"Designed for those who want to work with webservice automation as if they were using SoapUI, make a request through an XML file, and receive the response in another XML file.",tags:["http"]},{name:"SSHLibrary",href:"https://github.com/robotframework/SSHLibrary",description:"Enables executing commands on remote machines over an SSH connection. Also supports transfering files using SFTP.",tags:["ftp","ssh"]},{name:"SwingLibrary",href:"https://github.com/robotframework/SwingLibrary/wiki",description:"Testing Java applications with Swing GUI.",tags:["java","ui"]},{name:"TestFX Library",href:"https://github.com/Altran-PT-GDC/Robot-Framework-Test-FX-Library",description:'Enables testing Java FX applications using the TestFX framework. Has also remote interface support. Maintained Fork...',tags:["java"]},{name:"TFTPLibrary",href:"https://github.com/kowalpy/Robot-Framework-TFTP-Library",description:'Interact over Trivial File Transfer Portocol.',tags:["ftp"]},{name:"WADLibrary",href:"https://github.com/Adwisit/WADLibrary",description:"Application testing library that utilizes Win App Driver.",tags:["windows"]},{name:"Zoomba Library",href:"https://github.com/Accruent/robotframework-zoomba",description:"Extends features in many popular tools for GUI, Rest API, Soap API, Mobile, and Windows (WinAppDriver) automation. An ideal all-in-one toolkit for new or existing Robot Framework projects.",tags:["ui","http"]},{name:"Python Library Core",href:"https://github.com/robotframework/PythonLibCore",description:"Tools to ease creating larger test libraries for Robot Framework using Python.",tags:["tools"]},{name:"JavalibCore",href:"https://github.com/robotframework/JavalibCore/wiki",description:"Base for implementing larger Java based test libraries for Robot Framework.",tags:["java"]},{name:"RemoteApplications",href:"https://github.com/robotframework/RemoteApplications",description:"Special test library for launching Java applications on a separate JVM and taking other libraries into use on them.",tags:["java"]},{name:"Plone.app .robotframework",href:"https://github.com/plone/plone.app.robotframework/",description:"Provides resources and tools for writing functional Selenium tests for Plone CMS and its add-ons.",tags:["selenium"]},{name:"WatchUI",href:"https://github.com/Tesena-smart-testing/WatchUI",description:"Visual testing library for visual difference testing as well as image content testing (including PDF documents). Runs on Selenium to generate screenshots, uses PyMuPDF to process PDFs and Tesseract OCR to recognize text.",tags:["ui"]}]},Di=function(){return[{name:"RIDE",description:"Standalone Robot Framework test data editor.",href:"https://github.com/robotframework/RIDE/wiki",tags:["editor"]},{name:"Atom plugin",description:"Robot Framework plugin for Atom.",href:"https://github.com/wingyplus/language-robot-framework",tags:["editor"]},{name:"Brackets plugin",description:"Robot Framework plugin for Brackets.",href:"https://github.com/boakley/brackets-robotframework/wiki",tags:["editor"]},{name:"Eclipse plugin",description:"Robot Framework plugin for Eclipse IDE.",href:"https://github.com/NitorCreations/RobotFramework-EclipseIDE/wiki",tags:["editor"]},{name:"RobotCode",description:"RobotFramework support for Visual Studio Code, including features like code completion, navigation, refactoring, usage analysis, debugging, test explorer, test execution and more!",href:"https://github.com/d-biehl/robotcode",tags:["editor","vscode"]},{name:"Emacs major mode",description:"Emacs major mode for editing tests.",href:"https://github.com/sakari/robot-mode",tags:["editor"]},{name:"Gedit",description:"Syntax highlighting for Gedit.",href:"https://github.com/vkosuri/gedit-robot",tags:["editor"]},{name:"Robot Plugin for IntelliJ IDEA",description:"For IntelliJ IDEA-based editors by JIVE Software.",href:"https://plugins.jetbrains.com/plugin/7430",tags:["editor"]},{name:"Robot Support for IntelliJ IDEA",description:"For IntelliJ IDEA-based editors by Valerio Angelini.",href:"https://plugins.jetbrains.com/plugin/7415",tags:["editor"]},{name:"Notepad++",description:"Syntax highlighting for Notepad++.",href:"https://github.com/vkosuri/npp-robot",tags:["editor"]},{name:"RED",description:"Eclipse based editor with a debugger by Nokia.",href:"https://github.com/nokia/RED",tags:["editor"]},{name:"Language Server for VS Code",description:"VS Code LSP extension - syntax highlight, linting, code completion, debugging, and more",href:"https://marketplace.visualstudio.com/items?itemName=robocorptech.robotframework-lsp",tags:["editor"]},{name:"Language Server for PyCharm",description:"PyCharm LSP plugin - syntax highlight, code completion, and other LSP features for PyCharm.",href:"https://plugins.jetbrains.com/plugin/16086-robot-framework-language-server",tags:["editor"]},{name:"Sublime assistant",description:"A plugin for Sublime Text 2 & 3 by Andriy Hrytskiv.",href:"https://github.com/andriyko/sublime-robot-framework-assistant",tags:["editor"]},{name:"Sublime plugin",description:"A plugin for Sublime Text 2 by Mike Gershunovsky.",href:"https://github.com/shellderp/sublime-robot-plugin",tags:["editor"]},{name:"Vim plugin",description:"Vim plugin for development with Robot Framework.",href:"https://github.com/mfukar/robotframework-vim",tags:["editor"]},{name:"Intellisense for Visual Studio Code",description:"A Visual Studio Code extension that supports Robot Framework development.",href:"https://marketplace.visualstudio.com/items?itemName=TomiTurtiainen.rf-intellisense",tags:["editor"]},{name:"Debugger for Visual Studio Code",description:"A Visual Studio Code extension that lets you debug robot files with call stack, breakpoints, etc.",href:"https://marketplace.visualstudio.com/items?itemName=JacobPhilip.danfoss-robotframework-debug",tags:["editor"]},{name:"Jenkins plugin",description:"Plugin to collect and publish Robot Framework execution results in Jenkins.",href:"https://github.com/jenkinsci/robot-plugin",tags:["build"]},{name:"Maven plugin",description:"Maven plugin for using Robot Framework.",href:"https://github.com/robotframework/MavenPlugin",tags:["build"]},{name:"Ant task",description:"Ant task for running Robot Framework tests.",href:"https://github.com/lcarbonn/robotframework-ant",tags:["build"]},{name:"DbBot",description:"Tool for serializing Robot Framework execution results, i.e. output.xml files, into an SQLite database. It serves a good starting point to create your own reporting and analyzing tools.",href:"https://github.com/robotframework/DbBot",tags:[""]},{name:"Distbot",description:"A bot for self distribution of Robot Framework tests into multiple machines/docker and execute in parallel (without need of master node).",href:"https://github.com/rajeevnaikte/distbot",tags:[""]},{name:"Fixml",description:"Tool for fixing Robot Framework output files that are broken.",href:"https://bitbucket.org/robotframework/fixml",tags:[""]},{name:"Mabot",description:"Tool for reporting manual tests in format compatible with Robot Framework outputs.",href:"https://github.com/robotframework/mabot/",tags:[""]},{name:"Oxygen",description:"Tool for consolidating other test tools' reporting to Robot Framework outputs.",href:"https://github.com/eficode/robotframework-oxygen",tags:[""]},{name:"Pabot",description:"A parallel executor for Robot Framework tests and tasks.",href:"https://github.com/mkorpela/pabot",tags:[""]},{name:"RCC",description:"Share your Robot projects with ease. RCC allows you to create, manage, and distribute Python-based self-contained automation packages.",href:"https://github.com/robocorp/rcc",tags:[""]},{name:"RFDoc",description:"Web based system for storing and searching Robot Framework library and resource file documentations.",href:"https://github.com/robotframework/rfdoc",tags:[""]},{name:"rfswarm",description:"Testing tool that allows you to use Robot Framework test cases for performance or load testing.",href:"https://github.com/damies13/rfswarm",tags:[""]},{name:"Robot Corder",description:"Robot Corder generates Robot Framework test script by recording user interactions and scanning the html page in your Chrome browser. It aims to be equivalent of Selenium IDE for RobotFramework browser test automation.",href:"https://github.com/sohwendy/Robotcorder",tags:[""]},{name:"Robot Framework Hub",description:"Lightweight web server that provides access to the Robot Framework test assets via browser.",href:"https://github.com/boakley/robotframework-hub/wiki",tags:[""]},{name:"Robot Framework Lexer",description:"Robot Framework syntax highlighting with Pygments. Link is to the lexer project itself, but the lexer is part of Pygments from version 1.6 onwards.",href:"https://bitbucket.org/robotframework/pygmentslexer",tags:["editor"]},{name:"Robot Tools",description:"Collection of supporting tools that can be used with Robot Framework.",href:"https://bitbucket.org/robotframework/robottools",tags:[""]},{name:"Robocop linter",description:"Static code analysis tool for Robot Framework with use of latest robot API and many built-in rules that can be easily configured or switched off.",href:"https://github.com/MarketSquare/robotframework-robocop",tags:[""]},{name:"RobotMK",description:'RobotMK integrates results of Robot tests into the monitoring system Checkmk. Makes it possible to send alerts if any keyword/test/suite runtime exceeds the allowed runtime or fails. Performance graphs and SLA reports. Web based configuration of Robot parameters. Automatic client deployment rule system ("bakery").',href:"https://github.com/elabit/robotmk/",tags:[""]},{name:"SAGE Framework",description:"Multi-agent based extension to Robot Framework. Agent based systems make it possible to test distributed systems such as Service Oriented Architecture systems. SAGE Provides a library of Robot Framework keywords for creating and managing SAGE agent networks as well as collecting and reporting results from remote agents.",href:"https://www.nrl.navy.mil/itd/imda/products/sage",tags:[""]},{name:"StatusChecker",description:"A tool for validation that executed Robot Framework test cases have expected statuses and log messages. Mainly targeted for test library developers.",href:"https://github.com/robotframework/statuschecker/",tags:[""]},{name:"Test Assistant",description:"Control test processes and RPA tasks with your voice or with a text message sent directly to the assistant through leon-ai's UI..",href:"https://github.com/jg8481/leon/tree/develop/packages/robotframework-test-assistant",tags:[""]},{name:"TestDataTable",description:"Enables you to assign test data variable values from a single set of data to multiple scripts while allowing you to ensure each script has a unique data value.",href:"https://github.com/damies13/TestDataTable",tags:[""]},{name:"Tesults Listener",description:"A listener that provides a codeless integration experience for test results reporting from Robot Framework into Tesults.",href:"https://www.tesults.com/docs?doc=robot",tags:[""]},{name:"Xray Test Management",description:"Test management app for Jira that provides the ability to track coverage based on traditional manual test cases, exploratory testing and automation-related results. For automation, users can track detailed results from test scripts implemented with Robot Framework and link them to the respective requirements.",href:"https://www.getxray.app/",tags:[""]}]},Ei=function(){return[{name:"Robot Framework Docs",description:"Learn with guides and examples that cover Robot Framework all the way from installation to advanced usage.",href:"https://docs.robotframework.org/"},{name:"User Guide",description:"Reference manual explaining all Robot Framework features in detail.",href:"https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html"},{name:"Public API",description:"Public API for writing your own tools against Robot Framework.",href:"https://robot-framework.readthedocs.org/en/latest/"},{name:"How to write good test cases",description:"Guidelines for writing good test cases using Robot Framework.",href:"https://github.com/robotframework/HowToWriteGoodTestCases/blob/master/HowToWriteGoodTestCases.rst"},{name:"Dos And Don'ts",description:"Slide set loosely based on 'How to write good test cases' guidelines.",href:"https://www.slideshare.net/pekkaklarck/robot-framework-dos-and-donts"},{name:"Introduction Slides",description:"Generic Robot Framework introduction slides.",href:"https://www.slideshare.net/pekkaklarck/robot-framework-introduction"},{name:"RPA tutorials",description:"Robocorp RPA tutorials, courses, and guidelines",href:"https://robocorp.com/docs/courses"},{name:"Robot Framework katas",description:"Series of exercises and examples how to get started with test automation. No prior knowledge of test automation required.",href:"https://github.com/eficode-academy/rf-katas"},{name:"Web Demo",description:"Demonstrates how to create tests and higher level keywords. The system under test is a simple web page that is tested using SeleniumLibrary.",href:"https://github.com/robotframework/WebDemo"},{name:"Robot Demo",description:"Demonstrates how to create tests and test libraries. The system under test is a simple calculator that is tested using a custom library.",href:"https://github.com/robotframework/RobotDemo"},{name:"Demo: ATDD with Robot Framework",description:"How to use Robot Framework for Acceptance Test Driven Development (ATDD) a.k.a. Specification by Example.",href:"https://code.google.com/p/atdd-with-robot-framework/"},{name:"Demo: Using C with Robot Framework",description:"This simple example demonstrates how to use C language from Robot Framework test libraries.",href:"https://bitbucket.org/robotframework/cdemo"},{name:"Demo: Robot Framework RPA example projects",description:"A library of sample RPA projects and code snippets built on Robot Framework",href:"https://robocorp.com/portal/"},{name:"Demo: Remote interface",description:'Example demonstrates how to use Robot Framework\'s Remote interface to call test libraries written in any programming language.',href:"https://github.com/jg8481/robotframework-scala-remote-library"}]},Ti=function(){return[{title:"ABB",href:"https://www.abb.com",imgName:"abb.png",text:"ABB is using Robot Framework in software development for testing distribution\n automation related configuration tools, web interfaces and embedded devices."},{title:"Accruent",href:"https://www.accruent.com/",imgName:"accruent.png",text:'Accruent has been using Robot Framework since 2015 to drive API, GUI, mobile,\n and desktop automation testing throughout the company. Accruent has since made its\n Zoomba\n library open source to help other teams make the move to Robot Framework.'},{title:"Adwisit",href:"https://www.adwisit.se",imgName:"adwisit.png",text:"Adwisit uses Robot Framework to automate end-to-end testing of business processes\n for customers with a complex structure of third-party products, handling both web and desktop applications."},{title:"Alfastrahovanie",href:"https://www.alfastrah.ru/",imgName:"alfastrahovanie.png",text:"Alfastrahovanie is using Robot Framework as a main regression testing tool for\n SAP FS CM system. Alfastrahovanie is in the beginning of ATDD path and Robot Framework\n is the main vehicle there as well."},{title:"Alpha",href:"https://www.alpha.company/",imgName:"alpha.png",text:"At Alpha, we are developing the future of mobile apps for Health, with the latest\n advances in neuroscience, AI and mobile computing. Robot Framework is a key part of our\n Health Moonshot development process to help us automatize testing and guarantee the best quality."},{title:"Altran",href:"https://www.altran.com/",imgName:"altran.png",text:"Altran is a world leader in engineering solutions and R&D, and is using extensively\n RobotFramework mainly in it's Global Engineering Centers. Altran is also an active contributor\n for the RobotFramework community and is the main developer of several RobotFramework libraries."},{title:"Axon",href:"https://www.axon.tv",imgName:"axon.png",text:"Axon is using Robot Framework in testing embedded software and hardware development\n of broadcast equipment. We automate testing as much as possible in order to speed up development\n while guarantee quality. Robot Framework is the perfect tool for this job."},{title:"CENX",href:"https://www.cenx.com",imgName:"cenx.png",text:"CENX is using Robot Framework, within a Docker environment, for feature and integration\n testing of a product that empowers network- and service operation centers."},{title:"Charter Communications",href:"https://www.spectrum.com/",imgName:"spectrum.png",text:"Charter uses Robot Framework for automating feature and protocol testing on network\n devices like routers and firewalls for device certification, QA and network monitoring."},{title:"Cisco",href:"https://www.cisco.com/",imgName:"cisco.jpg",text:"Cisco’s Customer Experience (CX) supports the testing & validation of Cisco and\n 3rd party solutions deployed by our customers. This includes Solution Validation Services\n (SVS) delivered both on Cisco-premise and customer-premise as part of a NetDevOps (CI/CD)\n process where continuous validation accelerates technology adoption, de-risks IT deployments,\n changes and upgrades, and ensures complex migrations are transparent."},{title:"Conde Nast",href:"https://technology.condenast.com/",imgName:"condenast.png",text:'Condé Nast transformed their quality assurance for their brand sites, such as\n Brides, Wired and Architectural Digest, from an entirely manual process to automated one with Robot Framework.'},{title:"FICOSA",href:"https://www.ficosa.com",imgName:"ficosa.png",text:'FICOSA has been using Robot Framework for the last years in the automotive industry.\n It\'s being used for the automated testing of\n \n embedded software for in-vehicle telematic units with very good results. We have\n implemented several Robot Framework libraries to control complex hardware environments in an scalable way.'},{title:"Finnair",href:"https://www.finnair.com",imgName:"finnair.png",text:"Finnair is using Robot Framework to support Finnair digital platform development."},{title:"Finnish Tax Administration",href:"https://www.vero.fi/en/individuals/",imgName:"vero.png",text:"Finnish Tax Administration is using Robot Framework in multiple projects.\n Robot Framework is one of the core tools in their development to make Quality Assurance and Automation."},{title:"Flipdish",href:"https://www.flipdish.com/",imgName:"flipdish.png",text:"Flipdish are using Robot Framework for web, mobile and api, to enable us to test\n and release multiple white label products used for online ordering platforms across the globe."},{title:"HeyMath",href:"https://plp.heymath.com/",imgName:"heymath.png",text:"HeyMath! is a comprehensive E-learning program with world-class creative digital content.\n We use Robot Framework for end-to-end automation testing for our Products and ensuring the\n quality before delivering to the end users."},{title:"Juniper Networks",href:"https://www.juniper.net/",imgName:"juniper.png",text:"Juniper Networks has built an extensive automation framework on top of Robot Framework\n for end-to-end qualification of Juniper products to maintain our commitment to quality for our\n customers and users. It is used extensively in multiple groups including engineering and\n support amongst others. We have also worked with third-party test tool vendors to provide\n Robot Framework friendly APIs to integrate with our framework."},{title:"Kistler",href:"https://www.kistler.com",imgName:"kistler.svg",text:'Kistler is using the Robot Framework for automated system tests of backend and frontend\n applications for various, very accurate and highly precise\n measurement systems.'},{title:"KONE",href:"https://www.kone.com",imgName:"kone.png",text:"KONE is widely using Robot Framework in software development for testing embedded\n systems in elevators and escalators."},{title:"Lucid Software",href:"https://www.kovidndt.com/",imgName:"lucid.png",text:"Lucid Software is using Robot Framework for complete system automation testing of\n its NDT software products. Necessary unique libraries are created to test the applications\n in both Windows and WPF formats."},{title:"Metso",href:"https://www.metso.com",imgName:"metso.png",text:'Metso has had good results using Robot Framework in various domains. This includes\n testing embedded software in valve positioners and\n web testing of their Manufacturing\n Resource Planning system.'},{title:"Mews",href:"https://www.mews.com",imgName:"mews.png",text:"Mews builds modern hospitality software. Mews uses Robot Framework\n as part of CI/CD process to ensure system reliability and reduce manual testing efforts\n across multiple products in both browser and desktop apps."},{title:"Nokia",href:"https://www.nokia.com",imgName:"nokia.png",text:"Robot Framework was initially developed at Nokia Networks and it is used extensively\n around the whole company. It is used for testing different devices, software systems and\n protocols via GUIs, APIs and various other interfaces."},{title:"NRL",href:"https://www.nrl.navy.mil",imgName:"nrl.png",text:'The Naval Research Laboratory extends Robot Framework to provide a seamless integration\n with the SAGE\n multi-agent system. This integration enables Robot Framework to drive distributed simulation\n and monitoring for test automation of SOA systems.'},{title:"OpenDaylight",href:"https://www.opendaylight.org",imgName:"opendaylight.png",text:'OpenDaylight is a software-defined network (SDN) platform that uses Robot Framework\n for unit- and integration tests between different services. If you are interested how,\n check the wiki.'},{title:"Opuscapita",href:"https://www.opuscapita.com/",imgName:"opuscapita.png",text:"OpusCapita is using Robot Framework in software development for regression testing\n automation of web applications, API and internal software components."},{title:"Oriental Pearl New Media Co, Ltd",href:"https://www.opg.cn/",imgName:"oriental.png",text:"Oriental Pearl New Media Co, Ltd is using Robot Framework for API and UI testing."},{title:"QA Hive",href:"https://www.qahive.com",imgName:"qahive.png",text:"QA Hive is using Robot Framework for automation tests and automation tasks\n for reduce overall manual process and improve system reliability."},{title:"Rocla",href:"https://rocla.com/",imgName:"rocla.png",text:"Rocla is using Robot Framework widely in development and testing of the\n software for Trucks and Automated Guided Vehicles (AGV’s)."},{title:"Toronto Metropolitan University",href:"https://www.torontomu.ca/",imgName:"tmu_logo.png",text:"Toronto Metropolitan University uses Robot Framework to conduct desktop and mobile\n browser testing for its suite of applications that serve both students and staff."},{title:"Salicru",href:"https://www.salicru.com",imgName:"salicru.png",text:'Salicru has been using Robot Framework in testing embedded software and hardware\n development of power electronic equipment since 2011. We use Robot Framework along with\n our proprietary embedded software architecture\n Odyssey\n to assure the quality of our products and it has become one of the most important tools for us.'},{title:"Segron",href:"https://www.segron.com/",imgName:"segron.png",text:"Segron is a Bratislava-based company offering beyond end-to-end testing solution\n for Telecommunications. Our tool is based on Robot Framework and is the first true end-to-end\n solution for testing multiple interfaces and technologies with a single tool."},{title:"Smart Synergies",href:"https://www.smart-synergies.eu/",imgName:"smartsynergies.png",text:'Smart Synergies promotes Robotframework as the "Swiss Army Knife" of Software testing tools in the wide and open seas of commercial \n and open-source software testing tools and applies it since 2014 with great success to its customer\'s test automation projects. Smart Synergies delivers end-2-end test automation services from building pilots demoing Robotframeworks powers to making it part of the continuous integration pipeline, from creating test automation strategies to designing and implementing test scenarios and cases.'},{title:"Testmo",href:"https://www.testmo.com/",imgName:"testmo.png",text:"Testmo is a test management tool for modern software teams. The Testmo team uses\n Robot Framework for acceptance testing and to support its customers' QA."},{title:"Tesena",href:"https://www.tesena.com/",imgName:"tesena.png",text:"Testing is not just something we do. It is everything we do.\n We help companies reveal bugs in their software and save costs thanks to our know-how.\n We are leaders in the testing community, providing training courses, events and inspiration in the field of software testing."},{title:"TMA Solutions",href:"https://www.tmasolutions.com",imgName:"TMAlogo.png",text:"TMA Solutions is using Robot Framework to automate not only single product but also\n complex interoperability testing, involving API, desktop, mobile, web, network devices and\n special hardware. With this framework, we can easily expand testing scopes, improve automation\n run speed while still keeping high reliability."},{title:"Zilogic",href:"https://www.zilogic.com",imgName:"zilogic.png",text:"Zilogic Systems is using Robot Framework for integration testing of embedded products.\n We convert requirements into test cases,write necessary libraries to test the Device Under Test."},{title:"Zymr Inc",href:"https://www.zymr.com",imgName:"zymr.png",text:"Zymr has deep expertise in the Robot Framework and using it extensively for automating\n the test cases for the clients in various industries. It has been used within Docker and other containers."},{title:"Medical Billing Wholesalers",href:"https://www.medicalbillingwholesalers.com/",imgName:"medical_billing.png",text:"Consumed by our purpose of being the most agile healthcare services company in the world,\n we have created a strong delivery model combining the knowledge of our people with market-leading\n technologies to deliver great revenue cycle outcomes to our customers."}]},Ci=function(){return[{title:"ABB",href:"https://new.abb.com/",img:"abb.png",description:"ABB is a leading global technology company that energizes the transformation of society and industry to achieve a more productive, sustainable future. ABB employs about 5000 people in Finland. We use Robot Framework for hardware and software testing of multiple product lines, including variable frequency drives and power distribution automation."},{title:"Aktia",href:"https://www.aktia.fi/",img:"aktia.png",description:"Aktia is a Finnish asset manager, bank and life insurer that has been creating wealth and well-being from one generation to the next already for 200 years. We serve our customers through digital channels everywhere and face-to-face in our offices in the Helsinki region as well as in Oulu, Tampere, Turku and Vaasa regions. Funds in our awarded asset management are sold also internationally to institutional clients. We employ approximately 800 people around Finland. In Aktia Robot Framework is used for test automation to guarantee the quality we deliver to our customers."},{title:"ams OSRAM",href:"https://ams-osram.com/",img:"ams_osram.png",description:"ams OSRAM is using Robot Framework to automate post silicon verification tasks of our light sensors and IC products."},{title:"Arvanto",href:"https://www.arvato-systems.com/",img:"arvanto.png",description:"Global IT specialist Arvato Systems supports major companies in Digital Transformation. About 3,100 staff in over 25 locations stand for in-depth technology expertise, industry knowledge, and focus on customer requirements. Working as a team, we develop innovative IT solutions, transition our clients into the Cloud, integrate digital processes, and take on IT systems operation and support. As a part of the Bertelsmann-owned Arvato network, we have the unique capability to work across the entire value chain. Through our strong strategic partner network with global top players such as AWS, Google, Microsoft, and SAP, we continuously strengthen our know-how and leverage the most advanced technology. We Empower Digital Leaders."},{title:"Botlabs",href:"https://botlabs.fi/en/home/",img:"botlabs.png",description:"Botlabs provides your company with modern software robotics and digitalization services. We want to humanize people’s work by outsourcing difficult and tedious tasks to robots, giving people time to do what they do best, which is to make decisions and communicate."},{title:"Capgemini",href:"https://www.capgemini.com",img:"capgemini.png",description:"Capgemini Netherlands is at the forefront of innovation to address the entire breadth of clients’ opportunities in the evolving world of cloud, digital and platforms. Building on its strong 50-year heritage and deep industry-specific expertise, Capgemini enables organizations to realize their business ambitions through an array of services from strategy to operations."},{title:"cgi",href:"https://www.cgi.com/en/intelligence-automation",img:"cgi.png",description:"Founded in 1976, CGI is among the largest IT and business consulting services firms in the world. We are insights-driven and outcomes-based to help accelerate returns on your investments. CGI is privileged to work with clients around the world to use technology to support the vital workings of society and create a better future for all."},{title:"checkmk",href:"https://checkmk.com/",img:"checkmk.png",description:"Checkmk is one of the leading tools for service monitoring of IT infrastructure. Developed in Python and C++, the software is used worldwide to monitor servers, networks, applications, public clouds, containers, storage, databases and environmental sensors. With Synthetic Monitoring based on Robotmk, Checkmk administrators can keep an eye on the availability, performance and functionality of their business-critical applications."},{title:"cisco",href:"https://www.cisco.com/",img:"cisco.png",description:"Cisco’s Customer Experience (CX) supports the testing & validation of Cisco and 3rd party solutions deployed by our customers. This includes Solution Validation Services (SVS) delivered both on Cisco-premise and customer-premise as part of a NetDevOps (CI/CD) process where continuous validation accelerates technology adoption, de-risks IT deployments, changes and upgrades, and ensures complex migrations are transparent."},{title:"comiq",href:"https://comiq.fi/",img:"comiq.png",description:"Comiq is a Finnish software quality service provider founded in 2003 employing around 60 QA consultants. Our expertise in quality assurance services helps our customers achieve their quality targets for their business critical IT projects."},{title:"continero",href:"https://www.continero.com/en/",img:"continero.png",description:"We are an IT company based in the Brno (Czech Republic), which has existed since 2018. Our primary focus is outsourcing developers and testers to interesting and worldwide projects. We always strive to deliver the best services with a strong emphasis on modern technologies and methodologies. While doing the outsourcing, our primary vision is to help organizations with software quality and together make better products. We are developing a new testing platform built on the Robot Framework. It is a brand new technology that will enable non-developers and business organizations to create comprehensive automation tests without the knowledge of any programming languages."},{title:"DB Schenker",href:"https://www.dbschenker.com/global/about/profile",img:"dbchenker.png",description:"DB Schenker is the world’s largest global logistics provider. The company manages IT development across Technology Solution Center hubs located in Warsaw (PL), Nanjing (CN) and Delhi (IN). To keep high quality of delivered IT solutions, we use a RobotFramework to ensure fast and reliable regression testing for both our legacy and agile projects. Our experts ensure transparency in delivered quality and continuously improve their framework."},{title:"deutsche post adress",href:"https://www.deutschepost.de/de/p/postadress.html",img:"deutschepost.png",description:"Deutsche Post Adress GmbH & Co. KG is the leading specialist for data quality solutions in Germany. It’s a joint venture between Deutsche Post, the biggest logistical and postal company in the world, and Bertelsmann, the largest media company in Europe. With our services we ensure the success of a company’s dialogue marketing by correcting, updating and managing their addresses. Since 2014 we are using the robot framework for test and process automation."},{title:"digia",href:"https://www.digia.com/",img:"digia.png",description:"Digia is a IT service company that helps its customers developing and innovating solutions that support business operations together with customers. We adapt to their specific industries to help them develop digital services, manage operations and utilise information, employing nearly 1,000 experts in Finland and Sweden."},{title:"eficode",href:"https://www.eficode.fi/",img:"eficode.png",description:"Eficode is the leading DevOps company in Europe, driving the DevOps and Agile movement and building the future of software development across seven countries with over 400 professionals. Eficode guides customers with DevOps and Agile skills and practices, and enables them to focus on their growth and customers with Eficode ROOT DevOps Platform: a managed service with over 40 preferred tools including Atlassian, Jenkins and Kubernetes; along with our Application Management and Atlassian services."},{title:"eliga",href:"https://eliga.fi/",img:"eliga.png",description:"Eliga is a one-man company owned and operated by Pekka Klärck, the original author and lead developer of Robot Framework. It offers first class training and consulting services related to using and extending Robot Framework, test automation in general and Python programming."},{title:"enqore",href:"https://www.enqore.tech/",img:"enqore.png",description:"Being able to rely on IT without a second thought. That is the objective of Enqore. The company helps organisations to be agile, to respond to new challenges and to be prepared for the unknown. With Test Automation Engineering in an Agile environment, this business ensures that every delivery to production proceeds without a hitch. Enqore does this at various levels: within teams that develop software in an Agile manner, with teams responsible for the CI/CD pipeline and at the level where the testing strategy is determined. Enqore is part of Conflux"},{title:"etteplan",href:"https://www.etteplan.com/services/testing-and-test-laboratory/software-test-automation",img:"etteplan.png",description:"Etteplan is a specialist in industrial equipment engineering, embedded systems and IoT and technical documentation solutions and services with deep knowledge in QA from network edge to cloud in Nordics. Etteplan provides also consulting services in test automation and QA process development."},{title:"eucon",href:"https://www.eucon.com/en/",img:"eucon.png",description:"Eucon is a digital pioneer and expert in data-driven decision making. We combine comprehensive market data and in-depth expert knowledge with modern technologies such as Artificial Intelligence and Robotic Process Automation. Using data intelligence, we create the basis for smart decisions and support our customers in the automotive, insurance and real estate industries in further digitalizing and automating their business processes. Eucon was founded in Münster in 1997. With over 500 people in offices in Europe, North and Latin America, and Asia-Pacific, the international team serves around 250 customers in more than 80 countries."},{title:"F2G Solutions",href:"https://www.f2gsolutions.com",img:"f2g.png",description:"5G testing, E2E automation and network quality assurance."},{title:"gofore",href:"https://gofore.com/en/",img:"gofore.png",description:'Gofore Plc is a Finnish digitalisation specialist with international growth plans. We’re made up of over 700 people across Finland, Germany, Spain, and Estonia – top experts in our industry who are our company’s heart, brain, and hands. We use consulting, coding and design as tools to incite positive change. We care for our people, our customers, and the surrounding world. We rely on RobotFramework at our consulting, coding, design and quality assurance. Learn to know us better at www.gofore.com.'},{title:"henix",href:"https://www.henix.com",img:"henix.png",description:"Henix is a French consulting company specializing in software quality assurance. By offering a wide range of services including test automation using Robot Framework, it has become the leading pure player test company in France. Since 2011, Henix is the publisher of the Squash Open Source testing suite. Made by testers for testers, it interfaces natively with Robot Framework to ease test automation management as efficiently as manual tests."},{title:"humanitec",href:"https://humanitec.com/",img:"humanitec.png",description:"Humanitec is a software engineering company based in Berlin, Germany. Our team is building a platform to automate the continuous delivery process for Kubernetes-native applications. We believe that every developer in a team should be able to deploy apps to cloud resources without having to learn all the technical details and that DevOps experts should focus on what really matters and not on repetitive tasks. Our overall goal is to develop an open DevOps API to master Continuous Delivery."},{title:"imbus",href:"https://www.imbus.de/softwaretest/",img:"imbus.png",description:"imbus is a German leading solution partner for professional software testing and intelligent software quality assurance. The portfolio includes consulting for process improvement as well as test automation, test tools, and training. Since 1992, imbus has been synonymous with smart test automation."},{title:"ing group",href:"https://www.ing.com/Home.htm",img:"ing.png",description:"The ING Group is a Dutch multinational banking and financial services corporation headquartered in Amsterdam. Its primary businesses are retail banking, direct banking, commercial banking, investment banking, wholesale banking, private banking, asset management, and insurance services. At the heart of the bank in the Netherlands, NL Corebank we use Robot Framework to test our applications."},{title:"knowit",href:"https://www.knowit.fi/",img:"knowit.png",description:"Knowit is a consulting company that helps its clients succeed by operating close and in an innovative, business-oriented way. With our large pool of test automation professionals, we can ensure highest software quality and gain immediate and future savings."},{title:"kuka",href:"https://www.kuka.com/",img:"kuka.png",description:"There is a good reason why KUKA products can be found in virtually every industry: our portfolio offers perfectly matched automation solutions for more efficient manufacturing processes – from just a single robot to specialized cells through to complete system concepts."},{title:"luoto",href:"https://www.luotocompany.fi/",img:"luoto.png",description:"Full-stack software development company that focus on high quality. Interest in data and AI/ML also. Luoto has one of a kind, modern organization structure through full partner program, with lean management and sharp focus on customer experience. Our customers will get best 10% of IT specialist in market, who own the customer experience."},{title:"nexi",href:"https://www.nexigroup.com/en/",img:"nexi.png",description:"Nexi Digital Finland is a software development and innovation centre for Nexi Group located in Espoo, Finland.
As a part of one of the biggest European PayTech companies, we drive the product development of digital in-store payment products and services. First of its kind in the Nordics, Nexi Digital Finland development hub aims to bring pioneering solutions to support Nexi Group shape the future of the payment industry.
Nexi Group is the merger and integration of Nexi, Nets and Sia and has operations in over 25 European countries. More than 10 000 professionals in Nexi Group work towards the transition of a cashless Europe by making every payment digital."},{title:"nokia",href:"https://www.nokia.com/",img:"nokia.png",description:"\n Nokia develops and delivers the telecommunications industry's only end-to-end portfolio of network equipment, software, services and licensing that is available globally. Nokia also serves consumers with technology and devices. First versions of Robot Framework were developed in Nokia and Robot Framework is extensively used and developed further in Nokia today."},{title:"nordea",href:"https://www.nordea.com/en/",img:"nordea.png",description:"Nordea is a leading Nordic universal bank. We are helping our customers realise their dreams and aspirations – and we have done that for 200 years. We want to make a real difference for our customers and the communities where we operate – by being a strong and personal financial partner. The Nordea share is listed on the Nasdaq Helsinki, Nasdaq Copenhagen and Nasdaq Stockholm exchanges."},{title:"northcode",href:"https://www.northcode.fi/",img:"northcode.png",description:"We are a consulting company that offers DevSecOps services.

The foundation of our operations is our epic ownership model, where every employee is also a shareholder in the company."},{title:"op",href:"https://www.op.fi/op-ryhma",img:"op.png",description:"\n OP Financial Group is Finland's largest financial services group whose mission is to promote the sustainable prosperity, security and wellbeing of its owner-customers and business environment. The Group has a staff of 12,000 and almost 2 million owner-customers. OP uses Robot Framework for improving our agile testing quality and CI/CD, as well for bringing more customer satisfaction with the RPA capabilities."},{title:"opuscapita",href:"https://www.opuscapita.com/",img:"opuscapita.png",description:"OpusCapita enables organizations to sell, buy and pay quickly and securely, with a real-time view of their business. Over 3000 customers in over 100 countries use our source-to-pay, cash management and product information management solutions to connect, transact and grow."},{title:"oura",href:"https://ouraring.com",img:"oura.png",description:"Oura Health Ltd. is a Finnish health technology company, best known for the Oura Ring, a smart ring used to track sleep and physical activities."},{title:"posti",href:"https://www.posti.com/",img:"posti.png",description:"Posti is one of the leading delivery and fulfillment companies in Finland, Sweden and Baltics. We tend to the smoothness of our customers’ everyday lives and business by offering a wide range of postal, logistics, freight, and eCommerce services. We have the widest network coverage in Finland, and we visit around three million households and companies every weekday. We actively use Robot Framework in the test automation suites, improving quality and allowing for increased speed of developing new features for our many products."},{title:"prove",href:"https://www.prove.fi/",img:"prove.png",description:"Prove is a trailblazer in the wildly unpredictable and fast-paced world of tech, where we excel as leaders in software testing. Specializing in those high-stakes moments characterized by tight deadlines and limited information, Prove delivers state-of-the-art software testing results. Our philosophy is simple: software quality is mental health. Everybody, from coder to client, is happier when software works. Everyone wants to play on the winning team. With Prove on your side, you're not just ensuring that your software development soars—you're also investing in peace of mind for your team and your customers."},{title:"provinzial",href:"https://www.provinzial.de/",img:"provinzial.png",description:"The Provinzial Holding AG is the second largest insurance group in Germany. We ensure what is dear to our customers. We gain our strength from the regional ties of our subsidiaries. For more than 300 years, we are where our customers are. Today, more than five million private and corporate customers place their trust in us. What makes us special is our regionality and proximity. Our advisors are at most a few minutes away from our customers and can be reached through our many digital channels at any time. Furthermore, we put great importance on sustainability and commitment to the regions that are firmly anchored in our corporate values. Whether in the field of art and culture, sports sponsorship or security: We engage ourselves - and we do so in many different areas. "},{title:"qentinel",href:"https://qentinel.fi/",img:"qentinel.png",description:"Qentinel is the leading robotic software testing company applying system thinking and AI to maximize value creation. We have over hundred enthusiastic specialists who create the next generation of automated QA without humans in the loop. We believe your business is as good as software driving it."},{title:"qfactory",href:"https://www.q-factory.fi/",img:"qfactory.png",description:"\n Q-Factory is specialized in test automation and quality assurance services. Our expertise is based on strong project experience, and extensive testing and test tool knowledge. We emphasize on early software quality and we help fixing quality issues when it's most economical – before they are made."},{title:"qubilea",href:"https://qubilea.fi/en/",img:"qubilea.png",description:"Qubilea is Finnish software quality assurance company, offering consulting services in software testing and test automation solutions."},{title:"reaktor",href:"https://reaktor.fi/",img:"reaktor.png",description:"Reaktor is a creative technology house that constructs exceptional digital services. We build services for clients specializing in finance, retail, media, telecommunications, in-flight services and the public sector."},{title:"relex",href:"https://www.relexsolutions.com/",img:"relex.png",description:"RELEX Solutions provides market-leading software optimising supply chain and retail planning to reduce the carbon footprint. Our QA teams use Robot Framework in test automation against APIs and user interfaces, among other good test automation tools the teams find valuable."},{title:"robocorp",href:"https://robocorp.com/",img:"robocorp.png",description:"Robocorp is set out to change Robotic Process Automation. RPA has the potential to change how millions of people work every day and Robocorp is making it accessible to everyone through license-free open source technologies, delivered from a cloud platform."},{title:"rpamaker",href:"https://www.rpamaker.com/",img:"rpamaker.png",description:"RPAMAKER provides end to end process automation services. We are a client-centric company focused on helping clients confidently walk through the automation journey. We drive our clients to discover, evaluate, develop, host, maintain, support and improve their automations."},{title:"segron",href:"https://www.segron.com",img:"segron.png",description:"SEGRON provides Beyond End2End Test Automation solutions for communication networks. Our unique Automated Test Framework approach can orchestrate real-time testing with Out-of-the-Box end-user devices (iOS and Android smartphones and IoT devices). We strive to offer the industry expertise and reliable service that businesses look for in a long-term test automation partner."},{title:"sepp.med",href:"https://www.seppmed.de/en/",img:"seppmed.png",description:"Digitalization boosted by sepp.med quality Software development, quality assurance and testing for security-critical fields – for more than 40 years. sepp.med is an it-consultancy, an it-service provider and also a tool manufacturer. With and for our customers, we shape the digitalization of the future. This starts with consulting on possible regulatory requirements, standards and guidelines (ISO/IEC, SPICE, FDA or MDR), includes requirements and project management and covers also the whole development process including reliable test concepts and test execution. Using the expertise and scalability of our agile software factory or our agile test factory we also take over entire development or test projects. Furthermore, we are happy to share our knowledge about software development and test processes in open or individual trainings within our ISTQB® accredited training academy."},{title:"signant health",href:"https://signanthealth.com",img:"signant.png",description:"Signant Health (formerly known as CRF Health, the 4th unicorn from Finland) is a Product Company creating eCOA product platform in regulated business area. We use Robot Framework and Python for our test automation in our offices in Helsinki and Iasi, Romania. We understand the importance of quality in software development. We are good, but we want to be the best in our industry."},{title:"siili",href:"https://www.siili.com/",img:"siili.png",description:"We are a modern, full-service technology company. We help you create better business and meaningful digital experiences by combining strategic insight, creative design, data management, and technology expertise."},{title:"simplr",href:"https://simplr.company/",img:"simplr.png",description:"Simplr is a software development company focused on creating applications and tooling to best match the requirements of users. At Simplr we value open-source culture and endorse our employees to create and contribute to projects they use and enjoy. In addition to working on open source, we deliver high quality solutions matching the needs of our clients."},{title:"Slovenská sporiteľňa",href:"https://www.slsp.sk/",img:"slsp.png",description:"Slovenská sporiteľňa is the largest commercial bank in Slovakia, servicing more than 2.2 million clients. For a long time, it keeps its leadership in the area of total assets, credits, client‘s deposits, number of branches and ATMs. It offers its comprehensive services in more than 190 branches and 8 commercial centers in Slovakia. The long-term tradition, trust, and customer satisfaction combined with the know-how and experience of its owner have created good prerequisites for the bank´s success in the Slovak and European banking market. From 2001 on, Slovenská sporiteľňa became a member of Erste Group, that operates in 7 European countries. Slovenská sporiteľňa focuses on digital innovations and value-added services. Robot Framework plays a key role in test automation and RPA solutions."},{title:"smartdocs",href:"https://www.smartdocs.ai",img:"smartdocs.png",description:"Smart Docs Procurement Platform empowers companies around the world to help optimize and streamline their procurement processes. SmartDocs uses Al/ML models and provides a comprehensive set of controls to help Enterprise Procurement teams to monitor and manage procurement operations. By providing an awesome user experience, SmartDocs eliminates the hurdles and complexities of enterprise procurement processes."},{title:"smart synergies",href:"https://www.smart-synergies.eu/",img:"smartsynergies.png",description:'Smart Synergies promotes Robotframework as the "Swiss Army Knife" of Software testing tools in the wide and open seas of commercial\n and open-source software testing tools and applies it since 2014 with great success to its customer\'s test automation projects. Smart Synergies delivers end-2-end test automation services from building pilots demoing Robotframeworks powers to making it part of the continuous integration pipeline, from creating test automation strategies to designing and implementing test scenarios and cases.'},{title:"symbio",href:"https://fi.symbio.com/",img:"symbio.png",description:"Symbio is international co-creation innovation partner. We help our customers create high quality products and future services in digital world. Our core capabilities include software development, test automation, IoT and Connected Car development, QA, embedded development, interoperability and globalization services."},{title:"testimate",href:"https://www.testimate.fi/",img:"testimate.png",description:"Testimate provides comprehensive and independent high-quality software testing services for small and large systems or products. Our employees are versatile testing experts with several years of experience in testing, managing and leading testing and test automation using commercial and open source tools. We know we are good at what we do – and our clients agree!"},{title:"tietoevry",href:"https://www.tietoevry.com/",img:"tietoevry.png",description:"TietoEVRY creates digital advantage for businesses and society. We are a leading digital services and software company with local presence and global capabilities. Our Nordic values and heritage steer our success.
Headquartered in Finland, TietoEVRY employs around 24 000 experts globally. The company serves thousands of enterprise and public sector customers in more than 90 countries."},{title:"vala",href:"https://www.valagroup.com/",img:"vala.png",description:"VALA Group provides outstanding software development and quality assurance services by utilizing automation, co-operation and intelligent tool selection for companies ranging from start-ups to major publicly listed companies. Our greatest strenghts include Test Automation, QA Process Consultation and Quality Driven Software Development."},{title:"veikkaus",href:"https://www.veikkaus.fi/",img:"veikkaus.png",description:"Almost all adult Finns play our games; at Veikkaus we have over two million loyal customers. Thanks to the players, over one billion euros a year are accumulated for the common good. Robot Framework plays a key role in our test automation and RPA."}]};function Pi(e){var t={className:"variable",begin:/\$\{/,end:/\}/},o={className:"variable",begin:/\&\{/,end:/\}/},r={className:"variable",begin:/\@\{/,end:/\}/},a={className:"number",begin:/\$\{([0-9])/,end:/\}/},i={className:"section",begin:/^(\*{1,3})/,end:/$/},n={className:"comment",begin:/^\s*\[?Documentation\]?\s+/,end:/$/},s={className:"comment",begin:/^\.\.\./,end:/$/},l={className:"comment",begin:/(^| {2,}|\t|\| {1,})#/,end:/$/},c={className:"name",begin:/(^([^*| |\t|\n)]))\w/,end:/($|\s{2,})/,contains:[t]},d={className:"built_in",begin:/^\s+\[(Tags|Setup|Teardown|Template|Timeout|Arguments|Return)\]/,end:/$| {2,}|\t/,contains:[t],relevance:10},m={className:"attribute",begin:/^(Library|Resource|Test Timeout|Test Template|Test Teardown|Test Setup|Default Tags|Force Tags|Variables|Suite Setup|Suite Teardown)(?:( )|( \| ))/,end:/$| {2,}|\t/,contains:[t],relevance:10},u={className:"comment",variants:[{begin:/^\s{2,}given/,end:/\s/},{begin:/^\s{2,}when/,end:/\s/},{begin:/^\s{2,}then/,end:/\s/},{begin:/^\s{2,}and/,end:/\s/}]};return{case_insensitive:!0,aliases:["robot","rf"],keywords:"Settings Keywords [Return] [Teardown] [Timeout] [Setup] [Tags] [Arguments] [Documentation]",contains:[a,t,o,r,i,m,n,s,c,l,d,u]}}const Ai=function(e){e.registerLanguage("robot",Pi)};Ai(ci.Z);var Fi={builtin:vi(),libraries:Ri(),tools:Di(),learning:Ei(),users:Ti(),sponsors:Ci()},xi=(0,li.o)({locale:"en-US",messages:{"en-US":(0,r.Z)((0,r.Z)({},hi()),{},{resourcesList:Fi}),"de-DE":(0,r.Z)((0,r.Z)({},bi()),{},{resourcesList:Fi}),"pt-PT":(0,r.Z)((0,r.Z)({},gi()),{},{resourcesList:Fi}),"es-ES":(0,r.Z)((0,r.Z)({},wi()),{},{resourcesList:Fi}),"ru-RU":(0,r.Z)((0,r.Z)({},fi()),{},{resourcesList:Fi}),"zh-CN":(0,r.Z)((0,r.Z)({},yi()),{},{resourcesList:Fi}),"fr-FR":(0,r.Z)((0,r.Z)({},_i()),{},{resourcesList:Fi}),"ach-UG":(0,r.Z)((0,r.Z)({},ki()),{},{resourcesList:Fi})},warnHtmlInMessage:"off"});(0,a.ri)(d).use(si).use(ii).use(xi).use(di.Z).mount("#app")},36741:(e,t,o)=>{o.d(t,{Z:()=>p});var r=o(66252),a=o(3577),i=function(e){return(0,r.dD)("data-v-b8d6b6a6"),e=e(),(0,r.Cn)(),e},n=["width","height","fill"],s=i((function(){return(0,r._)("path",{d:"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12l4.58-4.59z"},null,-1)})),l=[s];function c(e,t,o,i,s,c){return(0,r.wg)(),(0,r.iD)("svg",{viewBox:"0 0 24 24",width:o.size,height:o.size,fill:c.fillColor,style:(0,a.j5)("transform: ".concat(c.transform))},l,12,n)}const d={name:"Chevron",props:{direction:{type:String,default:"left"},size:{type:String,default:"1rem"},color:{type:String,default:"black"}},computed:{transform:function(){return"right"===this.direction?"rotate(180deg)":"up"===this.direction?"rotate(90deg)":"down"===this.direction?"rotate(-90deg)":""},fillColor:function(){return"white"===this.color?"#f5f5f5":"theme"===this.color?"#00c0b5":"#1d1d1d"}}};var m=o(83744);const u=(0,m.Z)(d,[["render",c],["__scopeId","data-v-b8d6b6a6"]]),p=u},90887:(e,t,o)=>{o.d(t,{Z:()=>b});var r=o(82482),a=o(66252),i=o(3577),n=function(e){return(0,a.dD)("data-v-5b0febe3"),e=e(),(0,a.Cn)(),e},s=["width","height"],l=n((function(){return(0,a._)("path",{d:"M0 0h24v24H0V0z",fill:"none"},null,-1)})),c=n((function(){return(0,a._)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-5 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z"},null,-1)})),d=[l,c];function m(e,t,o,n,l,c){var m;return(0,a.wg)(),(0,a.iD)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:o.size,height:o.size,class:(0,i.C_)((m={},(0,r.Z)(m,"fill-white","white"===o.color),(0,r.Z)(m,"fill-theme","theme"===o.color),(0,r.Z)(m,"fill-black","black"===o.color),m))},d,10,s)}const u={name:"DocumentIcon",props:{color:{type:String,default:"white"},size:{type:String,default:"1rem"}}};var p=o(83744);const h=(0,p.Z)(u,[["render",m],["__scopeId","data-v-5b0febe3"]]),b=h},44479:(e,t,o)=>{o.d(t,{Z:()=>b});var r=o(82482),a=o(66252),i=o(3577),n=function(e){return(0,a.dD)("data-v-56df7616"),e=e(),(0,a.Cn)(),e},s=["width","height"],l=n((function(){return(0,a._)("path",{d:"M0 0h24v24H0V0z",fill:"none"},null,-1)})),c=n((function(){return(0,a._)("path",{d:"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"},null,-1)})),d=[l,c];function m(e,t,o,n,l,c){var m;return(0,a.wg)(),(0,a.iD)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:o.size,height:o.size,class:(0,i.C_)((m={},(0,r.Z)(m,"fill-white","white"===o.color),(0,r.Z)(m,"fill-theme","theme"===o.color),m))},d,10,s)}const u={name:"NewTabIcon",props:{color:{type:String,default:"white"},size:{type:String,default:"1rem"}}};var p=o(83744);const h=(0,p.Z)(u,[["render",m],["__scopeId","data-v-56df7616"]]),b=h}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var o=__webpack_module_cache__[e]={id:e,loaded:!1,exports:{}};return __webpack_modules__[e].call(o.exports,o,o.exports,__webpack_require__),o.loaded=!0,o.exports}__webpack_require__.m=__webpack_modules__,(()=>{__webpack_require__.amdO={}})(),(()=>{var e=[];__webpack_require__.O=(t,o,r,a)=>{if(!o){var i=1/0;for(c=0;c=a)&&Object.keys(__webpack_require__.O).every((e=>__webpack_require__.O[e](o[s])))?o.splice(s--,1):(n=!1,a0&&e[c-1][2]>a;c--)e[c]=e[c-1];e[c]=[o,r,a]}})(),(()=>{__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e["default"]:()=>e;return __webpack_require__.d(t,{a:t}),t}})(),(()=>{__webpack_require__.d=(e,t)=>{for(var o in t)__webpack_require__.o(t,o)&&!__webpack_require__.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})}})(),(()=>{__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce(((t,o)=>(__webpack_require__.f[o](e,t),t)),[]))})(),(()=>{__webpack_require__.u=e=>"js/"+e+"."+{48:"4685ce6d",111:"d9da61a3",251:"fadca85d",271:"ab8f272a",341:"41664356",527:"8b363274",591:"b165421f",598:"23ac0c5a",706:"e776abfa",786:"0ef1748b",877:"d0105946",954:"c624148c",962:"15f5025a"}[e]+".js"})(),(()=>{__webpack_require__.miniCssF=e=>"css/"+e+"."+{251:"62c85cbe",591:"17818f9b",706:"56b2f530"}[e]+".css"})(),(()=>{__webpack_require__.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()})(),(()=>{__webpack_require__.hmd=e=>(e=Object.create(e),e.children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e)})(),(()=>{__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{var e={},t="robot-framework:";__webpack_require__.l=(o,r,a,i)=>{if(e[o])e[o].push(r);else{var n,s;if(void 0!==a)for(var l=document.getElementsByTagName("script"),c=0;c{n.onerror=n.onload=null,clearTimeout(u);var a=e[o];if(delete e[o],n.parentNode&&n.parentNode.removeChild(n),a&&a.forEach((e=>e(r))),t)return t(r)},u=setTimeout(m.bind(null,void 0,{type:"timeout",target:n}),12e4);n.onerror=m.bind(null,n.onerror),n.onload=m.bind(null,n.onload),s&&document.head.appendChild(n)}}})(),(()=>{__webpack_require__.r=e=>{"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})(),(()=>{__webpack_require__.p="/"})(),(()=>{if("undefined"!==typeof document){var e=(e,t,o,r,a)=>{var i=document.createElement("link");i.rel="stylesheet",i.type="text/css";var n=o=>{if(i.onerror=i.onload=null,"load"===o.type)r();else{var n=o&&("load"===o.type?"missing":o.type),s=o&&o.target&&o.target.href||t,l=new Error("Loading CSS chunk "+e+" failed.\n("+s+")");l.code="CSS_CHUNK_LOAD_FAILED",l.type=n,l.request=s,i.parentNode&&i.parentNode.removeChild(i),a(l)}};return i.onerror=i.onload=n,i.href=t,o?o.parentNode.insertBefore(i,o.nextSibling):document.head.appendChild(i),i},t=(e,t)=>{for(var o=document.getElementsByTagName("link"),r=0;rnew Promise(((r,a)=>{var i=__webpack_require__.miniCssF(o),n=__webpack_require__.p+i;if(t(i,n))return r();e(o,n,null,r,a)})),r={143:0};__webpack_require__.f.miniCss=(e,t)=>{var a={251:1,591:1,706:1};r[e]?t.push(r[e]):0!==r[e]&&a[e]&&t.push(r[e]=o(e).then((()=>{r[e]=0}),(t=>{throw delete r[e],t})))}}})(),(()=>{var e={143:0};__webpack_require__.f.j=(t,o)=>{var r=__webpack_require__.o(e,t)?e[t]:void 0;if(0!==r)if(r)o.push(r[2]);else{var a=new Promise(((o,a)=>r=e[t]=[o,a]));o.push(r[2]=a);var i=__webpack_require__.p+__webpack_require__.u(t),n=new Error,s=o=>{if(__webpack_require__.o(e,t)&&(r=e[t],0!==r&&(e[t]=void 0),r)){var a=o&&("load"===o.type?"missing":o.type),i=o&&o.target&&o.target.src;n.message="Loading chunk "+t+" failed.\n("+a+": "+i+")",n.name="ChunkLoadError",n.type=a,n.request=i,r[1](n)}};__webpack_require__.l(i,s,"chunk-"+t,t)}},__webpack_require__.O.j=t=>0===e[t];var t=(t,o)=>{var r,a,[i,n,s]=o,l=0;if(i.some((t=>0!==e[t]))){for(r in n)__webpack_require__.o(n,r)&&(__webpack_require__.m[r]=n[r]);if(s)var c=s(__webpack_require__)}for(t&&t(o);l__webpack_require__(58285)));__webpack_exports__=__webpack_require__.O(__webpack_exports__)})(); \ No newline at end of file diff --git a/docs/livedata/milestones.js b/docs/livedata/milestones.js index d2e1dd031..ffa962314 100644 --- a/docs/livedata/milestones.js +++ b/docs/livedata/milestones.js @@ -1 +1 @@ -[{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/70","html_url":"https://github.com/robotframework/robotframework/milestone/70","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/70/labels","id":9838128,"node_id":"MI_kwDOAUSaQ84Alh4w","number":70,"title":"v8.0","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":19,"closed_issues":0,"state":"open","created_at":"2023-08-25T10:17:24Z","updated_at":"2023-10-26T15:34:57Z","due_on":null,"closed_at":null,"issues":{"total_count":19,"incomplete_results":false,"items":[{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4914","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4914/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4914/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4914/events","html_url":"https://github.com/robotframework/robotframework/issues/4914","id":1963840069,"node_id":"I_kwDOAUSaQ851DdJF","number":4914,"title":"Enhance token types used by parsing model","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/70","html_url":"https://github.com/robotframework/robotframework/milestone/70","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/70/labels","id":9838128,"node_id":"MI_kwDOAUSaQ84Alh4w","number":70,"title":"v8.0","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":19,"closed_issues":0,"state":"open","created_at":"2023-08-25T10:17:24Z","updated_at":"2023-10-26T15:34:57Z","due_on":null,"closed_at":null},"comments":0,"created_at":"2023-10-26T15:34:56Z","updated_at":"2023-10-26T15:34:57Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"On the lowest level the parsing model consists of tokens having different types. For most parts types are fine, but we have identified few issues with them. We should go them through and do at least the following:\r\n\r\n1. When assigning variables, we sometimes use the type `VARIABLE` and sometimes `ASSIGN`. Issue #4708 proposed changing the type used with FOR and EXCEPT AS variables from `VARIABLE` to `ASSIGN` to be consistent with variables created from keyword return values. This change was already done during the RF 7.0 development, but it was reverted because it turned out we still used `VARIABLE` with variables created in the Variables section and with the new VAR syntax and i wasn't possible to change also these types in RF 7.0. We need to check all places where variables are created and see can we use a common type in all cases and what that type would be.\r\n\r\n2. We currently use the type `ARGUMENT` with too many different tokens. For example, we use it with IF and WHILE conditions and with variable values in the Variables section and with the VAR syntax. This means that if we wanted to support conditional variable assignment like `VAR ${x} IF $cond y ELSE z` both `$cont` and `y` would have the `ARGUMENT` type. This in turn would make it unnecessarily hard to find the condition and value tokens. It's not certain is this kind of conditional variable assignment a good idea in general, but we should nevertheless change the token types so that implementation is possible. We could, for example, introduce a new `CONDITION` type to be used with all conditions.\r\n\r\n3. `RETURN` should be changed to mean the RETURN statement, not [Return] setting.\r\n\r\n4. There are some deprecated and unused token types we can remove. This includes `WITH_NAME`, `FORCE_TAGS`, `FATAL_ERROR`, `FATAL_INVALID_HEADER` and `RETURN_SETTING`.\r\n\r\n5. We should in general go through the token types and see do they make sense. The idea is to do a proper cleanup once and then try to keep the types stable.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4914/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4914/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4858","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4858/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4858/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4858/events","html_url":"https://github.com/robotframework/robotframework/issues/4858","id":1885309238,"node_id":"I_kwDOAUSaQ85wX4k2","number":4858,"title":"Remove support for singular section headers","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/70","html_url":"https://github.com/robotframework/robotframework/milestone/70","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/70/labels","id":9838128,"node_id":"MI_kwDOAUSaQ84Alh4w","number":70,"title":"v8.0","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":19,"closed_issues":0,"state":"open","created_at":"2023-08-25T10:17:24Z","updated_at":"2023-10-26T15:34:57Z","due_on":null,"closed_at":null},"comments":0,"created_at":"2023-09-07T07:47:27Z","updated_at":"2023-09-07T07:47:27Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Singular section headers were deprecated in RF 6.0 (#4431) and started to emit actual deprecation warnings in RF 7.0 (#4432). The earliest release we can remove their support for good is RF 8.0. If that's considered too early and we want to give users more time to update their data, removal can be postponed to RF 9.0.\r\n\r\nFor reasons why we decided to remove the support for singular headers see #4431.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4858/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4858/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4774","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4774/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4774/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4774/events","html_url":"https://github.com/robotframework/robotframework/issues/4774","id":1724264584,"node_id":"I_kwDOAUSaQ85mxjCI","number":4774,"title":"Failed imports should fail suite they belong to","user":{"login":"JonasSchares","id":103201810,"node_id":"U_kgDOBia8Eg","avatar_url":"https://avatars.githubusercontent.com/u/103201810?v=4","gravatar_id":"","url":"https://api.github.com/users/JonasSchares","html_url":"https://github.com/JonasSchares","followers_url":"https://api.github.com/users/JonasSchares/followers","following_url":"https://api.github.com/users/JonasSchares/following{/other_user}","gists_url":"https://api.github.com/users/JonasSchares/gists{/gist_id}","starred_url":"https://api.github.com/users/JonasSchares/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JonasSchares/subscriptions","organizations_url":"https://api.github.com/users/JonasSchares/orgs","repos_url":"https://api.github.com/users/JonasSchares/repos","events_url":"https://api.github.com/users/JonasSchares/events{/privacy}","received_events_url":"https://api.github.com/users/JonasSchares/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":4972223712,"node_id":"LA_kwDOAUSaQ88AAAABKF4c4A","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20medium","name":"effort: medium","color":"5319E7","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/70","html_url":"https://github.com/robotframework/robotframework/milestone/70","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/70/labels","id":9838128,"node_id":"MI_kwDOAUSaQ84Alh4w","number":70,"title":"v8.0","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":19,"closed_issues":0,"state":"open","created_at":"2023-08-25T10:17:24Z","updated_at":"2023-10-26T15:34:57Z","due_on":null,"closed_at":null},"comments":1,"created_at":"2023-05-24T15:29:23Z","updated_at":"2023-10-18T18:37:14Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"We encountered follwoing scenario while using a custom library: (RF 6.0, Python 3.10.8)\r\nWhen the initialization of the custom library fails, the test execution is continued until the first keyword provided by that library is used. The result is a rather misleading \"No keyword with name 'XY' found.\".\r\n\r\nHere is a minimal example:\r\nExampleLib.py:\r\n```python\r\nclass ExampleLib:\r\n ROBOT_LIBRARY_SCOPE = 'SUITE'\r\n ROBOT_LISTENER_API_VERSION = 3\r\n\r\n def __init__(self):\r\n # do init stuff\r\n raise Exception(\"something bad happened while doing init stuff\")\r\n\r\n def sayHello(self):\r\n return \"Hello World\"\r\n```\r\n\r\nExample.robot:\r\n```robot\r\n*** Settings ***\r\nLibrary ExampleLib.py\r\n\r\n*** Test Cases ***\r\nTest SayHello\r\n ${res} = Set Variable \"This is a String\"\r\n ${res} = sayHello\r\n Log To Console ${res}\r\n```\r\n\r\nResult:\r\n![Result](https://github.com/robotframework/robotframework/assets/103201810/6b577e36-61c7-41cd-a359-e4e7d181f01a)\r\n\r\nIt would be great to have the possibility to stop the test execution from within the custom libraries constructor.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4774/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4774/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4686","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4686/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4686/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4686/events","html_url":"https://github.com/robotframework/robotframework/issues/4686","id":1622470583,"node_id":"I_kwDOAUSaQ85gtO-3","number":4686,"title":"Change default `FOR IN ZIP` mode from `SHORTEST` to `STRICT`","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/70","html_url":"https://github.com/robotframework/robotframework/milestone/70","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/70/labels","id":9838128,"node_id":"MI_kwDOAUSaQ84Alh4w","number":70,"title":"v8.0","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":19,"closed_issues":0,"state":"open","created_at":"2023-08-25T10:17:24Z","updated_at":"2023-10-26T15:34:57Z","due_on":null,"closed_at":null},"comments":0,"created_at":"2023-03-13T23:45:29Z","updated_at":"2023-08-28T08:59:57Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"RF 6.1 made it possible to configure what to do if lengths of lists iterated using `FOR IN ZIP` are different (#4682). The old default behavior to silently ignore items in longer lists (i.e. `SHORTEST` mode) was preserved, but the plan is to deprecate it in RF 7.0 (#4685). In RF 8 we can then change the default so that lengths must match (i.e. `STRICT` mode). The main motivation is avoiding false positives. See #4682 for mode details.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4686/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4686/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4674","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4674/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4674/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4674/events","html_url":"https://github.com/robotframework/robotframework/issues/4674","id":1613542507,"node_id":"I_kwDOAUSaQ85gLLRr","number":4674,"title":"Support variables in format `$var` in addition to `${var}`","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430421,"node_id":"MDU6TGFiZWwxMTA0MzA0MjE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20critical","name":"priority: critical","color":"00441b","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":4972225384,"node_id":"LA_kwDOAUSaQ88AAAABKF4jaA","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20large","name":"effort: large","color":"5319E7","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/70","html_url":"https://github.com/robotframework/robotframework/milestone/70","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/70/labels","id":9838128,"node_id":"MI_kwDOAUSaQ84Alh4w","number":70,"title":"v8.0","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":19,"closed_issues":0,"state":"open","created_at":"2023-08-25T10:17:24Z","updated_at":"2023-10-26T15:34:57Z","due_on":null,"closed_at":null},"comments":22,"created_at":"2023-03-07T14:07:35Z","updated_at":"2023-11-02T23:32:27Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Curly braces required by Robot's variable syntax can be considered somewhat distracting and even ugly. Depending on the keyboard layout, writing them can also require annoying finger acrobatics. It would thus be convenient if it would be possible to use `$var` instead of `${var}` and also `@list`, `&dict` and `%env` instead of `@{list}`, `&{dict}` and `%{env}`. For example, all these could be supported:\r\n\r\n```\r\n*** Variables ***\r\n$VARIABLE value\r\n\r\n*** Test Cases ***\r\nExample\r\n Log $VARIABLE\r\n $var = Keyword\r\n FOR $item IN @stuff\r\n Log $item\r\n END\r\n```\r\n\r\nIn all the above cases the `$var` syntax is used on its own and that would work fine. This syntax wouldn't work too well when embedded to a string, though. For example, if you have variables `$name` and `$named`, string `Hello, $name!` could be parsed like `Hello, ${name}!`, but `abc$named` could be either `abc${name}d` or `abc${named}`. We could require using the `${var}` syntax in cases where `$var` is ambiguous, that's how [shell scripts](https://learn-bash.org/variables.html) work, but I believe it's better to require it always when variables are embedded. That makes the syntax more consistent and this approach is also considerably easier to implement. We can, however, look at this again later if the `$var` syntax is universally considered better and using it always (when possible) is considered important.\r\n\r\nSupporting the `$var` syntax would be a backwards incompatible change, but if we support it only when variables are used on their own, it shouldn't be that bad. It would mean that all arguments starting with `$`, `@`, `&` and `%` would need to be escaped like `\\$not_var`. We already require this with `#` (which otherwise starts a comment) so there's precedence for such syntax. Nevertheless, this would break lot of tests/tasks and the change can be made only in a major version. It would also be a good idea to deprecate using arguments starting with these characters already earlier. If this enhancement is considered important, it could be added in RF 7.0 and deprecation added in RF 6.2 or possibly already in RF 6.1.\r\n\r\nAlthough the basic syntax would be simple, there are some design decision to be made:\r\n\r\n1. Should we limit variable base name to only alpha numeric characters and underscore? In other words, should something like `$! als lkjas` be considered a variable with base name `! als lkjat` or should the whole thing be considered a literal string? Being more strict with the variable name would mean there's less need for escaping, but then these variables would work inconsistently compared to \"normal\" variables. It would also mean that some built-in variables like `${/}` couldn't be used like `$/`. I got a feeling that it's better if we don't limit the name. \r\n2. Should this syntax support item access like `$list[0]` and `$dict[key][nested]`? I believe it should.\r\n3. Should this syntax support \"extended variable syntax\" like `$var.upper()` and `$SPACE * 10`? I don't have too strong opinion on this, but I guess it would be better to support it. Needing to use `${var.upper()}` in this case would be a bit strange and inconsistent.\r\n\r\nI'll add this issue tentatively to RF 7.0 scope, but we still need to make a bit more official decision about it. If we decide to include it, then another issue should be submitted about deprecating arguments starting with `$` and other such variable meta characters.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4674/reactions","total_count":9,"+1":5,"-1":3,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":1},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4674/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4537","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4537/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4537/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4537/events","html_url":"https://github.com/robotframework/robotframework/issues/4537","id":1451842501,"node_id":"I_kwDOAUSaQ85WiVvF","number":4537,"title":"Support creating variables that are not logged even on TRACE level","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/70","html_url":"https://github.com/robotframework/robotframework/milestone/70","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/70/labels","id":9838128,"node_id":"MI_kwDOAUSaQ84Alh4w","number":70,"title":"v8.0","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":19,"closed_issues":0,"state":"open","created_at":"2023-08-25T10:17:24Z","updated_at":"2023-10-26T15:34:57Z","due_on":null,"closed_at":null},"comments":9,"created_at":"2022-11-16T15:48:54Z","updated_at":"2023-08-25T13:19:37Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Often in automation we need to use passwords or other values that should not be logged. To help with that, various libraries have keywords that avoid logging given values even though their keywords normally do that. For example, SeleniumLibrary has `Input Password` that doesn't log the password and also temporarily disables Robot's logging to avoid the password being logged by the underlying Selenium on DEBUG level. This works fine otherwise, but if tests are run with `--loglevel TRACE`, Robot anyway logs all argument values and the password will be visible. Browser's `Fill Secret` tries to avoid that problem by requiring the value to be passed using a special `$var` syntax so that Robot won't log the actual variable value. Unfortunately that doesn't work if the value is passed to `Fill Secret` via a user keyword and only that keyword uses the `$var` syntax like in the following example:\r\n\r\n```robotframework\r\n*** Variables ***\r\n${PASSWORD} secret\r\n\r\n*** Test Cases ***\r\nExample\r\n Keyword ${PASSWORD} # This value is logged on TRACE level\r\n\r\n*** Keywords ***\r\nKeyword\r\n [Arguments] ${pwd}\r\n Fill Secret selector $pwd\r\n```\r\n\r\nTo make it easier to use values that should not be logged, I propose we add new variable syntax `*{var}` to create \"secret variables\". The syntax could be used when creating variables in the Variables section, when creating local variables based on keyword return values, and with `Set Global/Suite/Test/Local Variable` keywords. The syntax would be only used for creating variables, they would be used normally like `${var}`:\r\n\r\n```robotframework\r\n*** Variables ***\r\n*{PASSWORD} secret\r\n\r\n*** Test Cases ***\r\nExample\r\n Keyword ${PASSWORD}\r\n *{local} = Another keyword\r\n Keyword ${local}\r\n\r\n*** Keywords ***\r\nKeyword\r\n [Arguments] ${pwd}\r\n Fill Secret selector ${pwd}\r\n```\r\n\r\nTechnically the `*{var}` assignment would create a custom object with this kind of implementation:\r\n\r\n```python\r\nclass Secret:\r\n def __init__(self, value, name=None):\r\n self.value = value\r\n self.name = name\r\n def __str__(self):\r\n return f'' if self.name else ''\r\n```\r\n\r\nThese objects would be used when the variable is passed from tests to user keywords and from user keywords to other user keywords. The real value would, however, be passed to library keywords so they would get values normally and wouldn't need to be changed to benefit from this new syntax.\r\n\r\nAlthough this new syntax would work with existing keywords, we should make it possible for library keywords to require arguments to be \"secret\". That's basically what `Fill Secret` does but this new syntax would avoid the problem that the value can be logged on higher level. A convenient way to support this would be type hints:\r\n\r\n```python\r\nfrom robot.api.secrets import Secret\r\n\r\ndef example(secret: Secret):\r\n ...\r\n```\r\n\r\nThis would work so that Robot would validate that the used value is a `Secret` and fail if it's not. I believe we should pass the real value, not the actual `Secret` object, to the underlying keyword also in this case. That can confuse type checkers but keywords can use [typing.cast](https://docs.python.org/3/library/typing.html#typing.cast) if that's a problem. To support normal type conversion, we should also allow parameterizing the type hint like `Secret[int]`.\r\n\r\nKeywords could also return secret values simply by returning `Secret` instances:\r\n\r\n```python\r\nfrom robot.api.secrets import Secret\r\n\r\ndef example():\r\n return Secret('value')\r\n```\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4537/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4537/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4478","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4478/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4478/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4478/events","html_url":"https://github.com/robotframework/robotframework/issues/4478","id":1385930204,"node_id":"I_kwDOAUSaQ85Sm53c","number":4478,"title":"Simpler syntax to create lists, dicts, and other collections as arguments to keywords","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":4972225384,"node_id":"LA_kwDOAUSaQ88AAAABKF4jaA","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20large","name":"effort: large","color":"5319E7","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/70","html_url":"https://github.com/robotframework/robotframework/milestone/70","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/70/labels","id":9838128,"node_id":"MI_kwDOAUSaQ84Alh4w","number":70,"title":"v8.0","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":19,"closed_issues":0,"state":"open","created_at":"2023-08-25T10:17:24Z","updated_at":"2023-10-26T15:34:57Z","due_on":null,"closed_at":null},"comments":3,"created_at":"2022-09-26T11:43:47Z","updated_at":"2023-08-25T11:33:26Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Robot's automatic argument conversion (#2890) makes it possible to have a keywords like\r\n```python\r\ndef accept_list(arg: list):\r\n ...\r\n\r\ndef accept_dict(arg: dict):\r\n ...\r\n```\r\nand call them so that argument are Python literals\r\n```\r\nAccept List ['list', 'items', 'here']\r\nAccept Dict {'key': 'value', 'another': 'item'}\r\n```\r\n\r\nThis is pretty convenient, but needing to use Python syntax is a bit ugly in general and especially annoying when using embedded arguments that are supposed to enhance readability:\r\n```\r\nSelect animals ['cat', 'dog'] from list\r\n```\r\n\r\nI propose we enhance argument conversion so that we support also the following syntax:\r\n```\r\nAccept List list, items, here\r\nAccept Dict key=value, another=item\r\n```\r\n\r\nThe high level semantics would be as follows:\r\n\r\n- Separator between items is a comma _and_ a space. This allows using commas in values like `first, second,with,commas, third`. Having a comma followed by a space in the value wouldn't be possible.\r\n- We could allow using a semicolon and a space as an alternative separator. In that case we'd use the separator that's encountered first. This would allow usages like `first; second, with, commas followed by spaces; third`.\r\n- With dictionaries the separator between key and value is `=`. This is the syntax we use also when creating `&{dict}` variables.\r\n- Values are considered strings by default. This can be changed by using generics (#4433) and `TypedDict` (#4477).\r\n- Because this would be handled by type convertors, variables would have been resolved already earlier. That means that something like `${1}, ${2}` wouldn't create a list of integers. See the above point for alternatives.\r\n- Also escapes are handled before type conversion. That makes it impossible to use something like `first, second\\,with\\,commas` for escaping commas in values.\r\n\r\nThis enhancement would ease using collections a lot especially if #4433 and #4477 are implemented. If we agree above semantics are fine, implementation would also be pretty easy. I thus add this to RF 5.1 scope even though the release is already late.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4478/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4478/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4472","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4472/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4472/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4472/events","html_url":"https://github.com/robotframework/robotframework/issues/4472","id":1379984865,"node_id":"I_kwDOAUSaQ85SQOXh","number":4472,"title":"Allow resource files and libraries to be imported privately in other resource files","user":{"login":"BCGST","id":105816460,"node_id":"U_kgDOBk6hjA","avatar_url":"https://avatars.githubusercontent.com/u/105816460?v=4","gravatar_id":"","url":"https://api.github.com/users/BCGST","html_url":"https://github.com/BCGST","followers_url":"https://api.github.com/users/BCGST/followers","following_url":"https://api.github.com/users/BCGST/following{/other_user}","gists_url":"https://api.github.com/users/BCGST/gists{/gist_id}","starred_url":"https://api.github.com/users/BCGST/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BCGST/subscriptions","organizations_url":"https://api.github.com/users/BCGST/orgs","repos_url":"https://api.github.com/users/BCGST/repos","events_url":"https://api.github.com/users/BCGST/events{/privacy}","received_events_url":"https://api.github.com/users/BCGST/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":4972226383,"node_id":"LA_kwDOAUSaQ88AAAABKF4nTw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20extra%20large","name":"effort: extra large","color":"5319E7","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/70","html_url":"https://github.com/robotframework/robotframework/milestone/70","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/70/labels","id":9838128,"node_id":"MI_kwDOAUSaQ84Alh4w","number":70,"title":"v8.0","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":19,"closed_issues":0,"state":"open","created_at":"2023-08-25T10:17:24Z","updated_at":"2023-10-26T15:34:57Z","due_on":null,"closed_at":null},"comments":12,"created_at":"2022-09-20T20:55:41Z","updated_at":"2023-08-25T11:29:42Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"It could be beneficial if users could import resource files and libraries in a \"private\" way. Currently, resource files are imported in a sort of recursive way where you have access to all keywords that resource file imports as well, as described in the user guide [here](http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#resource-files). This can be unhelpful when you are abstracting a library or resource such that other contributors should not make direct calls to the underlying libraries.\r\n\r\nThis was especially important to me on a recent project where I was refactoring a test suite to be able choose whether to run with Browser library or SeleniumLibrary to compare their pros and cons. You could pick which browser control to use but writing a test that made direct keyword calls to the opposite library would cause that control to crash out. Using an abstracted resource file allows you to pick which library to use on the fly, however with recursive importation, a contributor could still mistakenly call a non-abstracted keyword from one or the other library and cause the opposing library crash the test when they reach the unexpected keyword.\r\n\r\nIn more biased terms, private importation of libraries and resources feels like a much more familiar mode for project structure for me given that is how python seems to handle resource/library importation.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4472/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4472/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4395","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4395/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4395/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4395/events","html_url":"https://github.com/robotframework/robotframework/issues/4395","id":1300958594,"node_id":"I_kwDOAUSaQ85Niw2C","number":4395,"title":"Give local keywords in resource files precedence over keywords in test case files","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":4972223712,"node_id":"LA_kwDOAUSaQ88AAAABKF4c4A","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20medium","name":"effort: medium","color":"5319E7","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/70","html_url":"https://github.com/robotframework/robotframework/milestone/70","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/70/labels","id":9838128,"node_id":"MI_kwDOAUSaQ84Alh4w","number":70,"title":"v8.0","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":19,"closed_issues":0,"state":"open","created_at":"2023-08-25T10:17:24Z","updated_at":"2023-10-26T15:34:57Z","due_on":null,"closed_at":null},"comments":0,"created_at":"2022-07-11T16:39:30Z","updated_at":"2023-10-18T18:36:29Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Currently if you have a test case file like\r\n\r\n```robotframework\r\n*** Settings ***\r\nResource example.resource\r\n\r\n*** Test Cases ***\r\nExample\r\n Keyword 1\r\n\r\n*** Keywords ***\r\nKeyword 2\r\n Log Keyword in test case file\r\n```\r\n\r\nand the imported resource file contains\r\n\r\n```robotframework\r\n*** Keywords ***\r\nKeyword 1\r\n Keyword 2\r\n \r\nKeyword 2\r\n Log Keyword in resource file\r\n```\r\n\r\nthe `Keyword 2` keyword that ends up being called by `Keyword 1` is from the test case file. This is rather strange and it would be more logical if the keyword from the same resource file as `Keyword 1` would be used.\r\n\r\nThis behavior was deprecated in RF 5.1 when local keywords were given precedence over imported keywords with same name (#4366). It ought to be safe to finally change the behavior in RF 6.0.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4395/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4395/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4365","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4365/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4365/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4365/events","html_url":"https://github.com/robotframework/robotframework/issues/4365","id":1271120015,"node_id":"I_kwDOAUSaQ85Lw8CP","number":4365,"title":"Rename `Force Tags` to `Test Tags` and remove `Default Tags`","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/70","html_url":"https://github.com/robotframework/robotframework/milestone/70","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/70/labels","id":9838128,"node_id":"MI_kwDOAUSaQ84Alh4w","number":70,"title":"v8.0","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":19,"closed_issues":0,"state":"open","created_at":"2023-08-25T10:17:24Z","updated_at":"2023-10-26T15:34:57Z","due_on":null,"closed_at":null},"comments":15,"created_at":"2022-06-14T17:22:50Z","updated_at":"2023-11-09T11:09:59Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We currently have three settings for controlling tags tests get:\r\n\r\n- `Force Tags` in the Settings section for specifying tags tests will unconditionally get.\r\n- `Default Tags` in the Settings sections for specifying tags tests get, in addition to the forced tags, unless tests themselves have tags.\r\n- `[Tags]` with each tests to specify tags they get in addition to the forced tags. These also override the default tags.\r\n\r\nThis is rather complicated and my understanding is that all three settings are rarely used. I propose we simplify this so that in the future we'd only have two settings:\r\n\r\n- `Test Tags` in the Settings section to specify tags tests always get. Same as `Force Tags` nowadays.\r\n- `[Tags]` with each test to specify tags tests get in addition to the `Test Tags`.\r\n\r\nThe functional difference compared to the current behavior is that there wouldn't be a possibility to specify tags tests get by default but that they could override when needed. For example, something like this wouldn't be possible anymore:\r\n\r\n```robotframework\r\n*** Settings ***\r\nForce Tags all have\r\nDefault Tags most have\r\n\r\n*** Test Cases ***\r\nT1\r\n No Operation\r\nT2\r\n [Tags] only one has\r\n No Operation\r\nT3\r\n No Operation\r\n```\r\n\r\nInstead of using `Default Tags` that some tests override, all tests that actually need these tags must list them explicitly. The change wouldn't be overly big and I actually like this better:\r\n\r\n```robotframework\r\n*** Settings ***\r\nTest Tags all have\r\n\r\n*** Test Cases ***\r\nT1\r\n [Tags] most have\r\n No Operation\r\nT2\r\n [Tags] only one has\r\n No Operation\r\nT3\r\n [Tags] most have\r\n No Operation\r\n```\r\n\r\nThis change is obviously backwards incompatible and cannot be done without a deprecation period. I propose we do it like this:\r\n- In RF 5.1 add `Test Tags` that basically acts as an alias for `Force Tags`. Also document that `Test Tags` and `[Tags]` are the way forward.\r\n- In RF 6.0 deprecate `Force Tags` and `Default Tags`.\r\n- In RF 7.0 remove `Force Tags` and `Default Tags`.\r\n\r\nThis is currently only a proposal and comments are welcome! If you just want to indicate your opinion, you can add :+1: or :-1: reaction to this description.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4365/reactions","total_count":14,"+1":13,"-1":1,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4365/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4252","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4252/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4252/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4252/events","html_url":"https://github.com/robotframework/robotframework/issues/4252","id":1160040268,"node_id":"I_kwDOAUSaQ85FJM9M","number":4252,"title":"Support nested keywords with library keywords","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":4972225384,"node_id":"LA_kwDOAUSaQ88AAAABKF4jaA","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20large","name":"effort: large","color":"5319E7","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/70","html_url":"https://github.com/robotframework/robotframework/milestone/70","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/70/labels","id":9838128,"node_id":"MI_kwDOAUSaQ84Alh4w","number":70,"title":"v8.0","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":19,"closed_issues":0,"state":"open","created_at":"2023-08-25T10:17:24Z","updated_at":"2023-10-26T15:34:57Z","due_on":null,"closed_at":null},"comments":6,"created_at":"2022-03-04T20:49:53Z","updated_at":"2023-09-29T13:36:58Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Library keywords can execute methods freely, but methods aren't shown in the log file as child keywords. For example,\r\n\r\n```python\r\ndef do_something():\r\n do_first_thing('example')\r\n do_second_thing()\r\n```\r\nwill in the log file be shown as a single keyword without any child keywords. It is possible to use `BuiltIn.run_keyword` to execute other keywords so that they are shown as child keywords and #4237 discusses better APIs for that usage.\r\n\r\nA problem with using `BuiltIn.run_keyword` is that keywords executed with it must be available as normal keywords either in the library running other keywords or in some other imported library. That's ok if keywords are usable on their own, but it is possible that child keywords cannot be used like that. This problem can be avoided by making it possible to run any callable as the [final proposal](https://github.com/robotframework/robotframework/issues/4237#issuecomment-1058077142) in #4237 suggests. There could, however, be even better solutions for the underlying need.\r\n\r\nA solution I have been thinking is is using a context manager that would create a keyword in log (and in output.xml). We probably could use our existing `robot.running.Keyword` for that purpose. The usage could be something like this:\r\n\r\n```python\r\ndef do_something():\r\n with Keyword('Do first thing', args=['example'], doc='Example'):\r\n do_first_thing()\r\n with Keyword('Do second thing'):\r\n print('No need to call a method, implementation can be directly inside the context manager!')\r\n```\r\n\r\nThese are the main benefits of this approach compared to `BuitlIn.run_keyword` would be:\r\n1. No need to expose child keywords as real keywords.\r\n2. No need to even make each child keyword a callable. Implementation could be directly inside the context manager.\r\n3. It would be possible to add documentation, tags, etc. to be shown in the log file.\r\n\r\nPoints 1. and 3. would be possible also with `execute_keyword` proposed in #4237. Executing other keywords has also other use cases than logging child keywords, so #4237 is likely needed anyway. It's not certain is 2. alone worth enough to implement this feature. Possibly using a context manager could result with cleaner code, though.\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4252/reactions","total_count":4,"+1":4,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4252/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4237","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4237/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4237/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4237/events","html_url":"https://github.com/robotframework/robotframework/issues/4237","id":1140704583,"node_id":"I_kwDOAUSaQ85D_cVH","number":4237,"title":"Better API for library keywords to execute other keywords","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":4972225384,"node_id":"LA_kwDOAUSaQ88AAAABKF4jaA","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20large","name":"effort: large","color":"5319E7","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/70","html_url":"https://github.com/robotframework/robotframework/milestone/70","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/70/labels","id":9838128,"node_id":"MI_kwDOAUSaQ84Alh4w","number":70,"title":"v8.0","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":19,"closed_issues":0,"state":"open","created_at":"2023-08-25T10:17:24Z","updated_at":"2023-10-26T15:34:57Z","due_on":null,"closed_at":null},"comments":10,"created_at":"2022-02-16T23:50:50Z","updated_at":"2023-08-25T11:29:11Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"It is a relatively common need for library keywords to be able to run other keywords. One good example is SeleniumLibrary, that makes it possible to register a keyword that will be executed if any of its own keywords fails. Sometimes, especially when doing task automation, it is also beneficial to log actions done by the keyword in the log file separately. For example,\r\n\r\n```python\r\ndef do_something():\r\n do_first_thing()\r\n do_second_thing()\r\n```\r\nwill in the log file be shown as a single keyword without any child keywords, but there are sometimes needs to show `do_first_thing` and `do_second_thing` as child keywords.\r\n\r\nNowadays keywords can execute other keywords by using `BuiltIn.run_keyword`. It works but has several problems:\r\n\r\n1. Arguments are resolved twice. This means replacing variables and handling syntax like `\\n`. For example, if we have a keyword like\r\n ```python\r\n def example(arg):\r\n BuiltIn().run_keyword('Log To Console', arg)\r\n ```\r\n and call it like\r\n ```\r\n Example c:\\\\temp\r\n ```\r\n the actually logged string has a tab character. The reason is that `\\\\t` is first resolved to string `\\t` which is then on the second round resolved to a tab.\r\n\r\n Double resolving can be avoided be registering the keyword to be a \"run keyword variant\", but that API isn't really public and it's also pretty bad in general. We have #2190 about enhancing it and making it public, but it would probably be better to avoid this double resolving altogether.\r\n\r\n2. Related to above, the keyword using `BuiltIn.run_keyword` cannot safely call it without escaping strings. For example, something like `BuiltIn.run_keyword('Log To Console', 'c:\\\\temp')` won't work correctly and the argument should be `c:\\\\\\\\temp` instead.\r\n\r\n3. `BuiltIn.run_keyword` only accepts positional arguments. For example, if we had a keyword implemented like\r\n ```pyhton\r\n def example(upper=False):\r\n ...\r\n ```\r\n we couldn't call it like `BuiltIn.run_keyword('Example', upper=True)` but instead needed to use `BuiltIn.run_keywod('Example', 'upper=True')`.\r\n\r\nThe above examples ought to make it clear that a better API is needed. I have some ideas how to API could look and will write separate comments about that a bit later.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4237/reactions","total_count":2,"+1":2,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4237/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4170","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4170/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4170/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4170/events","html_url":"https://github.com/robotframework/robotframework/issues/4170","id":1080815625,"node_id":"I_kwDOAUSaQ85Aa_AJ","number":4170,"title":"Tests that are not run due to earlier fatal error should get SKIP status, not FAIL","user":{"login":"dgalezow","id":48494061,"node_id":"MDQ6VXNlcjQ4NDk0MDYx","avatar_url":"https://avatars.githubusercontent.com/u/48494061?v=4","gravatar_id":"","url":"https://api.github.com/users/dgalezow","html_url":"https://github.com/dgalezow","followers_url":"https://api.github.com/users/dgalezow/followers","following_url":"https://api.github.com/users/dgalezow/following{/other_user}","gists_url":"https://api.github.com/users/dgalezow/gists{/gist_id}","starred_url":"https://api.github.com/users/dgalezow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dgalezow/subscriptions","organizations_url":"https://api.github.com/users/dgalezow/orgs","repos_url":"https://api.github.com/users/dgalezow/repos","events_url":"https://api.github.com/users/dgalezow/events{/privacy}","received_events_url":"https://api.github.com/users/dgalezow/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":4972225384,"node_id":"LA_kwDOAUSaQ88AAAABKF4jaA","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20large","name":"effort: large","color":"5319E7","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/70","html_url":"https://github.com/robotframework/robotframework/milestone/70","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/70/labels","id":9838128,"node_id":"MI_kwDOAUSaQ84Alh4w","number":70,"title":"v8.0","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":19,"closed_issues":0,"state":"open","created_at":"2023-08-25T10:17:24Z","updated_at":"2023-10-26T15:34:57Z","due_on":null,"closed_at":null},"comments":8,"created_at":"2021-12-15T09:50:03Z","updated_at":"2023-10-18T18:36:51Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"With the implementation of SKIP status, it makes more sense to mark Test Cases that were not even started as SKIP instead of FAIL\r\n\r\nAs @pekkaklarck mentioned on slack it would be good to implement this for all ways to gracefully stop execution like \r\nFatal Error keyword\r\n--exitonfailure","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4170/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4170/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4069","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4069/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4069/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4069/events","html_url":"https://github.com/robotframework/robotframework/issues/4069","id":980011349,"node_id":"MDU6SXNzdWU5ODAwMTEzNDk=","number":4069,"title":"Variables acting as embedded arguments are not checked against regular expression","user":{"login":"MoreFamed","id":82573620,"node_id":"MDQ6VXNlcjgyNTczNjIw","avatar_url":"https://avatars.githubusercontent.com/u/82573620?v=4","gravatar_id":"","url":"https://api.github.com/users/MoreFamed","html_url":"https://github.com/MoreFamed","followers_url":"https://api.github.com/users/MoreFamed/followers","following_url":"https://api.github.com/users/MoreFamed/following{/other_user}","gists_url":"https://api.github.com/users/MoreFamed/gists{/gist_id}","starred_url":"https://api.github.com/users/MoreFamed/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MoreFamed/subscriptions","organizations_url":"https://api.github.com/users/MoreFamed/orgs","repos_url":"https://api.github.com/users/MoreFamed/repos","events_url":"https://api.github.com/users/MoreFamed/events{/privacy}","received_events_url":"https://api.github.com/users/MoreFamed/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/70","html_url":"https://github.com/robotframework/robotframework/milestone/70","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/70/labels","id":9838128,"node_id":"MI_kwDOAUSaQ84Alh4w","number":70,"title":"v8.0","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":19,"closed_issues":0,"state":"open","created_at":"2023-08-25T10:17:24Z","updated_at":"2023-10-26T15:34:57Z","due_on":null,"closed_at":null},"comments":15,"created_at":"2021-08-26T09:06:07Z","updated_at":"2023-08-28T11:54:16Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"Hi, I came across strange behaviour of RF regarding embedded arguments. I have keyword\r\n```\r\nPerform ${arg:[^ ]+}\r\n Log To Console ${arg}\r\n```\r\nIn other words, the argument cannot contain any space. Then, `Perform abcd` passes, as it contains no space. `Perform ab cd` fails with _No keyword with name 'Perform ab cd' found_, since it does contain a space. So far so good. But when I set the value with space to a variable and give it to the keyword: `${a} Set Variable ab cd` and `Perform ${a}`, the keyword surprisingly passes (and logs _ab cd_). I expect it to fail as if in case when the non-matching value was given to the keyword directly.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4069/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4069/timeline","performed_via_github_app":null,"state_reason":"reopened","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/3423","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/3423/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/3423/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/3423/events","html_url":"https://github.com/robotframework/robotframework/issues/3423","id":541348081,"node_id":"MDU6SXNzdWU1NDEzNDgwODE=","number":3423,"title":"Possibility to use output.json in addition to output.xml","user":{"login":"teaglebuilt","id":18645015,"node_id":"MDQ6VXNlcjE4NjQ1MDE1","avatar_url":"https://avatars.githubusercontent.com/u/18645015?v=4","gravatar_id":"","url":"https://api.github.com/users/teaglebuilt","html_url":"https://github.com/teaglebuilt","followers_url":"https://api.github.com/users/teaglebuilt/followers","following_url":"https://api.github.com/users/teaglebuilt/following{/other_user}","gists_url":"https://api.github.com/users/teaglebuilt/gists{/gist_id}","starred_url":"https://api.github.com/users/teaglebuilt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/teaglebuilt/subscriptions","organizations_url":"https://api.github.com/users/teaglebuilt/orgs","repos_url":"https://api.github.com/users/teaglebuilt/repos","events_url":"https://api.github.com/users/teaglebuilt/events{/privacy}","received_events_url":"https://api.github.com/users/teaglebuilt/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/70","html_url":"https://github.com/robotframework/robotframework/milestone/70","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/70/labels","id":9838128,"node_id":"MI_kwDOAUSaQ84Alh4w","number":70,"title":"v8.0","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":19,"closed_issues":0,"state":"open","created_at":"2023-08-25T10:17:24Z","updated_at":"2023-10-26T15:34:57Z","due_on":null,"closed_at":null},"comments":46,"created_at":"2019-12-21T17:04:23Z","updated_at":"2023-08-25T10:55:18Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"Problem:\r\n\r\nPrefer to use a NOSQL database to store test reports. NOSQL databases typically require json format because its a relational database.\r\n\r\nSolution:\r\n\r\nProvide robotframework with the ability to use json rather than xml in the output file. \r\n\r\nFor example:\r\n\r\n```\r\n # flag --output\r\n robot --output output.json ./tests\r\n```","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/3423/reactions","total_count":4,"+1":4,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/3423/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/3278","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/3278/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/3278/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/3278/events","html_url":"https://github.com/robotframework/robotframework/issues/3278","id":484420789,"node_id":"MDU6SXNzdWU0ODQ0MjA3ODk=","number":3278,"title":"Variable type conversion","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/70","html_url":"https://github.com/robotframework/robotframework/milestone/70","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/70/labels","id":9838128,"node_id":"MI_kwDOAUSaQ84Alh4w","number":70,"title":"v8.0","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":19,"closed_issues":0,"state":"open","created_at":"2023-08-25T10:17:24Z","updated_at":"2023-10-26T15:34:57Z","due_on":null,"closed_at":null},"comments":14,"created_at":"2019-08-23T09:13:40Z","updated_at":"2023-09-05T11:54:12Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"RF 3.1 added automatic argument conversion with library keywords using function annotations (#2890), default values (#2932), and some other means. That has worked very well, and it would be nice if something like that would work also with variables defined in test data. We probably could re-use the underlying argument conversion logic which ought to make it relatively easy to implement this. We also got a similar request related to variables passed from the command line #2946.\r\n\r\nAutomatically converting numbers like `42` and `3.14` to actual integers/floats would be handy, even when we already support them as variables like `${42}` and `${3.14}`. Being able to use datatime objects, bytes, and other types supported by the argument conversion that don't have direct variable alternatives would naturally be even more useful (but also less commonly needed). I would expect this to be most useful with lists and dictionaries and especially with nested list and dicts that cannot easily be constructed in Robot's data.\r\n\r\nMy proposed syntax for this functionality is supporting \"type postfix\" like `:int` in variable names like this:\r\n\r\n```robotframework\r\n*** Variables ***\r\n${COUNT:int} 42\r\n${GOOD IDEA:bool} Yes # Converted to Boolean True\r\n${ANIMALS:list} ['cat', 'dog', 'horse'] # Python syntax\r\n${NESTED:dict} {'a': 1, 'b': [{'x': 2}, {'x': 3}]} # Great with JSON\r\n```\r\n\r\nThis syntax is derived from Python's function annotation syntax and also the same syntax that was decided to be used with command line variables in #2946. Variable names would naturally be created without the type prefix like `${COUNT}` and `${GOOD IDEA}`.\r\n\r\nIn addition to being available in the variable section, the new syntax should also be available also when creating variable otherwise, including in keyword arguments:\r\n\r\n```robotframework\r\n*** Keywords ***\r\nExample\r\n [Arguments] ${count:int}\r\n ${nested:dict} = Set Variable {'a': ${count}, 'b': [{'x': 2}, {'x': 3}]}\r\n Set Test Variable ${DATE:datetime} 2019-08-23 12:03:42\r\n```\r\n\r\nThere are some design decision still to be made like should `${X:dict}` create a `DotDict` instance that allows `${X.key}` syntax and how to handle possible backwards incompatibility issues. For most parts the design looks pretty good, though, and I think this would be a valuable addition to Robot Framework. If there's enough interest, we can consider adding this already to RF 3.2 scope. To show your interest, vote with :+1: or :-1: and/or add comments.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/3278/reactions","total_count":9,"+1":9,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/3278/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/3187","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/3187/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/3187/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/3187/events","html_url":"https://github.com/robotframework/robotframework/issues/3187","id":444834531,"node_id":"MDU6SXNzdWU0NDQ4MzQ1MzE=","number":3187,"title":"Inline keyword call syntax","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/70","html_url":"https://github.com/robotframework/robotframework/milestone/70","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/70/labels","id":9838128,"node_id":"MI_kwDOAUSaQ84Alh4w","number":70,"title":"v8.0","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":19,"closed_issues":0,"state":"open","created_at":"2023-08-25T10:17:24Z","updated_at":"2023-10-26T15:34:57Z","due_on":null,"closed_at":null},"comments":50,"created_at":"2019-05-16T08:58:20Z","updated_at":"2023-08-25T10:43:28Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Having inline keyword call syntax would be nice. It would allow using keywords in places where currently you'd normally just have plain strings (or variables). Example usages are listed below and possible syntax alternatives discussed in separate comments.\r\n\r\n1. Arguments to other keywords. At the moment you need to this in two steps:\r\n\r\n ```\r\n ${result} = Keyword argument\r\n Another Keyword ${result}\r\n ```\r\n\r\n In Python and other \"real\" programming languages you use something like `another_keyword(keyword('argument'))`, but in Robot's syntax\r\n\r\n ```\r\n Another Keyword Keyword argument\r\n ```\r\n is parsed as `Another Keyword` getting two arguments. This cannot be changed so new syntax is needed.\r\n\r\n2. Condition to the forthcoming `IF/ELSE` syntax (#3074). Currently (well, in the future once IF/ELSE is supported), you need to use:\r\n ```\r\n ${status} = Keyword\r\n IF ${status}\r\n Another Keyword\r\n END\r\n ```\r\n and\r\n ```\r\n IF Keyword\r\n Another Keyword\r\n END\r\n ```\r\n would be parsed as `Keyword` being the expression to evaluate.\r\n\r\n3. Similarly existing FOR loops would benefit from this.\r\n\r\n4. Inline keyword call syntax would also allow adding support to create variables in the `Variables` section based on keyword return values. Currently that's not possible at all, and creating suite level variables dynamically requires using Suite Setup. Being able to do something like this is a pretty common request:\r\n\r\n ```\r\n *** Variables ***\r\n ${EXAMPLE} = Keyword argument\r\n ```\r\n\r\nThe hardest thing related to this issue is coming up with a good syntax. I've been thinking about this for some time and have some ideas but no clear candidate I like best. I'll explain these ideas in separate comments below. :+1: and :-1: reactions, comments and other syntax ideas are all highly appreciated!","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/3187/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/3187/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/2581","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/2581/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/2581/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/2581/events","html_url":"https://github.com/robotframework/robotframework/issues/2581","id":222661777,"node_id":"MDU6SXNzdWUyMjI2NjE3Nzc=","number":2581,"title":"Scope of keywords called in resource files is globally reinterpreted when resource file is imported","user":{"login":"jesuspv","id":407695,"node_id":"MDQ6VXNlcjQwNzY5NQ==","avatar_url":"https://avatars.githubusercontent.com/u/407695?v=4","gravatar_id":"","url":"https://api.github.com/users/jesuspv","html_url":"https://github.com/jesuspv","followers_url":"https://api.github.com/users/jesuspv/followers","following_url":"https://api.github.com/users/jesuspv/following{/other_user}","gists_url":"https://api.github.com/users/jesuspv/gists{/gist_id}","starred_url":"https://api.github.com/users/jesuspv/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jesuspv/subscriptions","organizations_url":"https://api.github.com/users/jesuspv/orgs","repos_url":"https://api.github.com/users/jesuspv/repos","events_url":"https://api.github.com/users/jesuspv/events{/privacy}","received_events_url":"https://api.github.com/users/jesuspv/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":4972226383,"node_id":"LA_kwDOAUSaQ88AAAABKF4nTw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20extra%20large","name":"effort: extra large","color":"5319E7","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/70","html_url":"https://github.com/robotframework/robotframework/milestone/70","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/70/labels","id":9838128,"node_id":"MI_kwDOAUSaQ84Alh4w","number":70,"title":"v8.0","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":19,"closed_issues":0,"state":"open","created_at":"2023-08-25T10:17:24Z","updated_at":"2023-10-26T15:34:57Z","due_on":null,"closed_at":null},"comments":6,"created_at":"2017-04-19T08:39:15Z","updated_at":"2023-08-25T11:25:37Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"Given the following files (one for a test case and two for resources):\r\n\r\n```\r\n$ cat cases/case.robot\r\n*** Settings ***\r\n\r\nResource rc/SSHClient.robot\r\nResource rc/TelnetClient.robot\r\n\r\n*** Test Cases ***\r\n\r\nMy Test Case\r\n SSHClient.Log On\r\n TelnetClient.Log On\r\n\r\n SSHClient.Log Off\r\n TelnetClient.Log Off\r\n```\r\n```\r\n$ cat rc/SSHClient.robot\r\n*** Variables ***\r\n\r\n${SERVER_IP} 1.2.3.4\r\n${SERVER_USER} guest\r\n${SERVER_PASSWORD} guest\r\n\r\n*** Settings ***\r\n\r\nLibrary SSHLibrary\r\n\r\n*** Keywords ***\r\n\r\nLog On\r\n Open Connection ${SERVER_IP}\r\n Login ${SERVER_USER} ${SERVER_PASSWORD}\r\n\r\nLog Off\r\n Close Connection\r\n```\r\n```\r\n$ cat rc/TelnetClient.robot\r\n*** Variables ***\r\n\r\n${SERVER_IP} 1.2.3.4\r\n${SERVER_USER} guest\r\n${SERVER_PASSWORD} guest\r\n\r\n*** Settings ***\r\n\r\nLibrary Telnet\r\n\r\n*** Keywords ***\r\n\r\nLog On\r\n Open Connection ${SERVER_IP}\r\n Login ${SERVER_USER} ${SERVER_PASSWORD}\r\n ... login_prompt=Username:\r\n ... password_prompt=Password:\r\n\r\nLog Off\r\n Close Connection\r\n```\r\n\r\nWhen running case.robot this kind of warning appears:\r\n\r\n```\r\n[ WARN ] Keyword 'Open Connection' found both from a custom test library 'SSHLibrary' and a standard library 'Telnet'. The custom keyword is used. To select explicitly, and to get rid of this warning, use either 'SSHLibrary.Open Connection' or 'Telnet.Open Connection'.\r\n[ WARN ] Keyword 'Login' found both from a custom test library 'SSHLibrary' and a standard library 'Telnet'. The custom keyword is used. To select explicitly, and to get rid of this warning, use either 'SSHLibrary.Login' or 'Telnet.Login'.\r\nMy Test Case\r\n```\r\n\r\nwhich seems to force us to prefix keywords in the resource files with the library name, even when they have imported only one library (with no name collision in the resource-file scope).\r\n\r\nShould not be the scope of keywords called in resource files determined locally to the resource file? (at least, when they can be resolved in the resource-file scope as when we have been explicitly imported the corresponding library)\r\n\r\nP.S.: I know that it is intended that keywords can be resolved at runtime to allow dynamically decide the implementation (I do not remember where I read about that behaviour though). However, this seems to hamper Robot framework keywords reusability, forcing us to work around by prefixing keywords, renaming them (globally unique...!), or implementing these keywords in a .py file (to be imported via Library). Please, you can also consult [this resource example](http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#example-resource-file) in the official user guide for additional evidences on how misleading is the current non-local scope resolution.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/2581/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/2581/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/2190","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/2190/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/2190/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/2190/events","html_url":"https://github.com/robotframework/robotframework/issues/2190","id":114558284,"node_id":"MDU6SXNzdWUxMTQ1NTgyODQ=","number":2190,"title":"Clean-up semi-public API to register \"run keyword variants\" and to disable variable resolving in arguments","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/70","html_url":"https://github.com/robotframework/robotframework/milestone/70","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/70/labels","id":9838128,"node_id":"MI_kwDOAUSaQ84Alh4w","number":70,"title":"v8.0","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":19,"closed_issues":0,"state":"open","created_at":"2023-08-25T10:17:24Z","updated_at":"2023-10-26T15:34:57Z","due_on":null,"closed_at":null},"comments":12,"created_at":"2015-11-02T09:32:51Z","updated_at":"2023-11-14T14:01:02Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Robot has a mechanism to disable resolving variables in arguments using `robot.libraries.BuiltIn.register_run_keyword` method. This also makes the method so called \"run keyword variant\" which slightly changes the logic how the keyword is executed. This whole system is a mess that needs to be cleaned up. At least the following things need to be considered:\n1. Separate mechanism to disable resolving variables from arguments. Could possibly be part of `robot.api.deco.keyword`. Should then also have an API to resolve arguments if needed.\n2. Investigate could the whole \"run keyword variant\" system be removed from the public API or, preferably, altogether.\n3. If we cannot remove \"run keyword variant\" system, we need to deprecate/remove the functionality to register keywords by using function/method. That system doesn't work in Python 3 currently and trying to fix it is not worth the effort.\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/2190/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/2190/timeline","performed_via_github_app":null,"state_reason":null,"score":1}]}},{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/71","html_url":"https://github.com/robotframework/robotframework/milestone/71","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/71/labels","id":9838307,"node_id":"MI_kwDOAUSaQ84Alh7j","number":71,"title":"v7.1","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":5,"closed_issues":0,"state":"open","created_at":"2023-08-25T11:26:23Z","updated_at":"2023-11-13T14:55:55Z","due_on":null,"closed_at":null,"issues":{"total_count":5,"incomplete_results":false,"items":[{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4931","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4931/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4931/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4931/events","html_url":"https://github.com/robotframework/robotframework/issues/4931","id":1979643968,"node_id":"I_kwDOAUSaQ851_vhA","number":4931,"title":"Collapse long failure messages in log and report","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":4972223712,"node_id":"LA_kwDOAUSaQ88AAAABKF4c4A","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20medium","name":"effort: medium","color":"5319E7","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/71","html_url":"https://github.com/robotframework/robotframework/milestone/71","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/71/labels","id":9838307,"node_id":"MI_kwDOAUSaQ84Alh7j","number":71,"title":"v7.1","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":5,"closed_issues":0,"state":"open","created_at":"2023-08-25T11:26:23Z","updated_at":"2023-11-13T14:55:55Z","due_on":null,"closed_at":null},"comments":3,"created_at":"2023-11-06T17:11:28Z","updated_at":"2023-11-13T13:46:26Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Currently long failure messages (over 40 lines by default, configurable with `--max-error-lines` (#2576)) are cut from the middle. This is done to avoid huge messages messing up logs and reports, but the problem is that some valuable information may be lost. Another issue is that even the resulting messages are somewhat long and take lot of space.\r\n\r\nThe above is an old problem, but the situation is getting worse in RF 7.0 due failure messages being shown not only with tests,but also with each keyword and control structure. Earlier keywords and control structures in the result model didn't have a message at all, but it was added as part of the result model cleanup (#4883). The motivation was this:\r\n- We are adding JSON representation to the result model (#4847) and want the model to be as stable and future-proof as possible.\r\n- We likely want to in the future allow running individual keywords outside Robot core. At that point we want the result model to have a message, not only status as earlier.\r\n- In some special cases (at least with `--flatten-keywords` and `--remove-keywords`) we want to add some extra notes to result objects. Earlier we used documentation for that, but it was odd because control structures such as FOR loops cannot otherwise have a documentation. Using the message for this purpose works much better.\r\n\r\nNow that also keywords and control structures also have a message, the same message can be shown on multiple levels in the log file. That's rather annoying in general, but gets especially irritating if the message is long. To mitigate this issue, and to fix the old issue with long messages, I propose we do the following:\r\n\r\n1. Show only the beginning of long failure messages in log and report by default. I believe we should show so much that typical messages are shown fully, but considerably less than 40 lines that is the current maximum. We could possibly also show more with tests than with keywords and control structures.\r\n2. Have some way to show the full message. Probably a simple \"Show more.\" button/link would be fine.\r\n3. Stop cutting long messages otherwise. This can increase output file sizes, but I doubt the difference is too big.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4931/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4931/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4909","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4909/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4909/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4909/events","html_url":"https://github.com/robotframework/robotframework/issues/4909","id":1957912135,"node_id":"I_kwDOAUSaQ850s15H","number":4909,"title":"Deprecate using arguments starting with `$`, `@`, `&` and `%` as literal values","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":121827221,"node_id":"MDU6TGFiZWwxMjE4MjcyMjE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/deprecation","name":"deprecation","color":"fef2c0","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/71","html_url":"https://github.com/robotframework/robotframework/milestone/71","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/71/labels","id":9838307,"node_id":"MI_kwDOAUSaQ84Alh7j","number":71,"title":"v7.1","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":5,"closed_issues":0,"state":"open","created_at":"2023-08-25T11:26:23Z","updated_at":"2023-11-13T14:55:55Z","due_on":null,"closed_at":null},"comments":1,"created_at":"2023-10-23T19:49:44Z","updated_at":"2023-11-13T14:55:55Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We are planning to support `$var` syntax in addition to ´${var}` in the future (#4674). The plan was to do that already in RF 7.0, but it turned out that this would be too badly backwards incompatible. Probably the biggest problem would be that the Browser library accepts passwords in format `$secret` and resolves the variable value internally to avoid the value being logged automatically. After the planned change `$secret`, would be considered exactly the same as `${secret}` meaning that a confidential value could leak.\r\n\r\nWe still believe that supporting the `$var` syntax is a good idea, but we need to first deprecate using values starting with `$` or any other variable identifier. That means that using, for example,\r\n```\r\nLog Many $value @another\r\n```\r\nwill cause a deprecation warning and the value needs to be escaped like\r\n```\r\nLog Many \\$value \\@another\r\n```\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4909/reactions","total_count":2,"+1":1,"-1":1,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4909/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4633","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4633/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4633/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4633/events","html_url":"https://github.com/robotframework/robotframework/issues/4633","id":1566968889,"node_id":"I_kwDOAUSaQ85dZgw5","number":4633,"title":"(🎁) Add a converter for `typing.Literal`","user":{"login":"KotlinIsland","id":65446343,"node_id":"MDQ6VXNlcjY1NDQ2MzQz","avatar_url":"https://avatars.githubusercontent.com/u/65446343?v=4","gravatar_id":"","url":"https://api.github.com/users/KotlinIsland","html_url":"https://github.com/KotlinIsland","followers_url":"https://api.github.com/users/KotlinIsland/followers","following_url":"https://api.github.com/users/KotlinIsland/following{/other_user}","gists_url":"https://api.github.com/users/KotlinIsland/gists{/gist_id}","starred_url":"https://api.github.com/users/KotlinIsland/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KotlinIsland/subscriptions","organizations_url":"https://api.github.com/users/KotlinIsland/orgs","repos_url":"https://api.github.com/users/KotlinIsland/repos","events_url":"https://api.github.com/users/KotlinIsland/events{/privacy}","received_events_url":"https://api.github.com/users/KotlinIsland/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":4972223712,"node_id":"LA_kwDOAUSaQ88AAAABKF4c4A","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20medium","name":"effort: medium","color":"5319E7","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/71","html_url":"https://github.com/robotframework/robotframework/milestone/71","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/71/labels","id":9838307,"node_id":"MI_kwDOAUSaQ84Alh7j","number":71,"title":"v7.1","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":5,"closed_issues":0,"state":"open","created_at":"2023-08-25T11:26:23Z","updated_at":"2023-11-13T14:55:55Z","due_on":null,"closed_at":null},"comments":20,"created_at":"2023-02-01T22:47:20Z","updated_at":"2023-10-18T18:42:44Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"Look at this moment:\r\n```py\r\ndef foo(a: Literal[1, 2, 3]): ...\r\n```\r\n```robot\r\nSomething\r\n foo 1\r\n```\r\n\r\nCurrently, robot will send a `\"1\"` to this function, which is invalid, I would expect robot to convert the string to an int.\r\n\r\n- #4630","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4633/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4633/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4304","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4304/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4304/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4304/events","html_url":"https://github.com/robotframework/robotframework/issues/4304","id":1196078189,"node_id":"I_kwDOAUSaQ85HSrRt","number":4304,"title":"New technology for Libdoc HTML outputs","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430421,"node_id":"MDU6TGFiZWwxMTA0MzA0MjE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20critical","name":"priority: critical","color":"00441b","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/71","html_url":"https://github.com/robotframework/robotframework/milestone/71","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/71/labels","id":9838307,"node_id":"MI_kwDOAUSaQ84Alh7j","number":71,"title":"v7.1","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":5,"closed_issues":0,"state":"open","created_at":"2023-08-25T11:26:23Z","updated_at":"2023-11-13T14:55:55Z","due_on":null,"closed_at":null},"comments":5,"created_at":"2022-04-07T13:47:55Z","updated_at":"2023-08-25T11:28:15Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Libdoc HTML outputs, similarly as log.html and report.html, use [jQuery Templates](https://github.com/BorisMoore/jquery-tmpl) for generating HTML content based on the date embedded to the outputs when they are created by Libdoc. In practice there's [libdoc.html](https://github.com/robotframework/robotframework/tree/master/src/robot/htmldata/libdoc) file that contains template code as well as JavaScript. It also uses external styles and some external JavaScript files used also by Rebot.\r\n\r\nThe explained setup has worked fine for us, but there's a problem that jQuery Templates have been unmaintained for years. We need to find a replacement for it and at the same time we should enhance our HTML/JavaScript setup in general. At least the following tasks should be done:\r\n\r\n- [ ] Find a replacement for jQuery Templates. We could use its successor [JsRender](https://www.jsviews.com/) or some totally new technology like [Svelte](https://svelte.dev).\r\n- [ ] Separate JavaScript code from HTML templates as much as possible.\r\n- [ ] Add tests for JavaScript model code. A precondition is deciding what test tool(s) to use.\r\n- [ ] Set up GitHub actions to run JavaScript tests.\r\n- [ ] Decide and document JavaScript coding conventions. Using an automated code formatter could be a good idea.\r\n- [ ] Take localization into account. See #3676.\r\n- [ ] Take accessibility into account. See #3879.\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4304/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4304/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/3473","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/3473/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/3473/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/3473/events","html_url":"https://github.com/robotframework/robotframework/issues/3473","id":567598691,"node_id":"MDU6SXNzdWU1Njc1OTg2OTE=","number":3473,"title":"Support controlling listener priority","user":{"login":"ElColmo","id":7458310,"node_id":"MDQ6VXNlcjc0NTgzMTA=","avatar_url":"https://avatars.githubusercontent.com/u/7458310?v=4","gravatar_id":"","url":"https://api.github.com/users/ElColmo","html_url":"https://github.com/ElColmo","followers_url":"https://api.github.com/users/ElColmo/followers","following_url":"https://api.github.com/users/ElColmo/following{/other_user}","gists_url":"https://api.github.com/users/ElColmo/gists{/gist_id}","starred_url":"https://api.github.com/users/ElColmo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ElColmo/subscriptions","organizations_url":"https://api.github.com/users/ElColmo/orgs","repos_url":"https://api.github.com/users/ElColmo/repos","events_url":"https://api.github.com/users/ElColmo/events{/privacy}","received_events_url":"https://api.github.com/users/ElColmo/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":4972223712,"node_id":"LA_kwDOAUSaQ88AAAABKF4c4A","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20medium","name":"effort: medium","color":"5319E7","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/71","html_url":"https://github.com/robotframework/robotframework/milestone/71","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/71/labels","id":9838307,"node_id":"MI_kwDOAUSaQ84Alh7j","number":71,"title":"v7.1","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":5,"closed_issues":0,"state":"open","created_at":"2023-08-25T11:26:23Z","updated_at":"2023-11-13T14:55:55Z","due_on":null,"closed_at":null},"comments":7,"created_at":"2020-02-19T14:14:19Z","updated_at":"2023-10-18T18:38:09Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"I'm on RobotFramework 3.1.2 on Linux.\r\n\r\nI have a Library (MyLibrary) with a built-in listener, implemented via {code}self.ROBOT_LIBRARY_LISTENER=self{code}.\r\n\r\nI also have an external listener, implemented via poc-listener.py.\r\n\r\nI want to be able to specify the Library's built-in listener to be notified about the start and end events *before* the external listener is notified. What happens in practice is that the external listener is always notified first. I use the following command line:\r\n{code}robot --listener poc-listener.py testcases{code}\r\n\r\nNote that \"testcases\" has a test suite file which specifies the library import:\r\n *** Settings ***\r\n Library MyLibrary\r\n\r\n\r\nThis same behaviour happens even if I disable the built-in listener, and specify both listeners via the command line, using:\r\n robot --listener poc-listener.py --listener MyLibrary testcases\r\n\r\nThe only way I've been able to find to control the order in which the listeners execute is by specifying *both* listeners in the Library, using \r\n self.ROBOT_LIBRARY_LISTENER={self, \"poc-listener.py\"}\r\nand by calling robot without any listeners on the command line: \r\n robot testcases.\r\n\r\nObviously this isn't ideal, since \r\n- I'd be forced to add parameters to the library, to specify the external listeners\r\n- this completely bypasses Robot's built-in method of specifying the listeners (via the command line)\r\n- it breaks encapulation, since, in general most Libraries have no business knowing about what other listeners have been specified\r\n\r\nWhat I'd suggest is a mechanism to allow the order of listeners to be specified, where one of the listeners involved is a listener specified within a Library itself, using\r\n self.ROBOT_LIBRARY_LISTENER=self","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/3473/reactions","total_count":4,"+1":4,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/3473/timeline","performed_via_github_app":null,"state_reason":null,"score":1}]}},{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null,"issues":{"total_count":64,"incomplete_results":false,"items":[{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4945","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4945/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4945/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4945/events","html_url":"https://github.com/robotframework/robotframework/issues/4945","id":1994761082,"node_id":"I_kwDOAUSaQ8525aN6","number":4945,"title":"`TypedDict` with forward references do not work in argument conversion","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"open","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":1,"created_at":"2023-11-15T13:16:23Z","updated_at":"2023-11-15T13:19:26Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"If we use a `TypedDict` like below as a type hint, type conversion is done for key `x` but not for `y`. \r\n\r\n```python\r\nfrom typing import TypedDict\r\n\r\nclass Example(TypedDict):\r\n x: int\r\n y: 'int'\r\n```\r\n\r\nThis is different compared to functions and methods where argument conversion is done both for `x` and `y` if we have `def example(x: int, y: 'int')`. The reason is that with `TypedDict` the annotation assigned to `y` by Python is `ForwardRef`, while with functions and methods we get the original string. Our conversion logic handles strings as aliases but doesn't know that to do with `ForwardRef`s.\r\n\r\nA simple fix for this issue is using `typing.get_type_hints` for getting types instead of accessing `__annotations__` like we currently do. That has a problem that using something like `x: 'int | float'` will cause an error with Python < 3.10. We just added support for such stringified types in arguments (#4711) and supporting them with `TypedDict` would be good as well. I guess we need to use `get_type_hints` first and then access `__annotations__` as a fall-back. Then we may get `ForwardRef`s and need to handle them as well.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4945/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4945/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4943","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4943/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4943/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4943/events","html_url":"https://github.com/robotframework/robotframework/issues/4943","id":1990505164,"node_id":"I_kwDOAUSaQ852pLLM","number":4943,"title":"Webpage: Add plausible.io back to Library docs and UserGuide","user":{"login":"Snooz82","id":41592183,"node_id":"MDQ6VXNlcjQxNTkyMTgz","avatar_url":"https://avatars.githubusercontent.com/u/41592183?v=4","gravatar_id":"","url":"https://api.github.com/users/Snooz82","html_url":"https://github.com/Snooz82","followers_url":"https://api.github.com/users/Snooz82/followers","following_url":"https://api.github.com/users/Snooz82/following{/other_user}","gists_url":"https://api.github.com/users/Snooz82/gists{/gist_id}","starred_url":"https://api.github.com/users/Snooz82/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Snooz82/subscriptions","organizations_url":"https://api.github.com/users/Snooz82/orgs","repos_url":"https://api.github.com/users/Snooz82/repos","events_url":"https://api.github.com/users/Snooz82/events{/privacy}","received_events_url":"https://api.github.com/users/Snooz82/received_events","type":"User","site_admin":false},"labels":[{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":110430429,"node_id":"MDU6TGFiZWwxMTA0MzA0Mjk=","url":"https://api.github.com/repos/robotframework/robotframework/labels/task","name":"task","color":"ededed","default":false,"description":"Generic task not listed in release notes"}],"state":"open","locked":false,"assignee":{"login":"Snooz82","id":41592183,"node_id":"MDQ6VXNlcjQxNTkyMTgz","avatar_url":"https://avatars.githubusercontent.com/u/41592183?v=4","gravatar_id":"","url":"https://api.github.com/users/Snooz82","html_url":"https://github.com/Snooz82","followers_url":"https://api.github.com/users/Snooz82/followers","following_url":"https://api.github.com/users/Snooz82/following{/other_user}","gists_url":"https://api.github.com/users/Snooz82/gists{/gist_id}","starred_url":"https://api.github.com/users/Snooz82/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Snooz82/subscriptions","organizations_url":"https://api.github.com/users/Snooz82/orgs","repos_url":"https://api.github.com/users/Snooz82/repos","events_url":"https://api.github.com/users/Snooz82/events{/privacy}","received_events_url":"https://api.github.com/users/Snooz82/received_events","type":"User","site_admin":false},"assignees":[{"login":"Snooz82","id":41592183,"node_id":"MDQ6VXNlcjQxNTkyMTgz","avatar_url":"https://avatars.githubusercontent.com/u/41592183?v=4","gravatar_id":"","url":"https://api.github.com/users/Snooz82","html_url":"https://github.com/Snooz82","followers_url":"https://api.github.com/users/Snooz82/followers","following_url":"https://api.github.com/users/Snooz82/following{/other_user}","gists_url":"https://api.github.com/users/Snooz82/gists{/gist_id}","starred_url":"https://api.github.com/users/Snooz82/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Snooz82/subscriptions","organizations_url":"https://api.github.com/users/Snooz82/orgs","repos_url":"https://api.github.com/users/Snooz82/repos","events_url":"https://api.github.com/users/Snooz82/events{/privacy}","received_events_url":"https://api.github.com/users/Snooz82/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":0,"created_at":"2023-11-13T11:57:05Z","updated_at":"2023-11-13T12:35:42Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"plausible.io is our technique to gather some anonymous visitor numbers on our pages.\r\n\r\nWe have had this in BuiltIn and other Libraries.\r\nWe have to implement this into \"Release Pipeline\" so that with every release it is still in.\r\n\r\nI can do this later before RF 7.0 release.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4943/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4943/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4942","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4942/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4942/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4942/events","html_url":"https://github.com/robotframework/robotframework/issues/4942","id":1989326702,"node_id":"I_kwDOAUSaQ852krdu","number":4942,"title":"Add public argument conversion API for libraries and other tools","user":{"login":"Snooz82","id":41592183,"node_id":"MDQ6VXNlcjQxNTkyMTgz","avatar_url":"https://avatars.githubusercontent.com/u/41592183?v=4","gravatar_id":"","url":"https://api.github.com/users/Snooz82","html_url":"https://github.com/Snooz82","followers_url":"https://api.github.com/users/Snooz82/followers","following_url":"https://api.github.com/users/Snooz82/following{/other_user}","gists_url":"https://api.github.com/users/Snooz82/gists{/gist_id}","starred_url":"https://api.github.com/users/Snooz82/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Snooz82/subscriptions","organizations_url":"https://api.github.com/users/Snooz82/orgs","repos_url":"https://api.github.com/users/Snooz82/repos","events_url":"https://api.github.com/users/Snooz82/events{/privacy}","received_events_url":"https://api.github.com/users/Snooz82/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"open","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":1,"created_at":"2023-11-12T09:42:57Z","updated_at":"2023-11-14T11:24:05Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Hi @pekkaklarck ,\r\n\r\nWe are using `TypeConverter` class in Robot Framework Browser in multiple places, to convert arguments of `*varagrs` when calling internal keywords.\r\nUnfortunately this API is no longer be able to digest real `type` values.\r\n\r\n```python\r\nfrom robot.running.arguments.typeconverters import TypeConverter\r\nTypeConverter.converter_for(int)\r\n```\r\n\r\nWe need “dynamic” type conversion because of many reasons.\r\n\r\nWith dynamic i mean we do Robot type conversion inside Browser lib when Robot is not able to do.\r\n\r\n1. We do have situations where we deprecate positional args in favour of named only ones. In these cases we introduce a `*varags` argument that collects all old positional args and assigns them in the old order to the variables inside. Therefore there is no type hinting in the arguments. but we have a Catalog of the original types which can be used to convert.\r\n2. We do have keywords like `Promise To` and `Wait For Condition` which calls our keywords internally and has `*args` to take the arguments. These two keywords iterate over the called keywords interface and try to convert the arguments according to their type. Also in this case we want/need to support dynamic argument conversion.\r\n\r\nFor us it is not really important, if exactly this function `converter_for()` will stay compatible or if a new function will be implemented to get to get the proper converter for a Python type.\r\nHowever it would be more convenient for our users to stay compatible, so they do not necessarily need to update Browser, when updating RF.\r\n\r\nWe do currently:\r\n```python\r\nconverter = TypeConverter.converter_for(argument_type)\r\n if converter is not None:\r\n params[argument_name] = converter.convert(\r\n argument_name, params.get(argument_name)\r\n )\r\n```\r\n\r\nA Public API for this would be nice too.\r\nOr maybe even just a convenient function for Converting value to type as a static method.\r\nSomething like `TypeConverters.convert_to_type(name: str, value: Any, destination_type: type)` \r\n\r\nCheers","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4942/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4942/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4939","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4939/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4939/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4939/events","html_url":"https://github.com/robotframework/robotframework/issues/4939","id":1987512274,"node_id":"I_kwDOAUSaQ852dwfS","number":4939,"title":"Parsing model: Rename `Return` to `ReturnSetting` and `ReturnStatement` to `Return`","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":0,"created_at":"2023-11-10T12:14:27Z","updated_at":"2023-11-13T12:34:52Z","closed_at":"2023-11-13T12:34:52Z","author_association":"MEMBER","active_lock_reason":null,"body":"The deprecated `[Return]` setting is currently represented in the parsing model using a `Return` class and the `RETURN` statement is represented as `ReturnStatement`. For consistency with other control structures, it's better to change this so that `Return` represents `RETURN` and `[Return]` is represented by `ReturnSetting`. We already added `ReturnSetting` as a forwards compatible alias for `Return` in RF 6.1 (#4656) exactly for this purpose. The `ModelVisitor` base class also support `visit_ReturnSetting` already now.\r\n\r\nIn practice this is what needs to be done:\r\n- Rename `Return` to `ReturnSetting` and remove the current `ReturnSetting` alias.\r\n- Rename `ReturnStatement` to `Return`.\r\n- Add `ReturnStatement` alias for backwards compatibility.\r\n- Add support for `visit_ReturnStatement` to the `ModelVisitor`. It will be called with `Return` nodes if `visit_Return` is missing.\r\n\r\nThis is a backwards incompatible change and tools working with the parsing model need to be updated. When using `ModelVisitor`, the following code ought to work with all versions. If only RF 6.1 or newer needs to be supported, `visit_Return` isn't needed because Robot will automatically call appropriate `visit_ReturnXxx` method.\r\n\r\n```python\r\nfrom robot import __version__ as robot_version\r\nfrom robot.api.parsing import ModelVisitor\r\n\r\n\r\nRF7_OR_NEWER = int(robot_version.split('.')[0]) >= 7\r\n\r\n\r\nclass Example(ModelVisitor):\r\n\r\n def visit_Return(self, node):\r\n if RF7_OR_NEWER:\r\n self.visit_ReturnStatement(node)\r\n else:\r\n self.visit_ReturnSetting(node)\r\n\r\n def visit_ReturnStatement(self, node):\r\n ...\r\n\r\n def visit_ReturnSetting(self, node):\r\n ...\r\n```","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4939/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4939/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4936","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4936/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4936/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4936/events","html_url":"https://github.com/robotframework/robotframework/issues/4936","id":1985697739,"node_id":"I_kwDOAUSaQ852W1fL","number":4936,"title":"Remove bytes support from `normalize` unitility","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":0,"created_at":"2023-11-09T14:05:24Z","updated_at":"2023-11-09T15:15:31Z","closed_at":"2023-11-09T15:15:31Z","author_association":"MEMBER","active_lock_reason":null,"body":"Our `normalize` utility is used for normalizing strings, but it also supports bytes. The reason for the bytes support is that in Python 2 `str` actually was bytes and we needed to handle that in addition to `unicode`. In Python 3 strings and bytes are separated properly, and this kind of string manipulation doesn't make sense with bytes. The bytes support makes the code a bit more complicated and removing it will also make the code a tiny bit faster.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4936/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4936/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4935","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4935/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4935/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4935/events","html_url":"https://github.com/robotframework/robotframework/issues/4935","id":1985689764,"node_id":"I_kwDOAUSaQ852Wzik","number":4935,"title":"Use `casefold`, not `lower`, when comparing strings case-insensitively","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":1,"created_at":"2023-11-09T14:01:26Z","updated_at":"2023-11-09T15:15:32Z","closed_at":"2023-11-09T15:15:31Z","author_association":"MEMBER","active_lock_reason":null,"body":"We currently use [str.lower()](https://docs.python.org/3/library/stdtypes.html#str.lower). when comparing strings case-insensitively, but it would be better to use [str.casefold()](https://docs.python.org/3/library/stdtypes.html#str.casefold). From the documentation of the latter:\r\n\r\n> Casefolding is similar to lowercasing but more aggressive because it is intended to remove all case distinctions in a string. For example, the German lowercase letter 'ß' is equivalent to \"ss\". Since it is already lowercase, [lower()](https://docs.python.org/3/library/stdtypes.html#str.lower) would do nothing to 'ß'; [casefold()](https://docs.python.org/3/library/stdtypes.html#str.casefold) converts it to \"ss\".\r\n\r\nThere aren't too many cases where the difference between `lower` and `casefold` matters, but there's no performance difference between them either and the change is trivial. This change should be done at least to our `normalize()` utility that is used internally in various places both directly and indirectly. Should also change keywords in BuiltIn that support case-insensitivity the same way.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4935/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4935/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4934","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4934/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4934/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4934/events","html_url":"https://github.com/robotframework/robotframework/issues/4934","id":1981604110,"node_id":"I_kwDOAUSaQ852HOEO","number":4934,"title":"Enhance performance of visiting parsing model","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":911065884,"node_id":"MDU6TGFiZWw5MTEwNjU4ODQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/acknowledge","name":"acknowledge","color":"bc82e0","default":false,"description":"To be acknowledged in release notes"},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":1,"created_at":"2023-11-07T15:16:42Z","updated_at":"2023-11-10T13:04:28Z","closed_at":"2023-11-07T15:44:58Z","author_association":"MEMBER","active_lock_reason":null,"body":"When Robot parses data files, it produces a model that both Robot itself and external tools use. Going through the model is easiest by using [visitors](https://robot-framework.readthedocs.io/en/stable/autodoc/robot.parsing.model.html#robot.parsing.model.visitor.ModelVisitor). That is typically pretty fast, but it is possible to enhance the performance, for example, by caching visitor methods. These enhancements are especially important for external tools such as editor plugins that need to process lot of data. \r\n\r\nWe already have PR #4911 by @d-biehl that adds visitor method caching. This issue exists mainly for tracking purposes, but it also covers mentioning caching in visitor documentation. Possible additional performance enhancements can be linked to this same issue as well.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4934/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4934/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4933","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4933/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4933/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4933/events","html_url":"https://github.com/robotframework/robotframework/issues/4933","id":1981359348,"node_id":"I_kwDOAUSaQ852GST0","number":4933,"title":"Type conversion: Ignore hyphens when matching enum members","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":0,"created_at":"2023-11-07T13:26:01Z","updated_at":"2023-11-07T15:44:58Z","closed_at":"2023-11-07T15:44:57Z","author_association":"MEMBER","active_lock_reason":null,"body":"Enum conversion is already now case, space and underscore insensitive (#3611). Ignoring also hyphens would mean that enums like\r\n```python\r\nclass Click(Enum):\r\n left_click = auto()\r\n right_click = auto()\r\n```\r\ncould be used as `left-click` in addition to the exact match `left_click` and other normalized variants like `left click`.\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4933/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4933/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4927","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4927/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4927/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4927/events","html_url":"https://github.com/robotframework/robotframework/issues/4927","id":1976053826,"node_id":"I_kwDOAUSaQ851yDBC","number":4927,"title":"WARN level missing from the log level selector in log.html","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":0,"created_at":"2023-11-03T12:11:50Z","updated_at":"2023-11-07T09:15:06Z","closed_at":"2023-11-03T16:23:26Z","author_association":"MEMBER","active_lock_reason":null,"body":"If you run tests with `--loglevel warn` and tests use `Set Log Level` to change the level to something lower, the log level selector will be shown but the selected option has no value. Clicking the selector allows selecting levels, so this is just a visual UI problem. Running tests with the WARN level is rare, but we could have the level there also otherwise to allow hiding also INFO messages. Implementing this requires only adding `WARN` as one of the possible options in the selector.\r\n\r\nThe same issue occurs also with the ERROR level. I see even less needs to run tests with the ERROR level than there are needs to use WARN and having WARN is already enough to allow hiding INFO messages. Due to how the log level selector is implemented, this would also require considerably more work. I don't think it's worth the effort.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4927/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4927/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4926","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4926/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4926/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4926/events","html_url":"https://github.com/robotframework/robotframework/issues/4926","id":1975019509,"node_id":"I_kwDOAUSaQ851uGf1","number":4926,"title":"WHILE and TRY content are not removed with `--removekeywords all`","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":0,"created_at":"2023-11-02T20:54:27Z","updated_at":"2023-11-07T09:15:06Z","closed_at":"2023-11-02T22:23:38Z","author_association":"MEMBER","active_lock_reason":null,"body":"Older FOR and IF structures are handled properly, but enhancing `--removekeywords` was apparently forgotten when WHILE and TRY were introduced. Other control structures cannot have body in data, but it's possible that e.g. listeners log something that ends up inside them and thus they have a body in the result model. Need to think do we need to care about that and clear them as well.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4926/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4926/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4924","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4924/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4924/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4924/events","html_url":"https://github.com/robotframework/robotframework/issues/4924","id":1974605625,"node_id":"I_kwDOAUSaQ851shc5","number":4924,"title":"WHILE `on_limit` missing from listener v2 attributes","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":0,"created_at":"2023-11-02T16:19:29Z","updated_at":"2023-11-07T09:15:05Z","closed_at":"2023-11-02T22:23:37Z","author_association":"MEMBER","active_lock_reason":null,"body":"WHILE loops got an `on_limit` option for controlling what to do if the loop limit is reached in RF 6.1 (#4562). It seems we forgot to add that to the attributes passed to `start/end_keyword` methods of the listener v2 API. The User Guide claims it would be there which makes the situation worse.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4924/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4924/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4922","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4922/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4922/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4922/events","html_url":"https://github.com/robotframework/robotframework/issues/4922","id":1974277232,"node_id":"I_kwDOAUSaQ851rRRw","number":4922,"title":"Change the log level of `Set Log Level` message from INFO to DEBUG","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":1,"created_at":"2023-11-02T13:37:22Z","updated_at":"2023-11-07T09:15:05Z","closed_at":"2023-11-02T14:21:09Z","author_association":"MEMBER","active_lock_reason":null,"body":"When using `Set Log Level`, it logs a message like\r\n\r\n> Log level changed from DEBUG to INFO.\r\n\r\nusing the INFO level. This message can be useful when debugging issues related to logging, but typically it doesn't add much value. As discussed in #4919, it gets especially annoying if want to disable logging while flattening.\r\n\r\nFor example, a keyword like\r\n\r\n```robotframework\r\nExample\r\n [Tags] robot:flatten\r\n Log Message that we want to preserve.\r\n ${old} = Set Log Level NONE\r\n Log Message that we want to remove.\r\n Set Log Level ${old}\r\n Log Another message that we want to preserve.\r\n```\r\n\r\nwill yield following messages:\r\n\r\n```\r\n15:31:16.892 \tINFO \tMessage that we want to preserve. \t\r\n15:31:16.893 \tINFO \tLog level changed from NONE to INFO. \t\r\n15:31:16.893 \tINFO \tAnother message that we want to preserve.\r\n```\r\n\r\nThe message about changing the level from NONE to INFO is totally useless and distracting. See #4919 for a real world example.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4922/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4922/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4921","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4921/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4921/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4921/events","html_url":"https://github.com/robotframework/robotframework/issues/4921","id":1974232124,"node_id":"I_kwDOAUSaQ851rGQ8","number":4921,"title":"Log levels don't work correctly with `robot:flatten`","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":1,"created_at":"2023-11-02T13:18:45Z","updated_at":"2023-11-07T09:15:04Z","closed_at":"2023-11-02T14:21:09Z","author_association":"MEMBER","active_lock_reason":null,"body":"This problems was initially reported as part of #4919. It can be reproduced, for example, with this keyword:\r\n```robotframework\r\n*** Keywords ***\r\nFlatten with levels\r\n [Tags] robot:flatten\r\n Log INFO 1 INFO\r\n Log DEBUG 1 DEBUG\r\n ${old} = Set Log Level DEBUG\r\n Log INFO 2 INFO\r\n Log DEBUG 2 DEBUG\r\n```\r\nWhen the above keyword is run, it produces the following messages:\r\n```\r\n15:04:58.453 \tINFO \tINFO 1 \t\r\n15:04:58.453 \tDEBUG \tDEBUG 1 \t\r\n15:04:58.453 \tINFO \tLog level changed from TRACE to DEBUG. \t\r\n15:04:58.453 \tINFO \t${old} = TRACE \t\r\n15:04:58.453 \tINFO \tINFO 2 \t\r\n15:04:58.453 \tDEBUG \tDEBUG 2\r\n```\r\nThis is obviously wrong. The first debug message shouldn't be there and the message about the level change should show \"from INFO to DEBUG\".\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4921/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4921/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4915","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4915/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4915/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4915/events","html_url":"https://github.com/robotframework/robotframework/issues/4915","id":1966464351,"node_id":"I_kwDOAUSaQ851Nd1f","number":4915,"title":"`cached_property` attributes are called when importing library","user":{"login":"xiangfan2022","id":107020044,"node_id":"U_kgDOBmD_DA","avatar_url":"https://avatars.githubusercontent.com/u/107020044?v=4","gravatar_id":"","url":"https://api.github.com/users/xiangfan2022","html_url":"https://github.com/xiangfan2022","followers_url":"https://api.github.com/users/xiangfan2022/followers","following_url":"https://api.github.com/users/xiangfan2022/following{/other_user}","gists_url":"https://api.github.com/users/xiangfan2022/gists{/gist_id}","starred_url":"https://api.github.com/users/xiangfan2022/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xiangfan2022/subscriptions","organizations_url":"https://api.github.com/users/xiangfan2022/orgs","repos_url":"https://api.github.com/users/xiangfan2022/repos","events_url":"https://api.github.com/users/xiangfan2022/events{/privacy}","received_events_url":"https://api.github.com/users/xiangfan2022/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":1,"created_at":"2023-10-28T06:39:57Z","updated_at":"2023-11-07T09:15:04Z","closed_at":"2023-11-01T08:26:07Z","author_association":"NONE","active_lock_reason":null,"body":"RobotFramework incorrectly calls cached_property when importing a Python library using the cached_property method.\r\n\r\nI found a previous issue on this topic, #4838, and it seems that the issue has been solved in 6.1.1. But in fact, the issue still exists. Please check the following steps, explanations, and suggestions.\r\n\r\nSteps:\r\n1. Python version 3.11.6\r\n2. RobotFramework version is 6.1.1.\r\n3. Create a python file named test.py as below, two methods decorated by cached_property, one will print some message, and the other will raise a RuntimeError.\r\n```python\r\nfrom functools import cached_property\r\n\r\nclass TestCached:\r\n @cached_property\r\n def cached_property_with_print(self):\r\n print(f\"This is in cached_property_with_print\")\r\n\r\n @cached_property\r\n def cached_property_with_error(self):\r\n raise RuntimeError(\"This is in cached_property_with_error\")\r\n```\r\n4. Create a robot file named test.robot as below, using the Import Library to import test.TestCached class.\r\n```robot\r\n*** Settings ***\r\nDocumentation demo cached_property issue\r\n\r\n*** Test Cases ***\r\n1: import library with cached_property\r\n Import Library test.TestCached\r\n```\r\n5. Run the test.robot and the console output is shown as below.\r\n```bash\r\n==============================================================================\r\nTestcase\r\n==============================================================================\r\nTestcase.Test :: demo cached_property issue\r\n==============================================================================\r\n1: import library with cached_property This is in cached_property_with_print\r\n[ WARN ] Imported library 'test.TestCached' contains no keywords.\r\n1: import library with cached_property | PASS |\r\n------------------------------------------------------------------------------\r\nTestcase.Test :: demo cached_property issue | PASS |\r\n1 test, 1 passed, 0 failed\r\n==============================================================================\r\nTestcase | PASS |\r\n1 test, 1 passed, 0 failed\r\n==============================================================================\r\n```\r\n6. From the console output, the cached_property_with_print was called, but there is no RuntimeError.(This is why issue #4838 was treated as solved)\r\n\r\nExplantions:\r\n1. Check the source code of RobotFramework, file robot.running.testlibraries, line 340-354:\r\n```python\r\nclass _ClassLibrary(_BaseTestLibrary):\r\n\r\n def _get_handler_method(self, libinst, name):\r\n for item in (libinst,) + inspect.getmro(libinst.__class__):\r\n # `isroutine` is used before `getattr` to avoid calling properties.\r\n if (name in getattr(item, '__dict__', ())\r\n and inspect.isroutine(item.__dict__[name])):\r\n try:\r\n method = getattr(libinst, name)\r\n except Exception:\r\n message, traceback = get_error_details()\r\n raise DataError(f'Getting handler method failed: {message}',\r\n traceback)\r\n return self._validate_handler_method(method)\r\n raise DataError('Not a method or function.')\r\n```\r\nThe condition `if (name in getattr(item, '__dict__', ()) and inspect.isroutine(item.__dict__[name]))` cannot filter out the cached_property method. The inspect.isroutine will give True for the cached_property instance. So the cached_property method will be called by line `method = getattr(libinst, name)`. When this line met error, a DataError will be raised to it caller.\r\n\r\n2. Check the source code of RobotFramework, file robot.running.testlibraries, line 271-276:\r\n```python\r\n def _try_to_get_handler_method(self, libcode, name):\r\n try:\r\n return self._get_handler_method(libcode, name)\r\n except DataError as err:\r\n self._adding_keyword_failed(name, err, self.get_handler_error_level)\r\n return None\r\n```\r\n\r\nWhen the error is raised from line `return self._get_handler_method(libcode, name)`, then the line `self._adding_keyword_failed(name, err, self.get_handler_error_level)` will be executed. The `_adding_keyword_failed` will add error message to the syslog file (refer the syslog as below). So there is no error message shown in console output or log file. This is why issue #4838 is considered resolved. In that case, no error raised to console output mislead us.\r\n\r\n3. check syslog:\r\n```\r\n20231027 22:53:04.080 | DEBUG | Started keyword 'BuiltIn.Import Library'.\r\n20231027 22:53:04.087 | INFO | Imported library class 'test.TestCached' from 'test.py'.\r\n20231027 22:53:04.090 | INFO | In library 'test.TestCached': Adding keyword 'cached_property_with_error' failed: Getting handler method failed: This is in cached_property_with_error\r\n20231027 22:53:04.090 | DEBUG | Details:\r\nTraceback (most recent call last):\r\n File \"...functools.py\", line 1001, in __get__\r\n val = self.func(instance)\r\n ^^^^^^^^^^^^^^^^^^^\r\n File \"...test.py\", line 11, in cached_property_with_error\r\n raise RuntimeError(\"This is in cached_property_with_error\")\r\nRuntimeError: This is in cached_property_with_error\r\n20231027 22:53:04.090 | INFO | In library 'test.TestCached': Adding keyword 'cached_property_with_print' failed: Not a method or function.\r\n20231027 22:53:04.090 | INFO | In library 'test.TestCached': Adding keyword 'property_with_print' failed: Not a method or function.\r\n```\r\n\r\nSuggestions:\r\nFor the file robot.running.testlibraries, line 346, `and inspect.isroutine(item.__dict__[name])):`, add one more condition `and callable(item.__dict__[name])`. This property and cached_property instance are not callable, so this condition can filter out them. Then the if condition would look like:\r\n\r\n```python\r\nif (name in getattr(item, '__dict__', ())\r\n and inspect.isroutine(item.__dict__[name]) \r\n and callable(item.__dict__[name])):\r\n```\r\n\r\nHope this issue can be solved and help someone.\r\n\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4915/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4915/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4913","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4913/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4913/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4913/events","html_url":"https://github.com/robotframework/robotframework/issues/4913","id":1962849557,"node_id":"I_kwDOAUSaQ850_rUV","number":4913,"title":"Trace log level logs arguments twice for embedded arguments","user":{"login":"bhirsz","id":8532066,"node_id":"MDQ6VXNlcjg1MzIwNjY=","avatar_url":"https://avatars.githubusercontent.com/u/8532066?v=4","gravatar_id":"","url":"https://api.github.com/users/bhirsz","html_url":"https://github.com/bhirsz","followers_url":"https://api.github.com/users/bhirsz/followers","following_url":"https://api.github.com/users/bhirsz/following{/other_user}","gists_url":"https://api.github.com/users/bhirsz/gists{/gist_id}","starred_url":"https://api.github.com/users/bhirsz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bhirsz/subscriptions","organizations_url":"https://api.github.com/users/bhirsz/orgs","repos_url":"https://api.github.com/users/bhirsz/repos","events_url":"https://api.github.com/users/bhirsz/events{/privacy}","received_events_url":"https://api.github.com/users/bhirsz/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":2,"created_at":"2023-10-26T07:04:48Z","updated_at":"2023-11-07T09:15:03Z","closed_at":"2023-10-26T15:55:10Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"Using following code:\r\n\r\n```\r\n*** Test Cases ***\r\nTest\r\n Keyword With Arguments 1 2\r\n Keyword With Embedded 1\r\n Keyword With Mixed 1 2\r\n\r\n\r\n*** Keywords ***\r\nKeyword With Arguments\r\n [Arguments] ${arg} ${arg2}\r\n Log ${arg}\r\n\r\nKeyword With Embedded ${arg}\r\n Log ${arg}\r\n\r\nKeyword With Mixed ${arg}\r\n [Arguments] ${arg2}\r\n Log ${arg}\r\n\r\n```\r\n\r\nand with log level trace:\r\n\r\n```\r\nrobot --loglevel TRACE test.robot\r\n```\r\n\r\nArguments are logged twice:\r\n![image](https://github.com/robotframework/robotframework/assets/8532066/280bb6dc-3136-48cd-8621-6ffc888b8f9f)\r\n\r\nIt could be because we have embedded variables, but there is not difference for the source of the argument in the log or any indication of that.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4913/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4913/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4912","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4912/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4912/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4912/events","html_url":"https://github.com/robotframework/robotframework/issues/4912","id":1959608740,"node_id":"I_kwDOAUSaQ850zUGk","number":4912,"title":"Parsing model: Move `type` and `tokens` from `_fields` to `_attributes`","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":0,"created_at":"2023-10-24T16:11:04Z","updated_at":"2023-11-07T09:15:03Z","closed_at":"2023-10-24T21:31:59Z","author_association":"MEMBER","active_lock_reason":null,"body":"Our parsing model is based on Python's [ast](https://docs.python.org/3/library/ast.html). The `Statement` base class currently has `type` and `token` listed in its `_fields`. According to the [documentation](https://docs.python.org/3/library/ast.html#ast.AST._fields), `_fields` should contain names of the child nodes and neither `type` or `token` is such a node. A better place to include them is `_attributes` (which doesn't seem to be documented) that we already use for things line `lineno` and `source`.\r\n\r\nIn addition to not using `_fields` for semantically wrong purposes, this change seems to increase the performance of visiting the model. The [generic_visit](https://docs.python.org/3/library/ast.html#ast.NodeVisitor.generic_visit) goes through child nodes listed in `_fields` and thus traverses all tokens unnecessarily. This most likely won't have a big impact in data parsing with Robot itself, but external tools using the parser model can benefit more. See the PR #4911 for more information and other related performance enhancements. This change was also initially part of that PR, but because there's a small behavior change a separate issue was created for it.\r\n\r\nThis change affects logging/debugging a bit. When using [ast.dump](https://docs.python.org/3/library/ast.html#ast.dump) with default arguments, it shows all fields but doesn't show attributes. Thus the type and the tokens are nowadays shown with statements, but they won't be included anymore in the future. It is, however, possible to use `include_attributes=True` to get attributes listed. Not showing tokens by default is actually mostly a good thing with bigger and more complicated models.\r\n\r\nThis change affects also anyone who inspects `_fields` or `_attributes`. I don't see why anyone would do that, but it's anyway a good idea to give this issue the ´backwards incompatible` label and mention the change in the release notes.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4912/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4912/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4910","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4910/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4910/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4910/events","html_url":"https://github.com/robotframework/robotframework/issues/4910","id":1958802702,"node_id":"I_kwDOAUSaQ850wPUO","number":4910,"title":"Make listener v3 the default listener API","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":0,"created_at":"2023-10-24T08:54:43Z","updated_at":"2023-10-24T08:54:43Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Currently when creating listeners, you need to explicitly specify are you using listener API version 2 or 3. Now that the v3 API is getting better (#3296), we can make it the default. In other words, if API version isn't specified, we assume the v3 API is used.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4910/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4910/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4905","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4905/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4905/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4905/events","html_url":"https://github.com/robotframework/robotframework/issues/4905","id":1951763353,"node_id":"I_kwDOAUSaQ850VYuZ","number":4905,"title":"Support creating variable name based on another variable like `${${VAR}}` in Variables section","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":1,"created_at":"2023-10-19T09:52:02Z","updated_at":"2023-11-07T09:15:02Z","closed_at":"2023-10-19T10:15:42Z","author_association":"MEMBER","active_lock_reason":null,"body":"Example:\r\n```robotframework\r\n*** Variables ***\r\n${X} Y # Normal assignment. Creates ${X} with value Y.\r\n${${X}} Z # Assignment based on another variable. Creates ${Y} with value Z.\r\n```\r\n\r\nThis is likely not that widely needed feature, but we plan to support this approach with the new `VAR` syntax (#3761) and we also have an issue about supporting it when creating variables based on keyword return values (#4545). Especially the `VAR` usage will be very close to what proposed above and supporting the same in the Variables section is good for consistency.\r\n\r\n```\r\nVAR ${X} Y # Normal assignment. Creates ${X} with value Y.\r\nVAR ${${X}} Z # Assignment based on another variable. Creates ${Y} with value Z.\r\n```\r\n\r\nImplementation shares most of the same code that ´VAR` uses, so the extra effort is really small.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4905/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4905/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4904","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4904/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4904/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4904/events","html_url":"https://github.com/robotframework/robotframework/issues/4904","id":1950514178,"node_id":"I_kwDOAUSaQ850QnwC","number":4904,"title":"Importing static variable file with arguments does not fail","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":0,"created_at":"2023-10-18T19:38:04Z","updated_at":"2023-11-07T09:15:01Z","closed_at":"2023-10-18T19:53:49Z","author_association":"MEMBER","active_lock_reason":null,"body":"Static variable files, i.e. Python based variable files without the `get_variables` method, do not accept arguments. There is, however, no error and arguments are silently ignored. That's wrong, invalid syntax should cause an error.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4904/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4904/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4903","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4903/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4903/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4903/events","html_url":"https://github.com/robotframework/robotframework/issues/4903","id":1949634502,"node_id":"I_kwDOAUSaQ850NQ_G","number":4903,"title":"Support argument conversion and named arguments with dynamic variable files","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":0,"created_at":"2023-10-18T12:28:23Z","updated_at":"2023-11-07T09:15:01Z","closed_at":"2023-10-18T19:53:49Z","author_association":"MEMBER","active_lock_reason":null,"body":"If we have a dynamic variable file like\r\n```python\r\ndef get_variables(a: int = 0, b: float = 0.0):\r\n ...\r\n```\r\nusing argument conversion like\r\n```\r\nVariables example.py 42 3.14\r\n```\r\nand also using named arguments like\r\n```\r\nVariables example.py b=${3.14}\r\n```\r\ndoesn't work.\r\n\r\nThis is different to library imports, keywords, and also to extensions like listeners. We have the needed functionality to support argument conversion and named arguments available and hooking it up with variable files is easy. Let's do that!\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4903/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4903/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4900","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4900/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4900/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4900/events","html_url":"https://github.com/robotframework/robotframework/issues/4900","id":1941724920,"node_id":"I_kwDOAUSaQ85zvF74","number":4900,"title":"Make keywords and control structures in log look more like original data","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":0,"created_at":"2023-10-13T10:57:45Z","updated_at":"2023-11-07T09:15:01Z","closed_at":"2023-10-13T15:21:56Z","author_association":"MEMBER","active_lock_reason":null,"body":"Currently keywords and control structures are formatted differently in the log file than they look in the data. For example, you have a keyword call like\r\n```\r\nLog Many a b c\r\n```\r\nand a FOR loop like\r\n```\r\nFOR ${x} IN cat dog horse\r\n```\r\nin the data, they look like\r\n```\r\nKEYWORD BuiltIn.Log Many a, b, c\r\n```\r\nand\r\n```\r\nFOR ${x} IN [ cat | dog | horse ]\r\n```\r\nin the log file.\r\n\r\nI believe this should be changed. Most importantly, we should use the normal four space separator between items and omit all markers that wouldn't be supported in the data. The above examples could look like\r\n```\r\nKEYWORD BuiltIn.Log Many a b c\r\n```\r\nand\r\n```\r\nFOR ${x} IN cat dog horse\r\n```\r\n\r\n\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4900/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4900/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4898","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4898/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4898/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4898/events","html_url":"https://github.com/robotframework/robotframework/issues/4898","id":1939927024,"node_id":"I_kwDOAUSaQ85zoO_w","number":4898,"title":"Resolving special variables can fail with confusing message","user":{"login":"bhirsz","id":8532066,"node_id":"MDQ6VXNlcjg1MzIwNjY=","avatar_url":"https://avatars.githubusercontent.com/u/8532066?v=4","gravatar_id":"","url":"https://api.github.com/users/bhirsz","html_url":"https://github.com/bhirsz","followers_url":"https://api.github.com/users/bhirsz/followers","following_url":"https://api.github.com/users/bhirsz/following{/other_user}","gists_url":"https://api.github.com/users/bhirsz/gists{/gist_id}","starred_url":"https://api.github.com/users/bhirsz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bhirsz/subscriptions","organizations_url":"https://api.github.com/users/bhirsz/orgs","repos_url":"https://api.github.com/users/bhirsz/repos","events_url":"https://api.github.com/users/bhirsz/events{/privacy}","received_events_url":"https://api.github.com/users/bhirsz/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":10,"created_at":"2023-10-12T12:48:22Z","updated_at":"2023-11-07T09:15:00Z","closed_at":"2023-10-19T21:44:30Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"Considering such example:\r\n\r\n```\r\n*** Variables ***\r\n${TABLE} example\r\n\r\n\r\n*** Test Cases ***\r\nSpecial Variables\r\n IF all(item not in $TABLE for item in (\"one\", \"two\"))\r\n Log ${TABLE}\r\n ELSE\r\n Log not ${TABLE}\r\n END\r\n\r\n```\r\n\r\nI'm not sure if ``all(item not in $TABLE for item in (\"one\", \"two\"))`` is supported at all but the error I'm getting looks incorrect - it contains 'internal' naming used in RF (with prefix ``RF_VAR_``):\r\n\r\n```\r\nNameError: name 'RF_VAR_TABLE' is not defined\r\n```","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4898/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4898/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4896","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4896/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4896/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4896/events","html_url":"https://github.com/robotframework/robotframework/issues/4896","id":1938684043,"node_id":"I_kwDOAUSaQ85zjfiL","number":4896,"title":"Support `separator=` configuration option with scalar variables in Variables section","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":0,"created_at":"2023-10-11T20:34:49Z","updated_at":"2023-11-07T09:15:00Z","closed_at":"2023-10-11T21:13:04Z","author_association":"MEMBER","active_lock_reason":null,"body":"In the Variables section, if a scalar variable is created so that it gets more then one value, values are concatenated together so that the final value will be a single sting. By default values are joined with a space, but using a special `SEPARATOR=` marker as the first value makes it possible to change it.\r\n```robotframework\r\n*** Variables ***\r\n${JOINED} These values are joined together with a space.\r\n${MULTILINE} SEPARATOR=\\n First line. Second line. Third line.\r\n```\r\nWe are going to introduce new `VAR` syntax (#3761) for creating variables inside tests and keywords, and plan to support concatenation of scalar values with it as well. That syntax gets a separate `scope` option for controlling the scope where the variable is set, and also the separator will be set using a [separator` option](https://github.com/robotframework/robotframework/issues/3761#issuecomment-1757525898) instead of using a special marker like above.\r\n\r\nFor consistency reasons, we should support the `separator` option also in the Variables section. In practice it would mean that the latter example above could be written like this:\r\n```robotframework\r\n*** Variables ***\r\n${MULTILINE} First line. Second line. Third line. separator=\\n\r\n```\r\nHaving two ways to control the separator isn't optimal, but there being a consistent syntax that can be used regardless how variables are created is in my opinion more important. We may consider deprecating the `SEPARATOR` marker at some point, but there's absolutely no hurry with it.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4896/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4896/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4886","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4886/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4886/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4886/events","html_url":"https://github.com/robotframework/robotframework/issues/4886","id":1929035490,"node_id":"I_kwDOAUSaQ85y-r7i","number":4886,"title":"`Set Variable If` is slow if it has several conditions","user":{"login":"ahydra447","id":142371473,"node_id":"U_kgDOCHxqkQ","avatar_url":"https://avatars.githubusercontent.com/u/142371473?v=4","gravatar_id":"","url":"https://api.github.com/users/ahydra447","html_url":"https://github.com/ahydra447","followers_url":"https://api.github.com/users/ahydra447/followers","following_url":"https://api.github.com/users/ahydra447/following{/other_user}","gists_url":"https://api.github.com/users/ahydra447/gists{/gist_id}","starred_url":"https://api.github.com/users/ahydra447/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ahydra447/subscriptions","organizations_url":"https://api.github.com/users/ahydra447/orgs","repos_url":"https://api.github.com/users/ahydra447/repos","events_url":"https://api.github.com/users/ahydra447/events{/privacy}","received_events_url":"https://api.github.com/users/ahydra447/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":1,"created_at":"2023-10-05T20:51:17Z","updated_at":"2023-11-07T09:14:59Z","closed_at":"2023-10-26T00:58:21Z","author_association":"NONE","active_lock_reason":null,"body":"We have a test suite that has a 28-case `Set Variable If`, viz.\r\n\r\n```\r\n${action} The ${element} At Screen XYZ\r\n ${locator} Set Variable If \"${element}\"==\"Element 1\" ${ELEMENT_1_LOCATOR}\r\n ... \"${element}\"==\"Element 2\" ${ELEMENT_2_LOCATOR}\r\n ... \"${element}\"==\"Element 3\" ${ELEMENT_3_LOCATOR}\r\netc\r\n```\r\n\r\nThe performance of this is fine if the `${element}` matches a condition high up in the list, but then starts to become very slow for those lower down. Specifically, according to the logs the time to run the few comparisons is around 1ms each, but after a few it starts approximately doubling for each subsequent comparison. In the logs below the time taken for a single comparison reached 9.1 seconds by the time it got to the successful condition, which in this case was the 23rd case of the `Set Variable If`. Some calls in the actual testcase that's using this took even longer as they referenced elements further down the list, with the result that a test suite with fewer than 20 keyword calls overall was nowhere close to finishing even after ten minutes.\r\n\r\nI did some profiling by hacking `time.time()` printouts into the Robot Framework source code in my venv. The delay seems to be in the logging code, specifically the `output.listeners.Listeners` and `output.listeners.LibraryLIsteners` classes:\r\n\r\n```\r\n before LOGGER.start_keyword: 1696503795.7360394\r\n took 3.814697265625e-06\r\n took 4.9114227294921875e-05\r\n took 4.5487611293792725\r\n took 4.605533123016357\r\n```\r\n\r\n(values above are in seconds) - you can see the two classes took 9.1 seconds between them to process the `start_keyword` call.\r\n\r\nThe first line of the above output comes from a line I added to the very top of the calling function, `output.output.Output.start_keyword`, while the rest of the debug output was generated by changing the `start_keyword` function of the `output.logger.Logger` class to look like this:\r\n\r\n```\r\n def start_keyword(self, keyword):\r\n # TODO: Could _prev_log_message_handlers be used also here?\r\n self._started_keywords += 1\r\n self.log_message = self._log_message\r\n for logger in self.start_loggers:\r\n s = time.time()\r\n logger.start_keyword(keyword)\r\n e = time.time()\r\n print(f\" {type(logger)} took {e-s}\")\r\n```\r\n\r\nwhere my changes were to add the `s = `, `e = ` and `print` lines. Unfortunately I was unable to drill down further as I got lost in the maze of runtime-defined functions. My suspicion was that perhaps the XML/HTML loggers might take a while if they have to reshuffle large amounts of XML/HTML in order to insert a nested log about a keyword call - when you view the HTML log for the `Set Variable If`, it is nested 23 layers deep.\r\n\r\nRobot Framework version is 6.1.1 (according to version.py), running in Python 3.10.12 on Ubuntu 22.04. The test suite is invoked using the following command `pabot --pabotlib --processes 1 --variablefile local_variable.py --outputdir Log --include `.\r\n\r\nHappy to supply any other info, screenshots etc to help. The problem is readily reproducible on my end and for now I'm going to work around it by splitting up the keyword into several keywords each with a smaller `Set Variable If`.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4886/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4886/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4885","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4885/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4885/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4885/events","html_url":"https://github.com/robotframework/robotframework/issues/4885","id":1928900932,"node_id":"I_kwDOAUSaQ85y-LFE","number":4885,"title":"Add `full_name` to replace `longname` to suite and test objects","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":0,"created_at":"2023-10-05T19:11:33Z","updated_at":"2023-11-07T09:14:59Z","closed_at":"2023-10-05T19:14:37Z","author_association":"MEMBER","active_lock_reason":null,"body":"Both `TestSuite` and `TestCase` objects have a `longname` attribute that contains the name of the suite/test prefixed with the `longname` of the parent suite. The functionality is useful, but the name doesn't follow our coding style and is bad in general. We are enhancing our APIs also otherwise and the result side `Keyword` object just got `full_name` for similar purpose than `longname` (#4884). That name works well also with suites and tests.\r\n\r\nThe plan is to do the following:\r\n1. In RF 7.0 introduce the `full_name` property.\r\n2. Preserve `longname` in RF 7.0. Mention that it is deprecated in its documentation but don't emit actual deprecation warnings.\r\n3. Deprecate `longname` \"loudly\" in RF 8.0 or possibly later.\r\n4. In some suitable future release remove `longname`.\r\n\r\nThis issue covers the two first steps above.\r\n\r\n\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4885/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4885/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4884","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4884/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4884/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4884/events","html_url":"https://github.com/robotframework/robotframework/issues/4884","id":1928220873,"node_id":"I_kwDOAUSaQ85y7lDJ","number":4884,"title":"Result model: Enhance storing keyword name","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":121827221,"node_id":"MDU6TGFiZWwxMjE4MjcyMjE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/deprecation","name":"deprecation","color":"fef2c0","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":2,"created_at":"2023-10-05T12:51:08Z","updated_at":"2023-11-08T14:39:45Z","closed_at":"2023-10-05T14:46:41Z","author_association":"MEMBER","active_lock_reason":null,"body":"Currently the `Keyword` object in the result model has these attributes for specifying its name:\r\n\r\n- `kwname` that contains the actual keyword name like `Log`. This attribute doesn't follow Python naming conventions. In output.xml the attribute is saved as `name`.\r\n- `libname` that contains the library _or_ resource file name like `BuiltIn`. Doesn't follow naming conventions either and because it can contain also a resource file name the attribute is badly named in general. In output.xml the attribute is saved as `library`.\r\n- `name` that contains the full name like `BuitlIn.Log`. This attribute is a read-only property that gets its value from the aforementioned attributes. This is inconsistent with the execution side `Keyword` object that has `name` as a normal settable attribute. This information isn't stored to output.xml because it can be constructed based on the above two attributes.\r\n- `sourcename` that contains the original source name when using embedded arguments (#3750). Doesn't fully follow naming conventions.\r\n\r\nAs explained above, all these attributes have some issues. We are currently cleaning up the result model and the above issues need to be resolved as part of that. One motivation for this cleanup is making sure that the model doesn't contain anything stupid before we add JSON support to it (#4847). Another reason is to make it more consistent with output.xml. After thinking about alternatives, we have decided to do the following:\r\n\r\n- Old `kwname` is renamed to `name` This is consistent with the execution side `Keyword` and also matches the attribute name in output.xml.\r\n- Old `libname` is renamed to `owner`. It will be stored as `owner` also in output.xml.\r\n- New `full_name` is introduced to replace the old `name`.\r\n- `sourcename` is renamed to `source_name` in the model and in output.xml.\r\n- `kwname`, `libname` and `sourcename` will be preserved as propertys. They are considered deprecated, but accessing them won't cause a deprecation warning yet in this release.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4884/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4884/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4883","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4883/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4883/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4883/events","html_url":"https://github.com/robotframework/robotframework/issues/4883","id":1926600085,"node_id":"I_kwDOAUSaQ85y1ZWV","number":4883,"title":"Result model: Add `message` to keywords and control structures and remove `doc` from controls","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972223712,"node_id":"LA_kwDOAUSaQ88AAAABKF4c4A","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20medium","name":"effort: medium","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":5,"created_at":"2023-10-04T16:36:45Z","updated_at":"2023-11-07T09:14:58Z","closed_at":"2023-10-04T21:41:56Z","author_association":"MEMBER","active_lock_reason":null,"body":"Currently some control structures in the result model have a `doc` attribute that's represented in output.xml as a `` element. This attribute is used for storing information about removing or flattening items using `--flattenkeywords` and `--removekeywords` options. It's a rather strange attribute because it's not possible to set documentation for control structures in data. It's also also inconsistent that only some of the control structures have it.\r\n\r\nOn the other hand, control structures don't have a `message` attribute that would contain their possible failure message, they only have `status`. Keywords have in practice don't have `message` either. They do have the attribute, it is only used with teardowns to make possible to see the error message if a suite teardown fails.\r\n\r\nTo fix the above issues, we have decided to do the following:\r\n- Add `message` to all keywords and control structures and always store the possible failure message in it.\r\n- Use `message` also for storing information about flattening or removing items.\r\n- Remove `doc` from control structures.\r\n\r\nThe main benefit of these changes is making the result model simpler and more consistent. It is important in general, but it gets even more important now that we are adding JSON serialization support to it (#4847) and that format will likely be used also by external tools.\r\n\r\nThe `doc` attribute that control structures currently have won't be directly removed, but it will be deprecated as part of #4846. Old output.xml files with possible `` elements with control structures will still be supported. Whatever content `` contains will be added to `message`.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4883/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4883/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4880","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4880/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4880/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4880/events","html_url":"https://github.com/robotframework/robotframework/issues/4880","id":1913409145,"node_id":"I_kwDOAUSaQ85yDE55","number":4880,"title":"Initially empty test fails even if pre-run modifier adds content to it","user":{"login":"rikerfi","id":17685527,"node_id":"MDQ6VXNlcjE3Njg1NTI3","avatar_url":"https://avatars.githubusercontent.com/u/17685527?v=4","gravatar_id":"","url":"https://api.github.com/users/rikerfi","html_url":"https://github.com/rikerfi","followers_url":"https://api.github.com/users/rikerfi/followers","following_url":"https://api.github.com/users/rikerfi/following{/other_user}","gists_url":"https://api.github.com/users/rikerfi/gists{/gist_id}","starred_url":"https://api.github.com/users/rikerfi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rikerfi/subscriptions","organizations_url":"https://api.github.com/users/rikerfi/orgs","repos_url":"https://api.github.com/users/rikerfi/repos","events_url":"https://api.github.com/users/rikerfi/events{/privacy}","received_events_url":"https://api.github.com/users/rikerfi/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":4,"created_at":"2023-09-26T12:30:41Z","updated_at":"2023-11-07T09:14:57Z","closed_at":"2023-10-09T14:18:41Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"It seems that adding a keyword to an empty test case fails when using prerunmodifier. Below example was working with RF 6.0.2, but not any more with 6.1.1. If test case has some keywords in it, then the modifier works fine.\r\n\r\n.robot file\r\n\r\n```\r\n*** Test Cases ***\r\nPass with Log\r\n # Modifier adds keyword to this test case\r\n Log Hello from .robot\r\n\r\nPass with Modifier\r\n # Modifier fails to add keyword\r\n # Log Hello from .robot\r\n```\r\nk.py file\r\n```python\r\nfrom robot.api import SuiteVisitor\r\nfrom robot.running.model import Keyword\r\n\r\n\r\nclass K(SuiteVisitor):\r\n def start_suite(self, suite):\r\n for test in suite.tests:\r\n kw = Keyword('Log', args=['Hello from MODIFIER'])\r\n test.body.append(kw)\r\n\r\n def start_keyword(self, keyword: Keyword) -> bool | None:\r\n print(f'KEYWORD: {keyword.parent.name}:{keyword.name}')\r\n```\r\nrun `robot --pythonpath . --prerunmodifier k.K .` ","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4880/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4880/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4876","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4876/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4876/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4876/events","html_url":"https://github.com/robotframework/robotframework/issues/4876","id":1906506667,"node_id":"I_kwDOAUSaQ85xovur","number":4876,"title":"Loudly deprecate `[Return]` setting","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":121827221,"node_id":"MDU6TGFiZWwxMjE4MjcyMjE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/deprecation","name":"deprecation","color":"fef2c0","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":4,"created_at":"2023-09-21T09:16:21Z","updated_at":"2023-11-10T11:28:53Z","closed_at":"2023-10-07T06:47:33Z","author_association":"MEMBER","active_lock_reason":null,"body":"We added the `RETURN` statement to replace the `[Return]` setting in RF 5.0 (#4078). The reason was that the setting has various limitations explained in the aforementioned issue. At the moment the old setting still works and there's no visible deprecation warning. I believe a more loud deprecation should be added now for the following reasons:\r\n- It is confusing for users that there is both `RETURN` and `[Return]`. Properly deprecating and eventually removing the latter simplifies the syntax.\r\n- Syntax like this requires special handling internally in Robot. Being able to remove it simplifies the code.\r\n- It has been already over 1.5 years since RF 5.0 was released. Users have had time to start taking `RETURN` into use.\r\n- Although using `[Return]` will case a deprecation warning, it will still continue to work during the whole RF 7.x lifetime. It will earliest be removed in RF 8.0.\r\n\r\nNotice that the [Robotidy](https://robotidy.readthedocs.io/en/stable/index.html) tool can convert `[Return]` to `RETURN` automatically.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4876/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4876/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4870","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4870/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4870/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4870/events","html_url":"https://github.com/robotframework/robotframework/issues/4870","id":1897220360,"node_id":"I_kwDOAUSaQ85xFUkI","number":4870,"title":"User keyword teardown missing from running model JSON schema","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"assignees":[{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v7.0","description":"A major release supporting `start/end_keyword` methods with the listener API v3 (#3296), native `VAR` syntax for creating variables (#3761) and mixing embedded and normal arguments with library keywords (#4710) as well as various other interesting new features. Requires Python 3.8 or newer (#4294).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":53,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2023-11-15T13:16:23Z","due_on":"2023-12-06T08:00:00Z","closed_at":null},"comments":0,"created_at":"2023-09-14T20:01:37Z","updated_at":"2023-11-07T09:14:56Z","closed_at":"2023-09-14T21:43:54Z","author_association":"MEMBER","active_lock_reason":null,"body":"The running model got JSON serialization support in RF 6.1 (#3902) and the JSON format got a schema. The schema currently doesn't include teardown with user keywords.\r\n\r\nThe reason our tests didn't notice this issue is that the schema allows extra attributes. Thus the teardown included in actual spec files was accepted although it wasn't in the schema. My intention was to not allow extra attributes in the schema, but apparently configuring the model root element wasn't enough and instead the configuration needs to be done in a common base class. This needs to be fixed as well.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4870/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4870/timeline","performed_via_github_app":null,"state_reason":"completed","score":1}]}},{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z","issues":{"total_count":77,"incomplete_results":false,"items":[{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4793","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4793/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4793/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4793/events","html_url":"https://github.com/robotframework/robotframework/issues/4793","id":1751454828,"node_id":"I_kwDOAUSaQ85oZRRs","number":4793,"title":"Enhance programmatic API to create resource files","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":0,"created_at":"2023-06-11T14:36:37Z","updated_at":"2023-06-11T16:22:43Z","closed_at":"2023-06-11T16:22:43Z","author_association":"MEMBER","active_lock_reason":null,"body":"The main motivation is making it easier to create resource files so that they can be converted to JSON. JSON support it self is #3902. `ResourceFile` already has `to_json` and `from_json` methods, but two additional things are needed to make it's usage more convenient:\r\n\r\n- It needs to be exposed via `robot.running`.\r\n- It needs `from_file_system`, `from_string` and `from_model` class methods that also `TestSuite` has.\r\n\r\nAfter these enhancement this is possible:\r\n```python\r\nfrom robot.running import ResourceFile\r\n\r\nresource = ResourceFile.from_file_system('example.resource')\r\nresource.to_json('example.rsrc')\r\n```","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4793/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4793/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4792","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4792/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4792/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4792/events","html_url":"https://github.com/robotframework/robotframework/issues/4792","id":1749749552,"node_id":"I_kwDOAUSaQ85oSw8w","number":4792,"title":"Add Vietnamese translation ","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":911065884,"node_id":"MDU6TGFiZWw5MTEwNjU4ODQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/acknowledge","name":"acknowledge","color":"bc82e0","default":false,"description":"To be acknowledged in release notes"},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":2,"created_at":"2023-06-09T11:53:31Z","updated_at":"2023-06-13T14:00:42Z","closed_at":"2023-06-09T11:54:49Z","author_association":"MEMBER","active_lock_reason":null,"body":"We added translation infrastructure and as well as translations for various languages in RF 6.0 (#4390). We now have PR #4791 adding Vietnamese translation.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4792/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4792/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4781","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4781/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4781/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4781/events","html_url":"https://github.com/robotframework/robotframework/issues/4781","id":1737643682,"node_id":"I_kwDOAUSaQ85nklai","number":4781,"title":"Libdoc: Type info for `TypedDict` doesn't list `Mapping` in converted types","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":0,"created_at":"2023-06-02T07:51:16Z","updated_at":"2023-06-05T08:09:05Z","closed_at":"2023-06-02T08:11:27Z","author_association":"MEMBER","active_lock_reason":null,"body":"We added explicit `TypedDict` conversion in RF 6.0 (#4477) and Libdoc handled them specially already earlier. There's a very small issue that Libdoc only lists `string` as a converted type when we also convert any `Mapping`.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4781/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4781/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4780","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4780/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4780/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4780/events","html_url":"https://github.com/robotframework/robotframework/issues/4780","id":1737611887,"node_id":"I_kwDOAUSaQ85nkdpv","number":4780,"title":"Libdoc crashes if it does not detect documentation format","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":0,"created_at":"2023-06-02T07:24:31Z","updated_at":"2023-06-05T08:09:05Z","closed_at":"2023-06-02T08:11:27Z","author_association":"MEMBER","active_lock_reason":null,"body":"If documentation format isn't detected automatically based on the output file extension or given explicitly using `--format`, Libdoc execution fails with `AttributeError`:\r\n```\r\n$ libdoc BuiltIn BuiltIn\r\nUnexpected error: AttributeError: 'NoneType' object has no attribute 'upper'\r\nTraceback (most recent call last):\r\n File \"/home/peke/Devel/robotframework/src/robot/utils/application.py\", line 81, in _execute\r\n rc = self.main(arguments, **options)\r\n File \"src/robot/libdoc.py\", line 197, in main\r\n libdoc.save(output, format, self._validate_theme(theme, format))\r\n File \"/home/peke/Devel/robotframework/src/robot/libdocpkg/model.py\", line 93, in save\r\n with LibdocOutput(output, format) as outfile:\r\n File \"/home/peke/Devel/robotframework/src/robot/libdocpkg/output.py\", line 27, in __init__\r\n self._format = format.upper()\r\nAttributeError: 'NoneType' object has no attribute 'upper'\r\n```\r\n\r\nThis is an error situation, but it should be reported correctly.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4780/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4780/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4777","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4777/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4777/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4777/events","html_url":"https://github.com/robotframework/robotframework/issues/4777","id":1731173138,"node_id":"I_kwDOAUSaQ85nL5sS","number":4777,"title":"Parse files with `.robot.rst` extension automatically","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":0,"created_at":"2023-05-29T19:46:43Z","updated_at":"2023-06-05T08:09:04Z","closed_at":"2023-05-29T19:57:44Z","author_association":"MEMBER","active_lock_reason":null,"body":"Robot Framework can parse reStructuredText files having `.rst` or `.rest` extension, but to avoid parsing unrelated reST files that support needs to be enabled separately by using the `--extension` option. To make using reST files more convenient, we could automatically parse files with `.robot.rst` extension.\r\n\r\nThis is easy to implement, because we already support for such multipart extensions with custom parsers (#1283).","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4777/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4777/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4771","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4771/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4771/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4771/events","html_url":"https://github.com/robotframework/robotframework/issues/4771","id":1722483268,"node_id":"I_kwDOAUSaQ85mqwJE","number":4771,"title":"Python 3.12 compatibility","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430421,"node_id":"MDU6TGFiZWwxMTA0MzA0MjE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20critical","name":"priority: critical","color":"00441b","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":3,"created_at":"2023-05-23T17:11:45Z","updated_at":"2023-06-07T12:23:17Z","closed_at":"2023-05-24T22:36:37Z","author_association":"MEMBER","active_lock_reason":null,"body":"Python 3.12 will be released in October and the first beta is now available. I tested it and noticed that our Python evaluation using the special variable syntax `$var` is broken. This seems to be due to a subtle change in Python's tokenizer (python/cpython#104802). Luckily fixing our code is easy an with the fix all our acceptance tests pass.\r\n\r\nA much smaller issue is that our tests seem have invalid escape sequences like `'\\.'` that are nowadays reported more visibly than earlier. They need be changed to `'\\\\.'` or `r'\\.'`.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4771/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4771/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4765","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4765/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4765/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4765/events","html_url":"https://github.com/robotframework/robotframework/issues/4765","id":1707618980,"node_id":"I_kwDOAUSaQ85lyDKk","number":4765,"title":"Add forward compatible `start_time`, `end_time` and `elapsed_time` propertys to result objects","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":0,"created_at":"2023-05-12T13:14:08Z","updated_at":"2023-06-05T08:09:03Z","closed_at":"2023-05-13T13:33:06Z","author_association":"MEMBER","active_lock_reason":null,"body":"The plan is to enhance performance of getting and processing timestamps in RF 7.0 (#4258). Part of that is internally representing start and end times as `datetime` objects and elapsed time as a `timedelta`. The old `starttime`, `endtime` and `elapsed` time attributes will be preserved for backwards compatibility reasons, and new `start_time`, `end_time` and `elapsed_time` attributes added.\r\n\r\nFor forward compatibility reasons we should add `start_time`, `end_time` and `elapsed_time` already in RF 6.1. They can be propetys that get their values from the old attributes. In RF 7 we can then change them to be the \"real\" attributes and make the old ones propertys.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4765/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4765/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4756","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4756/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4756/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4756/events","html_url":"https://github.com/robotframework/robotframework/issues/4756","id":1695574065,"node_id":"I_kwDOAUSaQ85lEGgx","number":4756,"title":"Failed keywords inside skipped tests are not expanded","user":{"login":"karniemi","id":5871676,"node_id":"MDQ6VXNlcjU4NzE2NzY=","avatar_url":"https://avatars.githubusercontent.com/u/5871676?v=4","gravatar_id":"","url":"https://api.github.com/users/karniemi","html_url":"https://github.com/karniemi","followers_url":"https://api.github.com/users/karniemi/followers","following_url":"https://api.github.com/users/karniemi/following{/other_user}","gists_url":"https://api.github.com/users/karniemi/gists{/gist_id}","starred_url":"https://api.github.com/users/karniemi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/karniemi/subscriptions","organizations_url":"https://api.github.com/users/karniemi/orgs","repos_url":"https://api.github.com/users/karniemi/repos","events_url":"https://api.github.com/users/karniemi/events{/privacy}","received_events_url":"https://api.github.com/users/karniemi/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":20,"created_at":"2023-05-04T08:58:14Z","updated_at":"2023-06-05T08:09:02Z","closed_at":"2023-05-17T18:12:20Z","author_association":"NONE","active_lock_reason":null,"body":"We are just upgrading from 3.x to 6.0.2. We are moving our test framework to use the \"skipped\"-concept instead of the deprecated \"critical/non-critical\"-concept. We noticed that in log.html, the failed KWs are not automatically expanded for a test skipped using skipOnFailure.\r\n\r\nReproducing:\r\n- click a failed skipped test in report.html.\r\n- Failed nested KWs are not automatically expanded in log.html\r\n\r\nFor a failed non-skipped test, the failed KWs are automatically recursively expanded. The same happens for failed non-critical test in 3.x. We would expect and like the same behaviour for the failed skipped tests. Especially for nested KWs, it's irritating to manually expand the failed nested KWs to get to the lowest level failed KW. ","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4756/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4756/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4754","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4754/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4754/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4754/events","html_url":"https://github.com/robotframework/robotframework/issues/4754","id":1695264304,"node_id":"I_kwDOAUSaQ85lC64w","number":4754,"title":"Back navigation does not work properly in HTML outputs (log, report, Libdoc)","user":{"login":"karniemi","id":5871676,"node_id":"MDQ6VXNlcjU4NzE2NzY=","avatar_url":"https://avatars.githubusercontent.com/u/5871676?v=4","gravatar_id":"","url":"https://api.github.com/users/karniemi","html_url":"https://github.com/karniemi","followers_url":"https://api.github.com/users/karniemi/followers","following_url":"https://api.github.com/users/karniemi/following{/other_user}","gists_url":"https://api.github.com/users/karniemi/gists{/gist_id}","starred_url":"https://api.github.com/users/karniemi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/karniemi/subscriptions","organizations_url":"https://api.github.com/users/karniemi/orgs","repos_url":"https://api.github.com/users/karniemi/repos","events_url":"https://api.github.com/users/karniemi/events{/privacy}","received_events_url":"https://api.github.com/users/karniemi/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":7,"created_at":"2023-05-04T05:03:59Z","updated_at":"2023-06-05T08:09:02Z","closed_at":"2023-06-02T08:11:26Z","author_association":"NONE","active_lock_reason":null,"body":"We are just Upgrading from 3.x to 6.0.2.\r\n\r\nGetting back to report.html from log.html requires 3 clicks on Back button. This is quite irritating.\r\n\r\nSteps to reproduce:\r\n1) from testreport.html, open a testcase. This takes to log.html, url ends like \"log.html#s1-s2-s29-t6\".\r\n2) click Back. Still in log.html. url ends like \"log.html#\"\r\n3) click Back. Still in log.html. url ends like \"log.html#s1-s2-s29-t6\"\r\n4) click Back. Only now,, we are back in report.html\r\n\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4754/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4754/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4749","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4749/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4749/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4749/events","html_url":"https://github.com/robotframework/robotframework/issues/4749","id":1682001888,"node_id":"I_kwDOAUSaQ85kQU_g","number":4749,"title":"Process: `Split/Join Command Line` do not work properly with `pathlib.Path` objects","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":219378453,"node_id":"MDU6TGFiZWwyMTkzNzg0NTM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%201","name":"beta 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":0,"created_at":"2023-04-24T20:40:10Z","updated_at":"2023-06-05T14:43:49Z","closed_at":"2023-04-24T20:58:46Z","author_association":"MEMBER","active_lock_reason":null,"body":"Several related problems:\r\n- `Split Command Line` fails if given `pathlib.Path`.\r\n- `Join Command Line` fails as well with Python < 3.8.\r\n- `Join Command Line` could also handle other non-string values.\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4749/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4749/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4746","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4746/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4746/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4746/events","html_url":"https://github.com/robotframework/robotframework/issues/4746","id":1680590119,"node_id":"I_kwDOAUSaQ85kK8Un","number":4746,"title":"Decide and document XDG media type","user":{"login":"Akselmo","id":13801236,"node_id":"MDQ6VXNlcjEzODAxMjM2","avatar_url":"https://avatars.githubusercontent.com/u/13801236?v=4","gravatar_id":"","url":"https://api.github.com/users/Akselmo","html_url":"https://github.com/Akselmo","followers_url":"https://api.github.com/users/Akselmo/followers","following_url":"https://api.github.com/users/Akselmo/following{/other_user}","gists_url":"https://api.github.com/users/Akselmo/gists{/gist_id}","starred_url":"https://api.github.com/users/Akselmo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Akselmo/subscriptions","organizations_url":"https://api.github.com/users/Akselmo/orgs","repos_url":"https://api.github.com/users/Akselmo/repos","events_url":"https://api.github.com/users/Akselmo/events{/privacy}","received_events_url":"https://api.github.com/users/Akselmo/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":219378453,"node_id":"MDU6TGFiZWwyMTkzNzg0NTM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%201","name":"beta 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":9,"created_at":"2023-04-24T07:03:22Z","updated_at":"2023-06-11T16:49:06Z","closed_at":"2023-06-11T16:47:56Z","author_association":"NONE","active_lock_reason":null,"body":"I've created an issue to XDG mimetypes repo about adding a mediatype for robot framework\r\nhttps://gitlab.freedesktop.org/xdg/shared-mime-info/-/issues/198\r\n\r\nI think having mediatype `text/robotframework` would be ok. This means any text editor would know it's a text file, and those which have syntax highlight etc. support for Robot files can enable that as well.\r\n\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4746/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4746/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4744","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4744/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4744/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4744/events","html_url":"https://github.com/robotframework/robotframework/issues/4744","id":1678014037,"node_id":"I_kwDOAUSaQ85kBHZV","number":4744,"title":"WHILE limit doesn't work in teardown","user":{"login":"m1kaj","id":25018297,"node_id":"MDQ6VXNlcjI1MDE4Mjk3","avatar_url":"https://avatars.githubusercontent.com/u/25018297?v=4","gravatar_id":"","url":"https://api.github.com/users/m1kaj","html_url":"https://github.com/m1kaj","followers_url":"https://api.github.com/users/m1kaj/followers","following_url":"https://api.github.com/users/m1kaj/following{/other_user}","gists_url":"https://api.github.com/users/m1kaj/gists{/gist_id}","starred_url":"https://api.github.com/users/m1kaj/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/m1kaj/subscriptions","organizations_url":"https://api.github.com/users/m1kaj/orgs","repos_url":"https://api.github.com/users/m1kaj/repos","events_url":"https://api.github.com/users/m1kaj/events{/privacy}","received_events_url":"https://api.github.com/users/m1kaj/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":219378453,"node_id":"MDU6TGFiZWwyMTkzNzg0NTM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%201","name":"beta 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":2,"created_at":"2023-04-21T07:34:16Z","updated_at":"2023-05-04T20:18:37Z","closed_at":"2023-04-25T21:58:41Z","author_association":"NONE","active_lock_reason":null,"body":"### Description\r\nMy original source is test run failure. Tests ran using a docker container and run stopped when container exited with code 137. Trying to simplify the test that lead to the steps given below. I'm seeing execution get stuck in Test Teardown. \r\n\r\n### Steps to reproduce\r\n1. Open terminal and create a test suite file `stuck.robot` with content\r\n```\r\n*** Keywords ***\r\nMy Teardown\r\n WHILE True limit=3\r\n Log To Console Sleep 1 second\r\n Sleep 1\r\n END\r\n\r\n\r\n*** Test Cases ***\r\nMy Test\r\n No Operation\r\n [Teardown] My Teardown\r\n```\r\n2. Run test: `robot stuck.robot`\r\n\r\n### Actual results\r\nRobot output looks normal until while loop limit is reached:\r\n```\r\n==============================================================================\r\nStuck\r\n==============================================================================\r\nMy Test .Sleep 1 second\r\nSleep 1 second\r\nSleep 1 second\r\n```\r\nThen robot appears stuck. Host resource monitor indicates high CPU usage. It is possible to force exit by hitting `CTRL+C` more than once.\r\n\r\n### Reproducibility\r\nReproduced 10 times out of 10 on my local PC (first one in the list below). On other systems, reproduced on first try.\r\n\r\n### Tested versions\r\n* Windows 11 PC running WSL: Ubuntu 20.04.6 LTS (GNU/Linux 5.15.90.1-microsoft-standard-WSL2 x86_64)\r\n * Robot Framework 6.0.2 , Python 3.8.10\r\n * Robot Framework 6.1a1 , Python 3.8.10\r\n* Ubuntu 22.04 LTS system\r\n * _need to collect version info later_\r\n* MacBook Pro\r\n * Robot Framework 6.0.2, Python 3.10.5\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4744/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4744/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4740","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4740/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4740/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4740/events","html_url":"https://github.com/robotframework/robotframework/issues/4740","id":1671363647,"node_id":"I_kwDOAUSaQ85jnvw_","number":4740,"title":"Add type hints to parsing API","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":219378453,"node_id":"MDU6TGFiZWwyMTkzNzg0NTM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%201","name":"beta 1","color":"ffffff","default":false,"description":""},{"id":4972223712,"node_id":"LA_kwDOAUSaQ88AAAABKF4c4A","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20medium","name":"effort: medium","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":1,"created_at":"2023-04-17T14:48:44Z","updated_at":"2023-05-04T20:18:36Z","closed_at":"2023-05-03T16:31:23Z","author_association":"MEMBER","active_lock_reason":null,"body":"At least `get_tokens`, `get_model`, and their resource and init file variants need to get type hints and adding them is easy. Adding types to the whole parsing module would be good too, but that may be too much work for RF 6.1. If it is, a separate issue about that should be submitted for RF 6.2.\r\n\r\nOne reason to add type hints is that they can enable using [mypyc](https://mypyc.readthedocs.io/en/latest/index.html) for compiling the parsing module into a C extension. That could help making parsing faster as part of execution and, probably more importantly, when used by IDEs or other external tools. Full `mypy` or `mypyc` compatibility isn't in the scope of this issue, but the better the type hints are, the easier it is to continue to that direction in the future.\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4740/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4740/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4736","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4736/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4736/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4736/events","html_url":"https://github.com/robotframework/robotframework/issues/4736","id":1665308172,"node_id":"I_kwDOAUSaQ85jQpYM","number":4736,"title":"Backslash preventing newline in documentation can form escape sequence like `\\n`","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":219378453,"node_id":"MDU6TGFiZWwyMTkzNzg0NTM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%201","name":"beta 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":0,"created_at":"2023-04-12T21:47:39Z","updated_at":"2023-05-31T20:35:01Z","closed_at":"2023-04-12T21:52:51Z","author_association":"MEMBER","active_lock_reason":null,"body":"When suite, test or keyword documentation is split to multiple rows, rows are automatically joined together with a newline. This isn't always desirable so it's possible to use `\\` at the end of a documentation row to prevent it:\r\n```robotframework\r\n*** Settings ***\r\nDocumentation Backslash avoids automatic \\\r\n... newline.\r\n```\r\n\r\nThe problem is that lines are joined together so that the above looks like `Backslash avoids automatic \\newline` and when it is later evaluated the accidental `\\n` actually creates a newline. This can be fixed so that backslashes used for preventing newlines are removed from the documentation before rows are joined together.\r\n\r\nThis is a pretty annoying bug, but luckily there are very seldom needs to prevent the automatic newline. For example, in the above case the documentation in log and report looks exactly the same when formatted as a HTML paragraph. The main use case for splitting lines without an automatic newline is splitting strings that don't even have spaces in them and such strings are rare in documentation.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4736/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4736/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4729","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4729/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4729/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4729/events","html_url":"https://github.com/robotframework/robotframework/issues/4729","id":1659823987,"node_id":"I_kwDOAUSaQ85i7udz","number":4729,"title":"Leading and internal spaces should be preserved in documentation","user":{"login":"kerol2r20","id":3398826,"node_id":"MDQ6VXNlcjMzOTg4MjY=","avatar_url":"https://avatars.githubusercontent.com/u/3398826?v=4","gravatar_id":"","url":"https://api.github.com/users/kerol2r20","html_url":"https://github.com/kerol2r20","followers_url":"https://api.github.com/users/kerol2r20/followers","following_url":"https://api.github.com/users/kerol2r20/following{/other_user}","gists_url":"https://api.github.com/users/kerol2r20/gists{/gist_id}","starred_url":"https://api.github.com/users/kerol2r20/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kerol2r20/subscriptions","organizations_url":"https://api.github.com/users/kerol2r20/orgs","repos_url":"https://api.github.com/users/kerol2r20/repos","events_url":"https://api.github.com/users/kerol2r20/events{/privacy}","received_events_url":"https://api.github.com/users/kerol2r20/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":219378453,"node_id":"MDU6TGFiZWwyMTkzNzg0NTM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%201","name":"beta 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":7,"created_at":"2023-04-09T10:12:30Z","updated_at":"2023-05-04T20:18:35Z","closed_at":"2023-04-12T21:53:42Z","author_association":"NONE","active_lock_reason":null,"body":"Hi,\r\nI found that `.. code::robotframework` directives cannot work well in resource file format when I set documen format as reStructuredText format.\r\n\r\n```robot\r\n*** Keywords ***\r\nSimple keyword\r\n [Documentation] \r\n ... .. code:: robotframework\r\n ...\r\n ... *** Test Cases ***\r\n ... Simple test case\r\n ... Simple keyword\r\n```\r\n\r\ndocutils ouput ` :1: (ERROR/3) Content block expected for the \"code\" directive; none found.` error message.\r\n\r\nI had tried to find out why it happen and found that libdoc visit each token and lost white space token. \r\nAfter parse_resource_file function invoked, the doc of keyword remain like the following.\r\nThis is not a valid format for docutils.\r\n\r\n```\r\n.. code:: robotframework\r\n\r\n*** Test Cases ***\r\nSimple test case\r\nSimple keyword\r\n```\r\n\r\nMay it possible to reserve white space when using reStructuredText as document format?","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4729/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4729/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4716","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4716/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4716/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4716/events","html_url":"https://github.com/robotframework/robotframework/issues/4716","id":1651042071,"node_id":"I_kwDOAUSaQ85iaOcX","number":4716,"title":"Variable nodes with nested variables report a parsing error, but work properly in the runtime","user":{"login":"mnojek","id":7412964,"node_id":"MDQ6VXNlcjc0MTI5NjQ=","avatar_url":"https://avatars.githubusercontent.com/u/7412964?v=4","gravatar_id":"","url":"https://api.github.com/users/mnojek","html_url":"https://github.com/mnojek","followers_url":"https://api.github.com/users/mnojek/followers","following_url":"https://api.github.com/users/mnojek/following{/other_user}","gists_url":"https://api.github.com/users/mnojek/gists{/gist_id}","starred_url":"https://api.github.com/users/mnojek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mnojek/subscriptions","organizations_url":"https://api.github.com/users/mnojek/orgs","repos_url":"https://api.github.com/users/mnojek/repos","events_url":"https://api.github.com/users/mnojek/events{/privacy}","received_events_url":"https://api.github.com/users/mnojek/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":219378453,"node_id":"MDU6TGFiZWwyMTkzNzg0NTM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%201","name":"beta 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":1,"created_at":"2023-04-02T18:10:39Z","updated_at":"2023-05-04T20:18:35Z","closed_at":"2023-04-05T18:53:07Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"### Context\r\nWe have a rule in Robocop that parses non-local variables and checks if they are written in uppercase. I realized recently (thanks to the https://github.com/MarketSquare/robotframework-robocop/issues/678) that we should exclude nested variables from the check, so that `${VAR${nested}}` would not report a rule violation.\r\n\r\n### The bug\r\nI realized that correct variables are marked with an error by RF Parsing API. For example, this code, run with `robot --variable var1:1 test.robot`:\r\n\r\n```\r\n*** Variables ***\r\n${var${1}} 1\r\n\r\n*** Test Cases ***\r\nMy Test\r\n Log To Console ${var${1}}\r\n```\r\n\r\nexecutes with PASS state.\r\n\r\nBut when parsing the variable node, I see that there is an error there:\r\n\r\n\"Screenshot\r\n\r\nThe bug appears in RF 5 and 6. I haven't tested for earlier versions.\r\n\r\nHere are some more examples that raise the same error for RF Parsing API:\r\n\r\n```\r\n${MY_VAR${var}} 11\r\n${MY VAR${VAR}} 11\r\n${${var}MY VAR${VAR}} 11\r\n${${var${VAR}}MY VAR${VAR}} 11\r\n${@{VAR}[1]MY_VAR&{var.param}} 11\r\n${${var${VAR}}my_var} 11\r\n${${VAR}my_var} 11\r\n${${VAR}my_var${var}} 11\r\n${@{VAR}[1]my_var} 11\r\n${@{VAR}[1]my_var&{var.param}} 11\r\n```","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4716/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4716/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4709","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4709/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4709/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4709/events","html_url":"https://github.com/robotframework/robotframework/issues/4709","id":1646754740,"node_id":"I_kwDOAUSaQ85iJ3u0","number":4709,"title":"Add `__repr__()` method to NormalizedDict","user":{"login":"Snooz82","id":41592183,"node_id":"MDQ6VXNlcjQxNTkyMTgz","avatar_url":"https://avatars.githubusercontent.com/u/41592183?v=4","gravatar_id":"","url":"https://api.github.com/users/Snooz82","html_url":"https://github.com/Snooz82","followers_url":"https://api.github.com/users/Snooz82/followers","following_url":"https://api.github.com/users/Snooz82/following{/other_user}","gists_url":"https://api.github.com/users/Snooz82/gists{/gist_id}","starred_url":"https://api.github.com/users/Snooz82/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Snooz82/subscriptions","organizations_url":"https://api.github.com/users/Snooz82/orgs","repos_url":"https://api.github.com/users/Snooz82/repos","events_url":"https://api.github.com/users/Snooz82/events{/privacy}","received_events_url":"https://api.github.com/users/Snooz82/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":219378453,"node_id":"MDU6TGFiZWwyMTkzNzg0NTM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%201","name":"beta 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":1,"created_at":"2023-03-30T01:13:50Z","updated_at":"2023-05-04T20:18:34Z","closed_at":"2023-03-30T17:47:14Z","author_association":"MEMBER","active_lock_reason":null,"body":"I see the problem, that with the RobotDebug REPL i am updating right now, the NormalizedDict are just shown like this:\r\n\r\n`${SUITE_METADATA} = `\r\n\r\nCould we do it like this?\r\n```python\r\ndef __repr__(self):\r\n return '%s(%s)' % (self.__class__.__name__, str(self))\r\n```\r\nor:\r\n```python\r\ndef __repr__(self):\r\n return f'{self.__class__.__name__}({self.__str__()})'\r\n```\r\nThen it would be :\r\n`${SUITE_METADATA} = NormalizedDict({'Hello': 'World', 'Test': '123'})`\r\n\r\nWe could also write it like this?\r\n`robot.utils.NormalizedDict({'Hello': 'World', 'Test': '123'})`\r\n\r\nBut i think the former version would be good enough \r\n\r\nWhat do you think?\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4709/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4709/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4705","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4705/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4705/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4705/events","html_url":"https://github.com/robotframework/robotframework/issues/4705","id":1643455775,"node_id":"I_kwDOAUSaQ85h9SUf","number":4705,"title":"Items are not converted when using generics like `list[int]` and passing object, not string","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":219378453,"node_id":"MDU6TGFiZWwyMTkzNzg0NTM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%201","name":"beta 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":1,"created_at":"2023-03-28T08:28:56Z","updated_at":"2023-05-05T14:07:33Z","closed_at":"2023-03-28T13:55:55Z","author_association":"MEMBER","active_lock_reason":null,"body":"We added support for converting items with generics like `list[int]` and `dict[str, int]` in RF 6.0 (#4433). There unfortunately is a bug that it only works when passing values as string literals, not as actual object. For example, using this example from our Slack:\r\n```python\r\ndef sum_values(values_dict: dict[str, int]) -> int:\r\n values_sum: int = 0\r\n for _, value in values_dict.items():\r\n values_sum += value\r\n return values_sum\r\n```\r\nlike:\r\n```\r\n&{dict} = Create Dictionary spam 11 eggs 22\r\n${sum} = Sum Values ${dict}\r\n```\r\nfails with:\r\n> TypeError: unsupported operand type(s) for +=: 'int' and 'str'`.\r\n\r\nUsing the example with a dictionary literal works fine:\r\n```\r\n${sum} = Sum Values {'spam': '11', 'eggs': '22'}\r\n```","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4705/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4705/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4695","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4695/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4695/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4695/events","html_url":"https://github.com/robotframework/robotframework/issues/4695","id":1630819433,"node_id":"I_kwDOAUSaQ85hNFRp","number":4695,"title":"Accessing `id` property of model objects may cause `ValueError`","user":{"login":"oboehmer","id":22439451,"node_id":"MDQ6VXNlcjIyNDM5NDUx","avatar_url":"https://avatars.githubusercontent.com/u/22439451?v=4","gravatar_id":"","url":"https://api.github.com/users/oboehmer","html_url":"https://github.com/oboehmer","followers_url":"https://api.github.com/users/oboehmer/followers","following_url":"https://api.github.com/users/oboehmer/following{/other_user}","gists_url":"https://api.github.com/users/oboehmer/gists{/gist_id}","starred_url":"https://api.github.com/users/oboehmer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oboehmer/subscriptions","organizations_url":"https://api.github.com/users/oboehmer/orgs","repos_url":"https://api.github.com/users/oboehmer/repos","events_url":"https://api.github.com/users/oboehmer/events{/privacy}","received_events_url":"https://api.github.com/users/oboehmer/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":219378453,"node_id":"MDU6TGFiZWwyMTkzNzg0NTM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%201","name":"beta 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":6,"created_at":"2023-03-19T07:39:05Z","updated_at":"2023-05-04T20:18:33Z","closed_at":"2023-03-29T06:51:07Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"With 6.1a1 (not seen with 6.0.1), the following construct no longer works to retrieve the currently executed keyword's ID from the stack IF the keyword is executed via `Run Keyword ...` variants:\r\n\r\n```\r\n for stack in inspect.stack():\r\n frame = inspect.getargvalues(stack[0])\r\n if getattr(frame, 'locals', None) and frame.locals.get('step'):\r\n return frame.locals['step'].id\r\n```\r\n\r\n\r\nThis can easily be reproduced using the following test suite and custom library:\r\n\r\n```\r\n*** Settings ***\r\nLibrary testlib.py\r\n\r\n*** Test Cases ***\r\n# the first test passes, the two remaining fail\r\nTest KW \r\n Test Keyword\r\n\r\nTest Run KW \r\n Run Keyword Test Keyword\r\n\r\nTest Run KW and expect error\r\n Run Keyword and Expect Error you told me to fail Test Keyword ${TRUE}\r\n```\r\n\r\ntestlib.py:\r\n```\r\nimport inspect\r\nfrom robot.api import logger\r\n\r\n\r\ndef _get_current_keyword_id():\r\n \"\"\"\r\n Traverses the stack to find the current keyword and returns its id.\r\n \"\"\"\r\n for stack in inspect.stack():\r\n frame = inspect.getargvalues(stack[0])\r\n if getattr(frame, 'locals', None) and frame.locals.get('step'):\r\n return frame.locals['step'].id\r\n\r\n\r\ndef test_keyword(fail=False):\r\n logger.info(_get_current_keyword_id())\r\n assert not fail, 'you told me to fail'\r\n```\r\n\r\nexecution with 6.1a1:\r\n\r\n```\r\nroot@36c9fa153edc:workspace# robot -L TRACE keyword-id.robot \r\n==============================================================================\r\nKeyword-Id \r\n==============================================================================\r\nTest KW | PASS |\r\n------------------------------------------------------------------------------\r\nTest Run KW | FAIL |\r\nValueError: robot.running.Keyword(name='Test Keyword', args=[], assign=()) is not in list\r\n------------------------------------------------------------------------------\r\nTest Run KW and expect error | FAIL |\r\nExpected error 'you told me to fail' but got 'ValueError: robot.running.Keyword(name='Test Keyword', args=['${TRUE}'], assign=()) is not in list'.\r\n------------------------------------------------------------------------------\r\nKeyword-Id | FAIL |\r\n3 tests, 1 passed, 2 failed\r\n==============================================================================\r\n```\r\n\r\nstack trace shown in log:\r\n```\r\nTraceback (most recent call last):\r\n File \"/home/cisco/cxta/workspace/testlib.py\", line 16, in test_keyword\r\n logger.info(_get_current_keyword_id())\r\n File \"/home/cisco/cxta/workspace/testlib.py\", line 12, in _get_current_keyword_id\r\n return frame.locals['step'].id\r\n File \"/venv/lib/python3.9/site-packages/robot/model/body.py\", line 58, in id\r\n return self._get_id(self.parent)\r\n File \"/venv/lib/python3.9/site-packages/robot/model/body.py\", line 69, in _get_id\r\n my_id = steps.index(self) + 1\r\nValueError: robot.running.Keyword(name='Test Keyword', args=[], assign=()) is not in list\r\n```\r\n\r\nexecution with 6.0.1 passes.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4695/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4695/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4692","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4692/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4692/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4692/events","html_url":"https://github.com/robotframework/robotframework/issues/4692","id":1625036987,"node_id":"I_kwDOAUSaQ85g3Bi7","number":4692,"title":"`ELSE IF` condition not passed to listeners","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":0,"created_at":"2023-03-15T08:49:27Z","updated_at":"2023-03-15T12:50:35Z","closed_at":"2023-03-15T09:34:19Z","author_association":"MEMBER","active_lock_reason":null,"body":"RF 6.0 enhanced listeners so that more info about control structures is passed to them (#4335). Due to a bug in the code, a missing comma in a single item tuple, `ELSE IF` condition is missing. Easy to fix and need to add tests as well.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4692/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4692/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4689","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4689/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4689/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4689/events","html_url":"https://github.com/robotframework/robotframework/issues/4689","id":1623949169,"node_id":"I_kwDOAUSaQ85gy39x","number":4689,"title":"Invalid sections are not represented properly in parsing model","user":{"login":"yanne","id":159146,"node_id":"MDQ6VXNlcjE1OTE0Ng==","avatar_url":"https://avatars.githubusercontent.com/u/159146?v=4","gravatar_id":"","url":"https://api.github.com/users/yanne","html_url":"https://github.com/yanne","followers_url":"https://api.github.com/users/yanne/followers","following_url":"https://api.github.com/users/yanne/following{/other_user}","gists_url":"https://api.github.com/users/yanne/gists{/gist_id}","starred_url":"https://api.github.com/users/yanne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yanne/subscriptions","organizations_url":"https://api.github.com/users/yanne/orgs","repos_url":"https://api.github.com/users/yanne/repos","events_url":"https://api.github.com/users/yanne/events{/privacy}","received_events_url":"https://api.github.com/users/yanne/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":1,"created_at":"2023-03-14T17:10:30Z","updated_at":"2023-03-16T20:38:45Z","closed_at":"2023-03-16T14:53:08Z","author_association":"MEMBER","active_lock_reason":null,"body":"Consider the following test suite:\r\n\r\n```\r\n*** Test cases ***\r\nTest \r\n Log 1\r\n\r\n*** invalid section ***\r\nSomething\r\n```\r\n\r\nThis will produce following AST:\r\n\r\n```\r\nFile(\r\n source='/Users/jth/Code/robotframework/tmp/foo.robot',\r\n languages=(),\r\n lineno=1,\r\n col_offset=0,\r\n end_lineno=5,\r\n end_col_offset=23,\r\n errors=(),\r\n sections=[\r\n TestCaseSection(\r\n lineno=1,\r\n col_offset=0,\r\n end_lineno=5,\r\n end_col_offset=23,\r\n errors=(),\r\n header=SectionHeader(lineno=1, col_offset=0, end_lineno=1, end_col_offset=18, errors=(), type='TESTCASE HEADER', tokens=(Token(TESTCASE_HEADER, '*** Test Cases ***', 1, 0),)),\r\n body=[\r\n TestCase(\r\n lineno=2,\r\n col_offset=0,\r\n end_lineno=3,\r\n end_col_offset=11,\r\n errors=(),\r\n header=TestCaseName(lineno=2, col_offset=0, end_lineno=2, end_col_offset=4, errors=(), type='TESTCASE NAME', tokens=(Token(TESTCASE_NAME, 'Test', 2, 0),)),\r\n body=[KeywordCall(lineno=3, col_offset=3, end_lineno=3, end_col_offset=11, errors=(), type='KEYWORD', tokens=(Token(KEYWORD, 'Log', 3, 3), Token(ARGUMENT, '1', 3, 10)))],\r\n ),\r\n Error(lineno=5, col_offset=0, end_lineno=5, end_col_offset=23, errors=(\"Unrecognized section header '*** invalid section ***'. Valid sections: 'Settings', 'Variables', 'Test Cases', 'Tasks', 'Keywords' and 'Comments'.\",), type='ERROR', tokens=(Token(ERROR, '*** invalid section ***', 5, 0, \"Unrecognized section header '*** invalid section ***'. Valid sections: 'Settings', 'Variables', 'Test Cases', 'Tasks', 'Keywords' and 'Comments'.\"),)),\r\n ],\r\n ),\r\n ],\r\n)\r\n```\r\n\r\nIn the AST, their erroneous header is put inside the TestCase body, which is a bit weird from the AST perspective. \r\nIt would be better to create a separate AST node, InvalidSection, which would contain the data of the invalid section.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4689/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4689/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4688","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4688/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4688/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4688/events","html_url":"https://github.com/robotframework/robotframework/issues/4688","id":1623508631,"node_id":"I_kwDOAUSaQ85gxMaX","number":4688,"title":"Do not exclude files during parsing if using `--suite` option","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":1,"created_at":"2023-03-14T13:42:47Z","updated_at":"2023-06-09T22:54:34Z","closed_at":"2023-05-23T12:55:48Z","author_association":"MEMBER","active_lock_reason":null,"body":"Currently when the `--suite` option is used, files not matching the specified suite aren't parsed at all. This is a useful performance optimization, but it doesn't work well with the new `Name` setting (#4583) that allows configuring the suite name in the parsed file itself. In addition to that, suites not being parsed and not thus not being available for pre-run modifiers can cause surprises. To avoid all these issues, it is better to not use `--suite` for limiting what files are parsed at all.\r\n\r\nThis change isn't functionally backwards incompatible, but it obviously affects those who `--suite` to make parsing faster. A precondition to such a change is having an explicit way to limit what files are parsed (#4687).","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4688/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4688/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4687","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4687/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4687/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4687/events","html_url":"https://github.com/robotframework/robotframework/issues/4687","id":1623494967,"node_id":"I_kwDOAUSaQ85gxJE3","number":4687,"title":"Add explicit command line option to limit which files are parsed","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""},{"id":911065884,"node_id":"MDU6TGFiZWw5MTEwNjU4ODQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/acknowledge","name":"acknowledge","color":"bc82e0","default":false,"description":"To be acknowledged in release notes"},{"id":4972223712,"node_id":"LA_kwDOAUSaQ88AAAABKF4c4A","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20medium","name":"effort: medium","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":20,"created_at":"2023-03-14T13:34:52Z","updated_at":"2023-06-05T08:09:00Z","closed_at":"2023-05-29T22:03:06Z","author_association":"MEMBER","active_lock_reason":null,"body":"When execution just some tests from a big directory structure, parsing only relevant files instead of the whole structure makes parsing faster. We don't currently have any explicit option for limiting parsing like that, but when the `--suite` option is used files not matching the specified suite are ignored. This functionality won't work too well in the future, though, if we make it possible to change the suite name using the `Name` setting (#4583). It's also likely that not too many users know about this functionality and the underlying logic to convert file and directory names to suite names for matching purposes is also rather complicated.\r\n\r\nA good way to solve all the above problems is adding a separate command line option or options for controlling what files to parse. Once we have such functionality, we can remove the current performance optimization from `--suite`, a separate option makes the feature easier to discover, and also the code gets simpler. There are some design decisions to be made, though:\r\n\r\n- What should the option be named? I was thinking `--includefiles`, but it has the same prefix as `--include` which would mean that shortened usages like `--incl` that used to be unique wouldn't work anymore. Perhaps `--parsefiles` or just `--files` would be better.\r\n- Should the value be a literal value or should we accept glob patterns? I believe supporting patterns is a good idea.\r\n- Should the value be just a file name or a relative or absolute path to it? I see benefits with both so possibly we could support both usages.\r\n- Should the value include file extension? I believe it should be allowed but preferably not required. If that gets too complicated, always requiring it is probably better.\r\n- Should there be separate option for excluding files? It would make some use cases easier, but I'm not sure is that worth the added complexity.\r\n- Should this option affect only files or also directories? If the option would match a directory, we could automatically include all files under it, recursively. On the other hand, just matching files would be easier to implement and explain.\r\n- Should we have separate options for matching files and directories? That's probably too much, especially if we'd have separate options for including and excluding. If directories are considered important, probably better to implement this so that the same option work with both files and directories.\r\n\r\nThis feature should be implemented before RF 7 where we'd like to change `--suite` so that it doesn't affect parsing. That would give users who need the performance optimization time to update their scripts.\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4687/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4687/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4684","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4684/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4684/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4684/events","html_url":"https://github.com/robotframework/robotframework/issues/4684","id":1621310061,"node_id":"I_kwDOAUSaQ85gozpt","number":4684,"title":"Handle start index with `FOR IN ENUMERATE` loops already in parser","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":0,"created_at":"2023-03-13T11:37:11Z","updated_at":"2023-03-15T12:50:34Z","closed_at":"2023-03-13T15:17:42Z","author_association":"MEMBER","active_lock_reason":null,"body":"We added support for the optional start index in RF 4.0 (#3781). It was implemented so that only the runner object detected that the last iterated value has `start=` prefix and the parser doesn't know anything about it. When similar configuration was added to `WHILE` (`limit`) and `EXCEPT` (`type`), they were already recognized by the parser making the behavior with `start` inconsistent. This should be changed and `start` with `FOR IN ENUMERATE` loops handled by the parser as well.\r\n\r\nHandling `start` in the parser means that the `For` model object in the `TestSuite` structure needs `start` attribute as well. The same `For` is used with all `FOR` loop types and it getting an attribute that only affects one of them is a bit questionable, but I don't consider it too big a problem. We could consider adding separate `ForInEnumerate`, `ForInRange` and `ForInZip` model object, but I consider that too much work compared to benefits at least right now. We also need to add `start` as an attribute to `output.xml`. Changing it always has backwards incompatibility concerns, but tools processing XML files shouldn't be bothered by new attributes so I consider this safe.\r\n\r\nOne reason to do this is that we plan to make `FOR IN ZIP` configurable as well. It's configuration options should definitely be handled by the parser and in that case `FOR IN ENUMERATE` behaving differently would be really weird.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4684/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4684/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4683","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4683/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4683/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4683/events","html_url":"https://github.com/robotframework/robotframework/issues/4683","id":1621271832,"node_id":"I_kwDOAUSaQ85goqUY","number":4683,"title":"Report syntax errors better in log file","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972223712,"node_id":"LA_kwDOAUSaQ88AAAABKF4c4A","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20medium","name":"effort: medium","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"yanne","id":159146,"node_id":"MDQ6VXNlcjE1OTE0Ng==","avatar_url":"https://avatars.githubusercontent.com/u/159146?v=4","gravatar_id":"","url":"https://api.github.com/users/yanne","html_url":"https://github.com/yanne","followers_url":"https://api.github.com/users/yanne/followers","following_url":"https://api.github.com/users/yanne/following{/other_user}","gists_url":"https://api.github.com/users/yanne/gists{/gist_id}","starred_url":"https://api.github.com/users/yanne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yanne/subscriptions","organizations_url":"https://api.github.com/users/yanne/orgs","repos_url":"https://api.github.com/users/yanne/repos","events_url":"https://api.github.com/users/yanne/events{/privacy}","received_events_url":"https://api.github.com/users/yanne/received_events","type":"User","site_admin":false},"assignees":[{"login":"yanne","id":159146,"node_id":"MDQ6VXNlcjE1OTE0Ng==","avatar_url":"https://avatars.githubusercontent.com/u/159146?v=4","gravatar_id":"","url":"https://api.github.com/users/yanne","html_url":"https://github.com/yanne","followers_url":"https://api.github.com/users/yanne/followers","following_url":"https://api.github.com/users/yanne/following{/other_user}","gists_url":"https://api.github.com/users/yanne/gists{/gist_id}","starred_url":"https://api.github.com/users/yanne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yanne/subscriptions","organizations_url":"https://api.github.com/users/yanne/orgs","repos_url":"https://api.github.com/users/yanne/repos","events_url":"https://api.github.com/users/yanne/events{/privacy}","received_events_url":"https://api.github.com/users/yanne/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":1,"created_at":"2023-03-13T11:12:08Z","updated_at":"2023-03-15T12:50:34Z","closed_at":"2023-03-14T17:01:01Z","author_association":"MEMBER","active_lock_reason":null,"body":"Currently when you have an invalid setting like `[Setpu]` in a test (or keyword, or task), error is reported on the console, but the test is nevertheless executed and in the log file the invalid setting isn't visible under the test at all. This isn't great. It would be better if the invalid setting would be visible under the test in the log file and it should also fail the test.\r\n\r\nA similar situation occurs with invalid syntax like `END` or `ELSE` without an opening `IF`. At the moment such invalid syntax is considered to be a keyword. We have `Reserved` library that contains matching keywords, so when these \"keywords\" are run they fail. Invalid syntax reported as failing keywords is odd and the resulting error messages aren't great either. A part of #4210 is detecting this kind of invalid syntax already at the parsing time, but we need to also show them in the log file somehow.\r\n\r\nA solution to both of these error reporting issues is adding new `Error` object to our `TestSuite` structure. When the parser detects invalid syntax, it can create such objects, and when they are run they can simply fail. These errors should create new `` elements to output.xml and they obviously need to be show in log.html as well.\r\n\r\nA problem with this enhancement is that it's not fully backwards compatible:\r\n- Invalid settings like `[Setpu]` don't currently affect test status, but in the future they will fail the test. An obvious solution for this kind of problem is not having such invalid settings in tests in the first place.\r\n- External tools parsing output.xml need to take `` elements into account. In general such tools should ignore elements they don't recognize, but there certainly can be tools that don't behave like that.\r\n- Tools working with the `TestSuite` model need to take new `Error` objects into account.\r\n\r\nInvalid syntax failing a test isn't a big concern for me, but this change possibly breaking external tools is a lot bigger problem. I don't see any other ways this could be handed, though. Doing the change in a non-major version is a bit questionable, but I don't think postponing this change to RF 7 (or changing RF 6.1 to RF 7) is a good idea either. We just need to inform external tool developers about this change in release notes and possibly also otherwise.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4683/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4683/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4682","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4682/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4682/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4682/events","html_url":"https://github.com/robotframework/robotframework/issues/4682","id":1620330369,"node_id":"I_kwDOAUSaQ85glEeB","number":4682,"title":"Make `FOR IN ZIP` loop behavior if lists have different lengths configurable","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972223712,"node_id":"LA_kwDOAUSaQ88AAAABKF4c4A","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20medium","name":"effort: medium","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":2,"created_at":"2023-03-12T11:33:21Z","updated_at":"2023-03-15T12:50:33Z","closed_at":"2023-03-13T23:34:12Z","author_association":"MEMBER","active_lock_reason":null,"body":"Robot `FOR IN ZIP` loop behaves like Python's [zip](https://docs.python.org/3/library/functions.html#zip) so that if lists lengths aren't the same, items from the longest one are ignored. For example, the following loop would be executed only twice:\r\n\r\n```robotframework\r\n*** Variables ***\r\n@{ANIMALS} dog cat horse cow elephant\r\n@{ELÄIMET} koira kissa\r\n\r\n*** Test Cases ***\r\nExample\r\n FOR ${en} ${fi} IN ZIP ${ANIMALS} ${ELÄIMET}\r\n Log ${en} is ${fi} in Finnish\r\n END\r\n```\r\n\r\nThis behavior can cause problems when iterating over items received from the automated system. For example, the following test would pass regardless how many things `Get something` returns as long as the returned items match the expected values. The example even succeeds if `Get something` nothing.\r\n\r\n```robotframework\r\n*** Test Cases ***\r\nExample\r\n Validate something expected 1 expected 2 expected 3\r\n\r\n*** Keywords ****\r\nValidate something\r\n [Arguments] @{expected}\r\n @{actual} = Get something\r\n FOR ${act} ${exp} IN ZIP ${actual} ${expected}\r\n Validate one thing ${act} ${exp}\r\n END\r\n```\r\n\r\nTo avoid the above example failing if `Get something` returns more or less values than expected, a separate check needs to be added. Because there's no ready-made keyword for checking are list lengths equal (`Lists should be equal` keyword doesn't work here), the validation needs to use something bit more complicated like this:\r\n```\r\n Should be equal ${{len($actual)}} ${{len($expected)}}\r\n```\r\nFor a real life example see [this example](https://github.com/robotframework/robotframework/blob/f7ee913622e60c0cf630e1580c2bb58c57100187/atest/robot/running/if/invalid_if.robot#L119) from out acceptance tests. Tests also contain various `FOR IN ZIP` usages where this particular issue could cause problems.\r\n\r\nThis same underlying issues has caused problems with Python's `zip` as well. Starting from Python 3.10 (see [PEP 619](https://peps.python.org/pep-0618/) `zip` has new `strict` parameter that can be used like `zip(actual, expected, strict=True)`. It causes a `ValueError` to be raised if iterated lists have different lengths. Related to this, Python also has separate [itertools.zip_longest](https://docs.python.org/3/library/itertools.html#itertools.zip_longest) that goes through all items in all lists so that if certain list has less value than others, value specified with the `fillvalue` argument is used instead.\r\n\r\nMy proposal is that we add new `mode` configuration option to `FOR IN ZIP` loops. The motivation is that we could have three values `shortest`, `strict` and `longest` emulating Python's behavior with `zip(...)`, `zip(..., strict=True=`), and `zip_longest(...)`, respectively. This was also [considered with Python](https://peps.python.org/pep-0618/#add-several-modes-to-switch-between), but they decided to go with a Boolean option `strict` partly because they already have a separate `zip_longest`.\r\n\r\nAnother reason `mode` wasn't used with Python is that to properly support the `longest` case, it would require adding `fillvalue` that doesn't make sense with other modes. That's a valid concern in our case as well, but I don't consider it too big a problem. We don't at the moment support the `longest` case at all, so this would instead be a nice enhancement and a lot better syntax than separate `FOR IN ZIP LONGEST` would be.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4682/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4682/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4680","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4680/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4680/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4680/events","html_url":"https://github.com/robotframework/robotframework/issues/4680","id":1620223756,"node_id":"I_kwDOAUSaQ85gkqcM","number":4680,"title":"User Guide generation broken on Windows","user":{"login":"sunday2","id":20227068,"node_id":"MDQ6VXNlcjIwMjI3MDY4","avatar_url":"https://avatars.githubusercontent.com/u/20227068?v=4","gravatar_id":"","url":"https://api.github.com/users/sunday2","html_url":"https://github.com/sunday2","followers_url":"https://api.github.com/users/sunday2/followers","following_url":"https://api.github.com/users/sunday2/following{/other_user}","gists_url":"https://api.github.com/users/sunday2/gists{/gist_id}","starred_url":"https://api.github.com/users/sunday2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sunday2/subscriptions","organizations_url":"https://api.github.com/users/sunday2/orgs","repos_url":"https://api.github.com/users/sunday2/repos","events_url":"https://api.github.com/users/sunday2/events{/privacy}","received_events_url":"https://api.github.com/users/sunday2/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":911065884,"node_id":"MDU6TGFiZWw5MTEwNjU4ODQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/acknowledge","name":"acknowledge","color":"bc82e0","default":false,"description":"To be acknowledged in release notes"},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":2,"created_at":"2023-03-12T03:46:47Z","updated_at":"2023-03-20T12:36:05Z","closed_at":"2023-03-14T00:28:23Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"env: \r\nplatform: Windows 10 Pro\r\npython: 3.7\r\nRF: master branch\r\n\r\nproblem: when calling the script ug2html.py to generate the RF user guide, encoutered the following encoding issue, \r\n![image](https://user-images.githubusercontent.com/20227068/224522445-08e798de-37ba-4279-8e0f-3cfa74b00e0e.png)\r\nthis may due to this function:\r\n\r\n`doc.userguide.translations.update`\r\n```python\r\ndef update(path: Path, content):\r\n source = path.read_text(encoding='UTF-8').splitlines()\r\n with open(path, 'w') as file:\r\n write(source, file, end_marker='.. START GENERATED CONTENT')\r\n file.write('.. Generated by translations.py used by ug2html.py.\\n')\r\n write(content, file)\r\n write(source, file, start_marker='.. END GENERATED CONTENT')\r\n```\r\nwhen calling the open function, does not specify the encoding, the default encoding will be platform dependent. In my case, the encoding cp1252 will be used, this issue happened when write the content that was Bg language and other languages will also meet this issue if cp1252 not support them.\r\n\r\npossible solution: \r\nspecify the encoding to be 'utf-8' when open the file.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4680/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4680/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4676","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4676/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4676/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4676/events","html_url":"https://github.com/robotframework/robotframework/issues/4676","id":1613777283,"node_id":"I_kwDOAUSaQ85gMEmD","number":4676,"title":"Propose using `$var` syntax if evaluation IF or WHILE condition using `${var}` fails","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972223712,"node_id":"LA_kwDOAUSaQ88AAAABKF4c4A","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20medium","name":"effort: medium","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":2,"created_at":"2023-03-07T16:18:50Z","updated_at":"2023-03-15T12:50:32Z","closed_at":"2023-03-10T20:45:44Z","author_association":"MEMBER","active_lock_reason":null,"body":"A common error when evaluating expressions with IF or otherwise is using something like\r\n```\r\nIF ${x} == 'expected'\r\n Keyword\r\nEND\r\n```\r\nwhen the variable `${x}` contains a string. Normal variables are resolved _before_ evaluating the expression, so if `${x}` contains a string `value`, the evaluated expression will be `value == 'expected'`. Evaluating it fails because `value` isn't quoted, it's thus considered a variable in Python, and no such variable exists. The resulting error is this:\r\n\r\n> Evaluating IF condition failed: Evaluating expression 'value == 'expected'' failed: NameError: name 'value' is not defined nor importable as module\r\n\r\nOne solution to this problem is quoting the variable like `'${x}' == 'expected'`, but that doesn't work if the variable value contains quotes or newlines. A better solution is using the special `$var` syntax like `$x == 'value'` that makes the variable available in the Python evaluation namespace (#2040). All this is explained in the [User Guide](http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#evaluating-expressions), but there are many users who don't know about this and struggle with the syntax.\r\n\r\nBecause this is a such a common error, we should make the error more informative if the expression contains \"normal\" variables. We could, for example, show also the original expression and recommend quoting or using the \"special\" variable syntax. Possibly it could look like this:\r\n\r\n> Evaluating IF condition failed: Evaluating expression 'value == 'expected'' failed: NameError: name 'value' is not defined nor importable as module\r\n> The original expression was '${x} == 'expected''. Try using the '$var' syntax like '$x == 'expected'' to avoid resolving variables before the expression is evaluated. See the Evaluating expression appendix in the User Guide for more details.\r\n\r\nThere are few problems implementing this:\r\n1. Variables are solved before the [evaluate_expression](https://github.com/robotframework/robotframework/blob/master/src/robot/variables/evaluation.py#L31) is called so this function doesn't know the original expression nor did it contain variables. This information needs to be passed to it, but in same cases (at least with inline Python evaluation) it isn't that easy.\r\n2. It's not easy to detect when exactly this extra information should be included into the error. Including it always when evaluating the expression fails can add confusion when the error isn't related to variables. It would probably better to include it only if evaluation fails for a NameError, but also in that case you could have an expression like `'${x}' == value` where the variable likely isn't a problem. We could try some heuristics to see what causes the error, but that's probably too much work compared to including the extra info in some cases where it's not needed.\r\n3. Coming up with a good but somewhat short error message isn't easy. I'm not totally happy with the above, but I guess it would be better than nothing.\r\n\r\nBecause this extra info is added only if evaluation fails, this should be a totally backwards compatible change. It would be nice to include it already into RF 6.1, but that release is already about to be late and this isn't that easy to implement, so RF 6.2 is probably a better target. If someone is interested to look at this, including it already into RF 6.1 ought to be possible.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4676/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4676/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4670","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4670/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4670/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4670/events","html_url":"https://github.com/robotframework/robotframework/issues/4670","id":1609324383,"node_id":"I_kwDOAUSaQ85f7Fdf","number":4670,"title":"Parsing model: `Documentation.from_params(...).value` doesn't work","user":{"login":"d-biehl","id":7069968,"node_id":"MDQ6VXNlcjcwNjk5Njg=","avatar_url":"https://avatars.githubusercontent.com/u/7069968?v=4","gravatar_id":"","url":"https://api.github.com/users/d-biehl","html_url":"https://github.com/d-biehl","followers_url":"https://api.github.com/users/d-biehl/followers","following_url":"https://api.github.com/users/d-biehl/following{/other_user}","gists_url":"https://api.github.com/users/d-biehl/gists{/gist_id}","starred_url":"https://api.github.com/users/d-biehl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/d-biehl/subscriptions","organizations_url":"https://api.github.com/users/d-biehl/orgs","repos_url":"https://api.github.com/users/d-biehl/repos","events_url":"https://api.github.com/users/d-biehl/events{/privacy}","received_events_url":"https://api.github.com/users/d-biehl/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":219378453,"node_id":"MDU6TGFiZWwyMTkzNzg0NTM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%201","name":"beta 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":10,"created_at":"2023-03-03T22:17:29Z","updated_at":"2023-05-05T13:54:00Z","closed_at":"2023-03-21T09:02:42Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"Documentation.from_params(...) has problems with multiline values and empty lines.\r\n\r\nMust be investigated more closely and there must be more tests about this.\r\n\r\nhttps://github.com/robotframework/robotframework/blob/c80464b98f1efff1d966865eddec6120cf95ad18/src/robot/parsing/model/statements.py#L166\r\n\r\nRevert this commit 0c5d7f1fcac4ef9bd0178df27528e985af7dafb6 from \"custom parsers\" #4614 because it should be fixed independently.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4670/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4670/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4666","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4666/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4666/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4666/events","html_url":"https://github.com/robotframework/robotframework/issues/4666","id":1599753572,"node_id":"I_kwDOAUSaQ85fWk1k","number":4666,"title":"Add public API to query is Robot running and is dry-run active","user":{"login":"Snooz82","id":41592183,"node_id":"MDQ6VXNlcjQxNTkyMTgz","avatar_url":"https://avatars.githubusercontent.com/u/41592183?v=4","gravatar_id":"","url":"https://api.github.com/users/Snooz82","html_url":"https://github.com/Snooz82","followers_url":"https://api.github.com/users/Snooz82/followers","following_url":"https://api.github.com/users/Snooz82/following{/other_user}","gists_url":"https://api.github.com/users/Snooz82/gists{/gist_id}","starred_url":"https://api.github.com/users/Snooz82/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Snooz82/subscriptions","organizations_url":"https://api.github.com/users/Snooz82/orgs","repos_url":"https://api.github.com/users/Snooz82/repos","events_url":"https://api.github.com/users/Snooz82/events{/privacy}","received_events_url":"https://api.github.com/users/Snooz82/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":4972220183,"node_id":"LA_kwDOAUSaQ88AAAABKF4PFw","url":"https://api.github.com/repos/robotframework/robotframework/labels/effort:%20small","name":"effort: small","color":"5319E7","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v6.1","description":"Feature release adding JSON serialization support for the execution model (#3902), mixing embedded arguments with normal arguments (#4234), making it possible to use custom parsers (#1283), and many other nice new features.\r\n\r\nCritical and high priority issues, as well as the deadline, have been approved by Robot Framework Foundation board on January 16, 2023.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":77,"state":"closed","created_at":"2022-06-20T15:09:49Z","updated_at":"2023-06-12T09:40:06Z","due_on":"2023-06-12T07:00:00Z","closed_at":"2023-06-12T09:40:06Z"},"comments":2,"created_at":"2023-02-25T16:09:46Z","updated_at":"2023-03-15T12:50:31Z","closed_at":"2023-02-28T16:40:33Z","author_association":"MEMBER","active_lock_reason":null,"body":"For libraries it would be helpful to know if RF is running, or if a library is just imported as python package or by libdoc, which also would be the case when language servers would analyze them.\n\nhttps://robotframework.slack.com/archives/C0K0240NL/p1677318363986369\n\nProposal would be two boolean properties either in BuiltIn or robot.api?!\n\n`robot_running` or `robot_is_running` would be True if there is an execution context.\n`dry_run_active` or `dryrun_is_active` would be True if there is a running context and the dryrun is ongoing.\n\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4666/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4666/timeline","performed_via_github_app":{"id":7100,"slug":"slack","node_id":"MDM6QXBwNzEwMA==","owner":{"login":"github","id":9919,"node_id":"MDEyOk9yZ2FuaXphdGlvbjk5MTk=","avatar_url":"https://avatars.githubusercontent.com/u/9919?v=4","gravatar_id":"","url":"https://api.github.com/users/github","html_url":"https://github.com/github","followers_url":"https://api.github.com/users/github/followers","following_url":"https://api.github.com/users/github/following{/other_user}","gists_url":"https://api.github.com/users/github/gists{/gist_id}","starred_url":"https://api.github.com/users/github/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/github/subscriptions","organizations_url":"https://api.github.com/users/github/orgs","repos_url":"https://api.github.com/users/github/repos","events_url":"https://api.github.com/users/github/events{/privacy}","received_events_url":"https://api.github.com/users/github/received_events","type":"Organization","site_admin":false},"name":"Slack","description":"Connect your code to your conversations; stay updated on projects, fix bugs, and move more work forward—without leaving Slack.\r\n\r\n[Learn more and get started](https://slack.github.com/)\r\n\r\nBy installing or using the app, you agree to the [Terms and Conditions](https://github.com/integrations/slack/blob/master/docs/terms-and-conditions.md).","external_url":"https://slack.github.com/","html_url":"https://github.com/apps/slack","created_at":"2017-11-30T02:22:47Z","updated_at":"2022-12-05T10:09:47Z","permissions":{"actions":"write","checks":"read","contents":"read","deployments":"write","discussions":"read","issues":"write","metadata":"read","pull_requests":"write","repository_projects":"read","statuses":"read"},"events":["check_run","check_suite","commit_comment","create","delete","deployment","deployment_review","deployment_status","discussion","discussion_comment","issues","issue_comment","public","pull_request","pull_request_review","pull_request_review_comment","push","release","reminder","repository","repository_dispatch","status","watch","workflow_job","workflow_run"]},"state_reason":"completed","score":1}]}},{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/66","html_url":"https://github.com/robotframework/robotframework/milestone/66","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/66/labels","id":8563398,"node_id":"MI_kwDOAUSaQ84AgqrG","number":66,"title":"v6.0.1","description":"First RF 6.0.x series bug fix release.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":7,"state":"closed","created_at":"2022-10-20T16:46:25Z","updated_at":"2022-11-03T16:42:33Z","due_on":"2022-11-02T07:00:00Z","closed_at":"2022-11-03T16:42:33Z","issues":{"total_count":7,"incomplete_results":false,"items":[{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4525","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4525/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4525/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4525/events","html_url":"https://github.com/robotframework/robotframework/issues/4525","id":1429929274,"node_id":"I_kwDOAUSaQ85VOv06","number":4525,"title":"Wrong version numbers used in the User Guide and in a deprecation warning","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/66","html_url":"https://github.com/robotframework/robotframework/milestone/66","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/66/labels","id":8563398,"node_id":"MI_kwDOAUSaQ84AgqrG","number":66,"title":"v6.0.1","description":"First RF 6.0.x series bug fix release.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":7,"state":"closed","created_at":"2022-10-20T16:46:25Z","updated_at":"2022-11-03T16:42:33Z","due_on":"2022-11-02T07:00:00Z","closed_at":"2022-11-03T16:42:33Z"},"comments":0,"created_at":"2022-10-31T14:20:19Z","updated_at":"2022-10-31T14:24:24Z","closed_at":"2022-10-31T14:24:24Z","author_association":"MEMBER","active_lock_reason":null,"body":"We decided to change version number of RF 5.1 to RF 6.0 pretty close to the final release. I tried to update docs and code so that they'd use correct version numbers, but missed few places:\r\n\r\n- The User Guide talks about deprecating Force Tags and Default Tags in RF 6.0 when in fact that will happen (earliest) in RF 7.0.\r\n- The User Guide explains that `-tag` syntax can be used for removing tags in RF 5.2 but that's going to happen in RF 6.1.\r\n- A deprecation warning about using `-tag` syntax also says that behavior will be changed in RF 5.2.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4525/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4525/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4523","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4523/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4523/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4523/events","html_url":"https://github.com/robotframework/robotframework/issues/4523","id":1428745818,"node_id":"I_kwDOAUSaQ85VKO5a","number":4523,"title":"Unit test `test_parse_time_with_now_and_utc` fails around DST change","user":{"login":"fedepell","id":19709142,"node_id":"MDQ6VXNlcjE5NzA5MTQy","avatar_url":"https://avatars.githubusercontent.com/u/19709142?v=4","gravatar_id":"","url":"https://api.github.com/users/fedepell","html_url":"https://github.com/fedepell","followers_url":"https://api.github.com/users/fedepell/followers","following_url":"https://api.github.com/users/fedepell/following{/other_user}","gists_url":"https://api.github.com/users/fedepell/gists{/gist_id}","starred_url":"https://api.github.com/users/fedepell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fedepell/subscriptions","organizations_url":"https://api.github.com/users/fedepell/orgs","repos_url":"https://api.github.com/users/fedepell/repos","events_url":"https://api.github.com/users/fedepell/events{/privacy}","received_events_url":"https://api.github.com/users/fedepell/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/66","html_url":"https://github.com/robotframework/robotframework/milestone/66","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/66/labels","id":8563398,"node_id":"MI_kwDOAUSaQ84AgqrG","number":66,"title":"v6.0.1","description":"First RF 6.0.x series bug fix release.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":7,"state":"closed","created_at":"2022-10-20T16:46:25Z","updated_at":"2022-11-03T16:42:33Z","due_on":"2022-11-02T07:00:00Z","closed_at":"2022-11-03T16:42:33Z"},"comments":1,"created_at":"2022-10-30T11:37:08Z","updated_at":"2022-10-30T18:36:13Z","closed_at":"2022-10-30T18:35:22Z","author_association":"NONE","active_lock_reason":null,"body":"Very minor but reporting as it was creating me headaches, running tests just exactly _today_.\r\n\r\nIt seems to me that the `test_parse_time_with_now_and_utc` test will fail if run just on the day of DST change (ie. **today**) or the day before as they are doing comparisons with +/- 1 day and a hardcoded seconds difference value, which is incorrect if the DST happens between the two cases compared.\r\n\r\nSpecifically today (last night DST changed here) I see failing those tests:\r\n```\r\n ('now - 1 day 100 seconds',-86500),\r\n ('NOW - 1D 10H 1MIN 10S', -122470)]:\r\n``` \r\nProbably yesterday (so just before DST change) would be the ones with `+`.\r\n\r\nAs written above I'm not sure this is worth investigating and fixing, but just wanted to report as it gave me by chance some worries while rebuilding and retesting the new version of Robotframework. I will just redo the tests tomorrow ;-)\r\n\r\n\r\n**Version Information:**\r\nTried with both 6.0 and 5.0.1\r\n\r\n**Steps to reproduce:**\r\nRun the unit tests, specifically on the day immediately before or after DST change.\r\n\r\n**Error message and traceback:**\r\n```\r\n======================================================================\r\nFAIL: test_parse_time_with_now_and_utc (test_robottime.TestTime)\r\n----------------------------------------------------------------------\r\nTraceback (most recent call last):\r\n File \"/home/foo/rpmbuild/BUILD/robotframework-6.0/utest/utils/test_robottime.py\", line 341, in test_parse_time_with_now_and_utc\r\n assert_true(expected <= parsed <= expected + 1),\r\n File \"/home/foo/rpmbuild/BUILD/robotframework-6.0/utest/../src/robot/utils/asserts.py\", line 115, in assert_true\r\n _report_failure(msg)\r\n File \"/home/foo/rpmbuild/BUILD/robotframework-6.0/utest/../src/robot/utils/asserts.py\", line 218, in _report_failure\r\n raise AssertionError()\r\nAssertionError\r\n\r\n----------------------------------------------------------------------\r\n``` \r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4523/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4523/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4521","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4521/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4521/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4521/events","html_url":"https://github.com/robotframework/robotframework/issues/4521","id":1427104832,"node_id":"I_kwDOAUSaQ85VD-RA","number":4521,"title":"Enhance `robot.utils.timestr_to_secs` so that it works with `timedelta` objects","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/66","html_url":"https://github.com/robotframework/robotframework/milestone/66","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/66/labels","id":8563398,"node_id":"MI_kwDOAUSaQ84AgqrG","number":66,"title":"v6.0.1","description":"First RF 6.0.x series bug fix release.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":7,"state":"closed","created_at":"2022-10-20T16:46:25Z","updated_at":"2022-11-03T16:42:33Z","due_on":"2022-11-02T07:00:00Z","closed_at":"2022-11-03T16:42:33Z"},"comments":0,"created_at":"2022-10-28T11:15:48Z","updated_at":"2022-10-28T11:41:05Z","closed_at":"2022-10-28T11:41:05Z","author_association":"MEMBER","active_lock_reason":null,"body":"This would have avoided MarketSquare/robotframework-browser#2402.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4521/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4521/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4520","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4520/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4520/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4520/events","html_url":"https://github.com/robotframework/robotframework/issues/4520","id":1427066989,"node_id":"I_kwDOAUSaQ85VD1Bt","number":4520,"title":"Document Libdoc's public API better","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/66","html_url":"https://github.com/robotframework/robotframework/milestone/66","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/66/labels","id":8563398,"node_id":"MI_kwDOAUSaQ84AgqrG","number":66,"title":"v6.0.1","description":"First RF 6.0.x series bug fix release.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":7,"state":"closed","created_at":"2022-10-20T16:46:25Z","updated_at":"2022-11-03T16:42:33Z","due_on":"2022-11-02T07:00:00Z","closed_at":"2022-11-03T16:42:33Z"},"comments":0,"created_at":"2022-10-28T10:43:06Z","updated_at":"2022-10-28T11:13:28Z","closed_at":"2022-10-28T11:02:49Z","author_association":"MEMBER","active_lock_reason":null,"body":"Currently `robot.libdoc` API docs mention that `libdoc` and `libdoc_cli` functions are public and that everything else is private. `robot.libdocpkg` just tells that the whole package is private. We also have `LibradyDocumentation` factory method that external tools can use but it's not declared public. Enhancements to be done:\r\n\r\n- Document that `LibradyDocumentation` is part of the public API.\r\n- Recommend importing it via `robot.libdoc`. This also needs a test.\r\n- Add documentation to `LibradyDocumentation`. Needs an example and reference to the returned `LibraryDoc` class.\r\n- Add at least some documentation to `LibraryDoc` and `KeywordDoc`.\r\n- Document that related `DocumentationBuilder` (see also #4519) is not part of the public API.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4520/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4520/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4519","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4519/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4519/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4519/events","html_url":"https://github.com/robotframework/robotframework/issues/4519","id":1427059550,"node_id":"I_kwDOAUSaQ85VDzNe","number":4519,"title":"Libdoc's `DocumentationBuilder` doesn't anymore work with resource files with `.robot` extension","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/66","html_url":"https://github.com/robotframework/robotframework/milestone/66","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/66/labels","id":8563398,"node_id":"MI_kwDOAUSaQ84AgqrG","number":66,"title":"v6.0.1","description":"First RF 6.0.x series bug fix release.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":7,"state":"closed","created_at":"2022-10-20T16:46:25Z","updated_at":"2022-11-03T16:42:33Z","due_on":"2022-11-02T07:00:00Z","closed_at":"2022-11-03T16:42:33Z"},"comments":0,"created_at":"2022-10-28T10:36:45Z","updated_at":"2022-10-28T11:02:50Z","closed_at":"2022-10-28T11:02:50Z","author_association":"MEMBER","active_lock_reason":null,"body":"When support for generating documentation for suite files was added (#4493), the `DocumentationBuilder` factory method was changed so that it returns a `SuiteDocBuilder` with all files having a `.robot` extension. This builder only works with suite files and not with resource files. The `LibraryDocumentation` factory method that uses `DocumentationBuilder` handles this problem internally similarly as it handles `DocumentationBuilder` not supporting resource files in PYTHONPATH so this doesn't affect Libdoc itself. It does, however, affect direct usage of `DocumentationBuilder`.\r\n\r\nChanges like this are always annoying, but in this case this isn't too severe because `DocumentationBuilder` isn't really part of the public API and `LibraryDocumentation` should be used instead of it. Alternatively, it's possible to use `ResourceDocBuilder` explicitly when working with resource files. The initial plan was to just document this behavior (#4517), but it is actually easy to fix this by making `DocumentationBuilder` a class instead of a factory method.\r\n\r\nA related problem is that Libdoc's public API isn't properly defined. A separate issue needs to be submitted about that. We can then explicitly recommend `LibraryDocumentation`.\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4519/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4519/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4516","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4516/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4516/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4516/events","html_url":"https://github.com/robotframework/robotframework/issues/4516","id":1424167138,"node_id":"I_kwDOAUSaQ85U4xDi","number":4516,"title":"`Set Library Search Order` doesn't work if there are two matches and one is from standard libraries","user":{"login":"jaasal","id":39295284,"node_id":"MDQ6VXNlcjM5Mjk1Mjg0","avatar_url":"https://avatars.githubusercontent.com/u/39295284?v=4","gravatar_id":"","url":"https://api.github.com/users/jaasal","html_url":"https://github.com/jaasal","followers_url":"https://api.github.com/users/jaasal/followers","following_url":"https://api.github.com/users/jaasal/following{/other_user}","gists_url":"https://api.github.com/users/jaasal/gists{/gist_id}","starred_url":"https://api.github.com/users/jaasal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jaasal/subscriptions","organizations_url":"https://api.github.com/users/jaasal/orgs","repos_url":"https://api.github.com/users/jaasal/repos","events_url":"https://api.github.com/users/jaasal/events{/privacy}","received_events_url":"https://api.github.com/users/jaasal/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/66","html_url":"https://github.com/robotframework/robotframework/milestone/66","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/66/labels","id":8563398,"node_id":"MI_kwDOAUSaQ84AgqrG","number":66,"title":"v6.0.1","description":"First RF 6.0.x series bug fix release.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":7,"state":"closed","created_at":"2022-10-20T16:46:25Z","updated_at":"2022-11-03T16:42:33Z","due_on":"2022-11-02T07:00:00Z","closed_at":"2022-11-03T16:42:33Z"},"comments":4,"created_at":"2022-10-26T14:40:56Z","updated_at":"2022-10-27T18:07:42Z","closed_at":"2022-10-27T18:05:35Z","author_association":"NONE","active_lock_reason":null,"body":"Versions: Robot Framework 6.0, Python 3.8.10, Windows 10\r\nPrerequisites: robotframework-sshlibrary installed\r\n\r\nExecute the following test:\r\n```\r\n*** Settings ***\r\nLibrary SSHLibrary\r\nLibrary OperatingSystem\r\n\r\n*** Test Cases ***\r\nTest Library Search Order\r\n Set Library Search Order OperatingSystem SSHLibrary \r\n Get File ./foo.txt\r\n```\r\n\r\nExpected: Get File -keyword from OperatingSystem is executed\r\nActual: Warning about duplicate keywords is shown, Get File -keyword from SSHLibrary is executed","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4516/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":1},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4516/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4515","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4515/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4515/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4515/events","html_url":"https://github.com/robotframework/robotframework/issues/4515","id":1416952503,"node_id":"I_kwDOAUSaQ85UdPq3","number":4515,"title":"Localized BDD prefixes consisting of more than one word don't work","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/66","html_url":"https://github.com/robotframework/robotframework/milestone/66","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/66/labels","id":8563398,"node_id":"MI_kwDOAUSaQ84AgqrG","number":66,"title":"v6.0.1","description":"First RF 6.0.x series bug fix release.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":7,"state":"closed","created_at":"2022-10-20T16:46:25Z","updated_at":"2022-11-03T16:42:33Z","due_on":"2022-11-02T07:00:00Z","closed_at":"2022-11-03T16:42:33Z"},"comments":2,"created_at":"2022-10-20T16:50:46Z","updated_at":"2022-11-03T16:00:50Z","closed_at":"2022-10-28T11:42:45Z","author_association":"MEMBER","active_lock_reason":null,"body":"RF 6.0 added support for localizing Given/When/Then prefixes (#519). The implementation has a bug and prefixes consisting of more than one word like `Étant donné` in French don't work. Other affected languages are Polish, Turkish, Bulgarian and Romanian.\r\n\r\nThis is severe enough to warrant a bug fix release bug not so critical that such a release would be needed immediately.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4515/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4515/timeline","performed_via_github_app":null,"state_reason":"completed","score":1}]}},{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z","issues":{"total_count":70,"incomplete_results":false,"items":[{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4511","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4511/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4511/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4511/events","html_url":"https://github.com/robotframework/robotframework/issues/4511","id":1411664576,"node_id":"I_kwDOAUSaQ85UJErA","number":4511,"title":"Support custom converter with more than one argument as long as they are not mandatory","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":0,"created_at":"2022-10-17T14:16:21Z","updated_at":"2022-10-17T22:16:53Z","closed_at":"2022-10-17T22:16:52Z","author_association":"MEMBER","active_lock_reason":null,"body":"Currently custom converters must have exactly one positional argument like:\r\n```python\r\ndef converter(value):\r\n ...\r\n```\r\n\r\nTo make it easier to add some optional arguments to converters (see #4510 for one possible use case), we should make validation less strict and only validate that a converter doesn't have more than one _mandatory_ argument. That allows converters like:\r\n```python\r\ndef converter(value, whatever='default'):\r\n ...\r\n```\r\nThis is such a safe change and helps with forward compatibility that I consider it fine adding it still in RF 6.0.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4511/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4511/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4500","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4500/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4500/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4500/events","html_url":"https://github.com/robotframework/robotframework/issues/4500","id":1401917337,"node_id":"I_kwDOAUSaQ85Tj4-Z","number":4500,"title":"Deprecate `robot.utils.TRUE/FALSE_STRINGS`","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":121827221,"node_id":"MDU6TGFiZWwxMjE4MjcyMjE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/deprecation","name":"deprecation","color":"fef2c0","default":false,"description":""},{"id":230194665,"node_id":"MDU6TGFiZWwyMzAxOTQ2NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%202","name":"rc 2","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":0,"created_at":"2022-10-08T11:31:25Z","updated_at":"2022-10-11T14:40:54Z","closed_at":"2022-10-08T11:57:04Z","author_association":"MEMBER","active_lock_reason":null,"body":"We only use `FALSE_STRINGS` in the first place and it is used in `robottypes` module where it is defined. No need to expose these via `robot.utils`. To preserve backwards compatibility, we probably should preserver them now in RF 6.0 and only document that they are deprecated. We can then later more loudly deprecate them along with the Python 2/3 compatibility layer that has also been \"quitly\" deprecated (#4150).\r\n\r\nI'm not sure do we need `is_truthy/falsy` that use `FALSE_STRINGS` either. Possibly our Boolean argument conversion could take care of all such conversion needs. Removing all `is_truthy/falsy` usages now in the release candidate phase isn't a good idea so I'll leave them as-is now.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4500/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4500/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4497","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4497/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4497/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4497/events","html_url":"https://github.com/robotframework/robotframework/issues/4497","id":1399364034,"node_id":"I_kwDOAUSaQ85TaJnC","number":4497,"title":"Libdoc: Support setting dark or light mode explicitly","user":{"login":"mardukbp","id":1140106,"node_id":"MDQ6VXNlcjExNDAxMDY=","avatar_url":"https://avatars.githubusercontent.com/u/1140106?v=4","gravatar_id":"","url":"https://api.github.com/users/mardukbp","html_url":"https://github.com/mardukbp","followers_url":"https://api.github.com/users/mardukbp/followers","following_url":"https://api.github.com/users/mardukbp/following{/other_user}","gists_url":"https://api.github.com/users/mardukbp/gists{/gist_id}","starred_url":"https://api.github.com/users/mardukbp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mardukbp/subscriptions","organizations_url":"https://api.github.com/users/mardukbp/orgs","repos_url":"https://api.github.com/users/mardukbp/repos","events_url":"https://api.github.com/users/mardukbp/events{/privacy}","received_events_url":"https://api.github.com/users/mardukbp/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":230194665,"node_id":"MDU6TGFiZWwyMzAxOTQ2NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%202","name":"rc 2","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":16,"created_at":"2022-10-06T11:01:38Z","updated_at":"2022-10-11T17:37:11Z","closed_at":"2022-10-11T17:37:11Z","author_association":"NONE","active_lock_reason":null,"body":"The HTML documentation generated by libdoc can be opened in an IDE, where many people use a dark theme. The contrast between the Robot Framework code on a dark background and the library documentation with a white background is unpleasant. \r\n\r\nThis problem can be solved if libdoc has a stylesheet parameter to specify the CSS file that should be used to style the documentation. And maybe libdoc should include a light and a dark stylesheet.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4497/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4497/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4494","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4494/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4494/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4494/events","html_url":"https://github.com/robotframework/robotframework/issues/4494","id":1395481642,"node_id":"I_kwDOAUSaQ85TLVwq","number":4494,"title":"Enhance public `robot.api.Languages` and `robot.api.Language` APIs","user":{"login":"d-biehl","id":7069968,"node_id":"MDQ6VXNlcjcwNjk5Njg=","avatar_url":"https://avatars.githubusercontent.com/u/7069968?v=4","gravatar_id":"","url":"https://api.github.com/users/d-biehl","html_url":"https://github.com/d-biehl","followers_url":"https://api.github.com/users/d-biehl/followers","following_url":"https://api.github.com/users/d-biehl/following{/other_user}","gists_url":"https://api.github.com/users/d-biehl/gists{/gist_id}","starred_url":"https://api.github.com/users/d-biehl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/d-biehl/subscriptions","organizations_url":"https://api.github.com/users/d-biehl/orgs","repos_url":"https://api.github.com/users/d-biehl/repos","events_url":"https://api.github.com/users/d-biehl/events{/privacy}","received_events_url":"https://api.github.com/users/d-biehl/received_events","type":"User","site_admin":false},"labels":[{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":110430429,"node_id":"MDU6TGFiZWwxMTA0MzA0Mjk=","url":"https://api.github.com/repos/robotframework/robotframework/labels/task","name":"task","color":"ededed","default":false,"description":"Generic task not listed in release notes"},{"id":230194665,"node_id":"MDU6TGFiZWwyMzAxOTQ2NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%202","name":"rc 2","color":"ffffff","default":false,"description":""},{"id":911065884,"node_id":"MDU6TGFiZWw5MTEwNjU4ODQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/acknowledge","name":"acknowledge","color":"bc82e0","default":false,"description":"To be acknowledged in release notes"}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":23,"created_at":"2022-10-03T23:59:47Z","updated_at":"2022-10-11T19:26:43Z","closed_at":"2022-10-11T19:26:42Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"In order to support languages reasonably in RobotCode (and other tools), it would be nice if we could talk about the Language API again.\r\n\r\n1. To give the user a good error message which language or custom language was not loaded or found, it should be possible to load individual languages and import custom language files.\r\n - In the current implementation I can either create the `Languages` class in the hope that it works, in case of error I can not easily filter out the language that does not work.\r\n - `add_language` can't load user defined language files\r\n\r\n2. There should be a public API that returns all available languages.\r\n - already exists, is just not public\r\n\r\n3. The process of loading custom language files should be separated from loading the real language.\r\n - Before loading the real languages, the custom language files should be loaded, only then you can load the language\r\n - I think this should also be done with the command line parameters, there should be 2 arguments, one for loading the custom language files and the current one for the real language\r\n\r\n4. it should be possible to create a `Languages` instance that does not insert English and the deprecated single forms of the headers automatically\r\n - I currently have to filter it out again if I want to show only the specified languages e.g. in the completion.\r\n\r\nLet's discuss ;-)","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4494/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4494/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4493","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4493/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4493/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4493/events","html_url":"https://github.com/robotframework/robotframework/issues/4493","id":1395446781,"node_id":"I_kwDOAUSaQ85TLNP9","number":4493,"title":"Libdoc: Support generating keyword documentation for suite files","user":{"login":"d-biehl","id":7069968,"node_id":"MDQ6VXNlcjcwNjk5Njg=","avatar_url":"https://avatars.githubusercontent.com/u/7069968?v=4","gravatar_id":"","url":"https://api.github.com/users/d-biehl","html_url":"https://github.com/d-biehl","followers_url":"https://api.github.com/users/d-biehl/followers","following_url":"https://api.github.com/users/d-biehl/following{/other_user}","gists_url":"https://api.github.com/users/d-biehl/gists{/gist_id}","starred_url":"https://api.github.com/users/d-biehl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/d-biehl/subscriptions","organizations_url":"https://api.github.com/users/d-biehl/orgs","repos_url":"https://api.github.com/users/d-biehl/repos","events_url":"https://api.github.com/users/d-biehl/events{/privacy}","received_events_url":"https://api.github.com/users/d-biehl/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":230194665,"node_id":"MDU6TGFiZWwyMzAxOTQ2NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%202","name":"rc 2","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":6,"created_at":"2022-10-03T23:12:15Z","updated_at":"2022-10-27T08:27:09Z","closed_at":"2022-10-04T14:22:19Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"When I want to create a library documentation for files that contains keywords and test cases, I get an error message:\r\n\r\n```\r\n❯ libdoc .\\suite.robot suite.html\r\nError in file 'suite.robot' on line 1: Resource file with 'Test Cases' section is invalid.\r\n\r\nTry --help for usage information.\r\n```\r\n\r\nI think it should also be possible to create a library documentation for such files.\r\n\r\n- simply for the documentation of the keywords contained there\r\n- in RobotCode there is a function that allows to display the library documentation in VSCode. On the one hand you can easily show the full documentation, on the other hand it is a good help to write the documentation, because you have a preview of what you have written. \r\n\r\nThis documentation is generated on the fly and displayed in the VSCode window. This works for libraries and resource files, but not for suite files. \r\n\r\nI have already started to make a PR #4492, but I don't get to finish it yet, (holiday today, new heating system tomorrow, Wednesday RoboCon, ...).\r\n\r\ncan you check the PR and I think at the end of the week I can add/correct the test cases.\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4493/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4493/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4490","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4490/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4490/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4490/events","html_url":"https://github.com/robotframework/robotframework/issues/4490","id":1392590791,"node_id":"I_kwDOAUSaQ85TAT_H","number":4490,"title":"Time string parsing for micro and nanoseconds","user":{"login":"mikkuja","id":111570884,"node_id":"U_kgDOBqZvxA","avatar_url":"https://avatars.githubusercontent.com/u/111570884?v=4","gravatar_id":"","url":"https://api.github.com/users/mikkuja","html_url":"https://github.com/mikkuja","followers_url":"https://api.github.com/users/mikkuja/followers","following_url":"https://api.github.com/users/mikkuja/following{/other_user}","gists_url":"https://api.github.com/users/mikkuja/gists{/gist_id}","starred_url":"https://api.github.com/users/mikkuja/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mikkuja/subscriptions","organizations_url":"https://api.github.com/users/mikkuja/orgs","repos_url":"https://api.github.com/users/mikkuja/repos","events_url":"https://api.github.com/users/mikkuja/events{/privacy}","received_events_url":"https://api.github.com/users/mikkuja/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":230194665,"node_id":"MDU6TGFiZWwyMzAxOTQ2NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%202","name":"rc 2","color":"ffffff","default":false,"description":""},{"id":911065884,"node_id":"MDU6TGFiZWw5MTEwNjU4ODQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/acknowledge","name":"acknowledge","color":"bc82e0","default":false,"description":"To be acknowledged in release notes"}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":3,"created_at":"2022-09-30T15:11:45Z","updated_at":"2022-10-11T14:40:53Z","closed_at":"2022-10-10T14:47:46Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"RF can parse time from multiple different input formats. One of them is [time string](https://robotframework.org/robotframework/latest/libraries/DateTime.html#Time%20string). Currently smallest time specifiers are for milliseconds. However, we are working with electrical measurement devices and would need to input times down to nanosecond accuracy.\r\n\r\nWe use time strings in standard keywords\r\n\r\n```robotframework\r\n${time}= Convert Time 250 ns\r\n```\r\n\r\nand in our own keywords that uses [argument conversions](https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#supported-conversions).\r\n\r\n\r\nConsiderations:\r\n- RF typically converts times to float as seconds.\r\n- It is already possible to define sub millisecond times eg. using floats `1E-6` or decimals in string format `0.001 ms`.\r\n- In some places accuracy is limited either to one second or one millisecond. See [Millisecond handling](https://robotframework.org/robotframework/latest/libraries/DateTime.html#Millisecond%20handling).\r\n- Python [datetime.timedelta](https://docs.python.org/3/library/datetime.html#timedelta-objects) only supports up to microsecond accuracy.\r\n - Custom argument converter is needed for nanosecond accuracy. That can be easily implemented using [robot.Datetime API](https://robotframework.org/robotframework/latest/libraries/DateTime.html#Programmatic%20usage).\r\n- DateTime converters can also output time in str formats like `1min 2s 345ms`. At this time we don't need this conversion and would probably prefer seconds as decimals anyway `1min 2.3456s`.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4490/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4490/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4485","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4485/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4485/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4485/events","html_url":"https://github.com/robotframework/robotframework/issues/4485","id":1388846398,"node_id":"I_kwDOAUSaQ85SyB0-","number":4485,"title":"Explain the default value of `Sleep` keyword better in its documentation","user":{"login":"F3licity","id":8245663,"node_id":"MDQ6VXNlcjgyNDU2NjM=","avatar_url":"https://avatars.githubusercontent.com/u/8245663?v=4","gravatar_id":"","url":"https://api.github.com/users/F3licity","html_url":"https://github.com/F3licity","followers_url":"https://api.github.com/users/F3licity/followers","following_url":"https://api.github.com/users/F3licity/following{/other_user}","gists_url":"https://api.github.com/users/F3licity/gists{/gist_id}","starred_url":"https://api.github.com/users/F3licity/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/F3licity/subscriptions","organizations_url":"https://api.github.com/users/F3licity/orgs","repos_url":"https://api.github.com/users/F3licity/repos","events_url":"https://api.github.com/users/F3licity/events{/privacy}","received_events_url":"https://api.github.com/users/F3licity/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""},{"id":911065884,"node_id":"MDU6TGFiZWw5MTEwNjU4ODQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/acknowledge","name":"acknowledge","color":"bc82e0","default":false,"description":"To be acknowledged in release notes"}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":1,"created_at":"2022-09-28T07:10:06Z","updated_at":"2022-10-11T14:37:06Z","closed_at":"2022-09-28T07:20:07Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"Explain in the docstring of the keyword `Sleep`, that when a value is provided, as argument, without specifying minutes or seconds, that the default is seconds. \r\n\r\nRelated PR: https://github.com/robotframework/robotframework/pull/4479","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4485/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4485/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4484","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4484/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4484/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4484/events","html_url":"https://github.com/robotframework/robotframework/issues/4484","id":1388518396,"node_id":"I_kwDOAUSaQ85Swxv8","number":4484,"title":"Invalid TRY/EXCEPT structure causes normal error, not syntax error","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":0,"created_at":"2022-09-27T23:45:38Z","updated_at":"2022-09-29T21:09:09Z","closed_at":"2022-09-28T00:30:51Z","author_association":"MEMBER","active_lock_reason":null,"body":"Invalid TRY/EXCEPT structure should cause a syntax error that cannot be caught. Nowadays it causes a normal catchable error.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4484/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4484/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4483","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4483/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4483/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4483/events","html_url":"https://github.com/robotframework/robotframework/issues/4483","id":1388507118,"node_id":"I_kwDOAUSaQ85Swu_u","number":4483,"title":"BREAK and CONTINUE hide continuable errors with WHILE loops","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":0,"created_at":"2022-09-27T23:28:27Z","updated_at":"2022-09-29T21:09:09Z","closed_at":"2022-09-28T00:30:50Z","author_association":"MEMBER","active_lock_reason":null,"body":"The following currently succeeds but it should certainly fail. Same problem occurs also wtih CONTINUE. With FOR loops BREAK and CONTINUE work correctly in this regard.\r\n\r\n```robotframework\r\n*** Test Cases ***\r\nExample\r\n WHILE True\r\n Run Keyword And Continue On Failure Fail Message\r\n BREAK\r\n END\r\n```","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4483/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4483/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4482","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4482/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4482/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4482/events","html_url":"https://github.com/robotframework/robotframework/issues/4482","id":1388392139,"node_id":"I_kwDOAUSaQ85SwS7L","number":4482,"title":"WHILE and FOR loop contents not shown in log if running them fails due to errors","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":0,"created_at":"2022-09-27T21:18:10Z","updated_at":"2022-09-29T21:09:09Z","closed_at":"2022-09-27T23:15:05Z","author_association":"MEMBER","active_lock_reason":null,"body":"When debugging #4480 I noticed that if WHILE loop condition is invalid, the loop is totally empty in the log file. The same was true also if the loop had syntax errors (e.g. missing END) and also FOR loops had same problem. We in general try to show all data in log even if it's not run (#3842) and have, for example, enhanced handling FOR loops that aren't run but are nevertheless valid so like that (#4184). Let's show loop contents also in these error situations.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4482/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4482/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4481","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4481/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4481/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4481/events","html_url":"https://github.com/robotframework/robotframework/issues/4481","id":1388378074,"node_id":"I_kwDOAUSaQ85SwPfa","number":4481,"title":"Invalid BREAK and CONTINUE cause errros even when not actually executed","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":0,"created_at":"2022-09-27T21:04:18Z","updated_at":"2022-09-29T21:09:08Z","closed_at":"2022-09-27T23:15:05Z","author_association":"MEMBER","active_lock_reason":null,"body":"This example fails:\r\n```\r\n*** Test Cases ***\r\nExample\r\n WHILE True\r\n Log This is executed\r\n IF False\r\n Fail This isn't run\r\n BREAK invalid\r\n END\r\n BREAK\r\n END\r\n```\r\n\r\nThe IF block isn't run but BREAK there causes an error when the block is gone through to show it in the log file. It could be argued that a syntax error like this should always fail the loop, but then it should fail so that the whole loop isn't run. Not failing is easier and also consistent with how similar syntax errors are handled with other control structures if they aren't run.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4481/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4481/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4480","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4480/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4480/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4480/events","html_url":"https://github.com/robotframework/robotframework/issues/4480","id":1387795664,"node_id":"I_kwDOAUSaQ85SuBTQ","number":4480,"title":"Creating log and report fails if WHILE loop has no condition","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":0,"created_at":"2022-09-27T13:44:51Z","updated_at":"2022-09-29T21:09:08Z","closed_at":"2022-09-27T23:15:04Z","author_association":"MEMBER","active_lock_reason":null,"body":"Execution goes fine, but trying to parse output.xml after it fails with\r\n> TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'\r\n\r\nLuckily this is easy to fix.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4480/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4480/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4477","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4477/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4477/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4477/events","html_url":"https://github.com/robotframework/robotframework/issues/4477","id":1385187592,"node_id":"I_kwDOAUSaQ85SkEkI","number":4477,"title":"Convert and validate `TypedDict` items","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":2,"created_at":"2022-09-25T22:42:11Z","updated_at":"2022-09-29T21:09:08Z","closed_at":"2022-09-29T08:08:03Z","author_association":"MEMBER","active_lock_reason":null,"body":"Currently when using [TypedDict](https://docs.python.org/3/library/typing.html#typing.TypedDict) as a type hint, Robot simply converts the value to a dictionary but doesn't convert or validated individual items. We are planning to add conversion and validation for generics in RF 5.1 (#4433) and it would be both convenient and consistent to also handle `TypedDict` objects better.\r\n\r\nThis change will cause backwards incompatibility problems if someone has used `TypedDict` as a type hint and used arguments do not actually match it. I don't think that's a desired situation and explicitly preventing it can be considered a bug fix.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4477/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4477/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4476","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4476/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4476/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4476/events","html_url":"https://github.com/robotframework/robotframework/issues/4476","id":1383820512,"node_id":"I_kwDOAUSaQ85Se2zg","number":4476,"title":"BuiltIn: `Call Method` loses traceback if calling the method fails","user":{"login":"kbogineni","id":9212883,"node_id":"MDQ6VXNlcjkyMTI4ODM=","avatar_url":"https://avatars.githubusercontent.com/u/9212883?v=4","gravatar_id":"","url":"https://api.github.com/users/kbogineni","html_url":"https://github.com/kbogineni","followers_url":"https://api.github.com/users/kbogineni/followers","following_url":"https://api.github.com/users/kbogineni/following{/other_user}","gists_url":"https://api.github.com/users/kbogineni/gists{/gist_id}","starred_url":"https://api.github.com/users/kbogineni/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kbogineni/subscriptions","organizations_url":"https://api.github.com/users/kbogineni/orgs","repos_url":"https://api.github.com/users/kbogineni/repos","events_url":"https://api.github.com/users/kbogineni/events{/privacy}","received_events_url":"https://api.github.com/users/kbogineni/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":14,"created_at":"2022-09-23T13:36:04Z","updated_at":"2022-09-29T21:09:08Z","closed_at":"2022-09-27T09:31:48Z","author_association":"NONE","active_lock_reason":null,"body":"I see the below call is not logging traceback on failure and throwing the error message instead.\r\nCall method ${obj} ${method} ${args} \r\n\r\nIt would be great to log the traceback incase of any failure, it will be helpful to identify the issue soon.\r\n\r\nNeed the fix in version 4.1 \r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4476/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4476/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4471","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4471/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4471/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4471/events","html_url":"https://github.com/robotframework/robotframework/issues/4471","id":1379908219,"node_id":"I_kwDOAUSaQ85SP7p7","number":4471,"title":"Libdoc: If keyword and type have same case-insensitive name, opening type info opens keyword documentation","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":230194541,"node_id":"MDU6TGFiZWwyMzAxOTQ1NDE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%202","name":"beta 2","color":"ffffff","default":false,"description":""},{"id":911065884,"node_id":"MDU6TGFiZWw5MTEwNjU4ODQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/acknowledge","name":"acknowledge","color":"bc82e0","default":false,"description":"To be acknowledged in release notes"}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":1,"created_at":"2022-09-20T19:42:27Z","updated_at":"2022-09-21T18:12:39Z","closed_at":"2022-09-20T19:42:53Z","author_association":"MEMBER","active_lock_reason":null,"body":"Can be reproduced with this example:\r\n\r\n```python\r\ndef none(n: None):\r\n pass\r\n```\r\n\r\nSomewhat similar bug than #4464.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4471/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4471/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4470","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4470/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4470/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4470/events","html_url":"https://github.com/robotframework/robotframework/issues/4470","id":1379190524,"node_id":"I_kwDOAUSaQ85SNMb8","number":4470,"title":"Enhance `Keyword Should Exist` performance by not looking for possible recommendations","user":{"login":"JFoederer","id":32476108,"node_id":"MDQ6VXNlcjMyNDc2MTA4","avatar_url":"https://avatars.githubusercontent.com/u/32476108?v=4","gravatar_id":"","url":"https://api.github.com/users/JFoederer","html_url":"https://github.com/JFoederer","followers_url":"https://api.github.com/users/JFoederer/followers","following_url":"https://api.github.com/users/JFoederer/following{/other_user}","gists_url":"https://api.github.com/users/JFoederer/gists{/gist_id}","starred_url":"https://api.github.com/users/JFoederer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JFoederer/subscriptions","organizations_url":"https://api.github.com/users/JFoederer/orgs","repos_url":"https://api.github.com/users/JFoederer/repos","events_url":"https://api.github.com/users/JFoederer/events{/privacy}","received_events_url":"https://api.github.com/users/JFoederer/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":230194541,"node_id":"MDU6TGFiZWwyMzAxOTQ1NDE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%202","name":"beta 2","color":"ffffff","default":false,"description":""},{"id":911065884,"node_id":"MDU6TGFiZWw5MTEwNjU4ODQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/acknowledge","name":"acknowledge","color":"bc82e0","default":false,"description":"To be acknowledged in release notes"}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":2,"created_at":"2022-09-20T10:33:51Z","updated_at":"2022-09-21T18:12:38Z","closed_at":"2022-09-20T18:17:16Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"In one project I am working on, they ran into an issue where checks were failing because Robot framework was taking up too much time. Analysis showed that the time was taken by calls to the Built in keyword `Keyword should exist`. In that particular situation it could take more than a second for a single call to `Keyword should exist` to return, with an average of 400ms. Anything above 500ms was causing failures.\r\n\r\nFurther analysis revealed the time to be spend on finding keyword recommendations. Finding these recommendations is a very useful feature when you misspell a keyword during test case development. However, when explicitly checking for a keyword's existence at runtime, the boolean answer suffices. In fact, in the current implementation the recommendations are disposed and not included in the reported failure.\r\n\r\nA proposed solution is available in [PR#4457](https://github.com/robotframework/robotframework/pull/4457).","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4470/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4470/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4464","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4464/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4464/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4464/events","html_url":"https://github.com/robotframework/robotframework/issues/4464","id":1377111665,"node_id":"I_kwDOAUSaQ85SFQ5x","number":4464,"title":"Libdoc: Type hints aren't shown for types with same name as Javascript variables available in browser namespace","user":{"login":"Snooz82","id":41592183,"node_id":"MDQ6VXNlcjQxNTkyMTgz","avatar_url":"https://avatars.githubusercontent.com/u/41592183?v=4","gravatar_id":"","url":"https://api.github.com/users/Snooz82","html_url":"https://github.com/Snooz82","followers_url":"https://api.github.com/users/Snooz82/followers","following_url":"https://api.github.com/users/Snooz82/following{/other_user}","gists_url":"https://api.github.com/users/Snooz82/gists{/gist_id}","starred_url":"https://api.github.com/users/Snooz82/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Snooz82/subscriptions","organizations_url":"https://api.github.com/users/Snooz82/orgs","repos_url":"https://api.github.com/users/Snooz82/repos","events_url":"https://api.github.com/users/Snooz82/events{/privacy}","received_events_url":"https://api.github.com/users/Snooz82/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":230194541,"node_id":"MDU6TGFiZWwyMzAxOTQ1NDE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%202","name":"beta 2","color":"ffffff","default":false,"description":""},{"id":911065884,"node_id":"MDU6TGFiZWw5MTEwNjU4ODQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/acknowledge","name":"acknowledge","color":"bc82e0","default":false,"description":"To be acknowledged in release notes"}],"state":"closed","locked":false,"assignee":{"login":"Snooz82","id":41592183,"node_id":"MDQ6VXNlcjQxNTkyMTgz","avatar_url":"https://avatars.githubusercontent.com/u/41592183?v=4","gravatar_id":"","url":"https://api.github.com/users/Snooz82","html_url":"https://github.com/Snooz82","followers_url":"https://api.github.com/users/Snooz82/followers","following_url":"https://api.github.com/users/Snooz82/following{/other_user}","gists_url":"https://api.github.com/users/Snooz82/gists{/gist_id}","starred_url":"https://api.github.com/users/Snooz82/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Snooz82/subscriptions","organizations_url":"https://api.github.com/users/Snooz82/orgs","repos_url":"https://api.github.com/users/Snooz82/repos","events_url":"https://api.github.com/users/Snooz82/events{/privacy}","received_events_url":"https://api.github.com/users/Snooz82/received_events","type":"User","site_admin":false},"assignees":[{"login":"Snooz82","id":41592183,"node_id":"MDQ6VXNlcjQxNTkyMTgz","avatar_url":"https://avatars.githubusercontent.com/u/41592183?v=4","gravatar_id":"","url":"https://api.github.com/users/Snooz82","html_url":"https://github.com/Snooz82","followers_url":"https://api.github.com/users/Snooz82/followers","following_url":"https://api.github.com/users/Snooz82/following{/other_user}","gists_url":"https://api.github.com/users/Snooz82/gists{/gist_id}","starred_url":"https://api.github.com/users/Snooz82/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Snooz82/subscriptions","organizations_url":"https://api.github.com/users/Snooz82/orgs","repos_url":"https://api.github.com/users/Snooz82/repos","events_url":"https://api.github.com/users/Snooz82/events{/privacy}","received_events_url":"https://api.github.com/users/Snooz82/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":2,"created_at":"2022-09-18T16:31:41Z","updated_at":"2022-09-21T18:12:38Z","closed_at":"2022-09-19T13:24:49Z","author_association":"MEMBER","active_lock_reason":null,"body":"Because `Proxy` is a valid variable name in the browser, it tries to show the function `Proxy()` instead of the node with the id Proxy.\r\n\r\nThat effect is visible with Browser Library [New Browser](https://marketsquare.github.io/robotframework-browser/Browser.html#New%20Browser) Keyword.\r\n\r\nJust click in the arguments","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4464/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4464/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4462","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4462/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4462/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4462/events","html_url":"https://github.com/robotframework/robotframework/issues/4462","id":1377085830,"node_id":"I_kwDOAUSaQ85SFKmG","number":4462,"title":"Deprecate using embedded arguments using variables that do not match custom regexp","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":121827221,"node_id":"MDU6TGFiZWwxMjE4MjcyMjE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/deprecation","name":"deprecation","color":"fef2c0","default":false,"description":""},{"id":230194541,"node_id":"MDU6TGFiZWwyMzAxOTQ1NDE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%202","name":"beta 2","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":1,"created_at":"2022-09-18T14:57:20Z","updated_at":"2022-09-21T18:12:38Z","closed_at":"2022-09-21T12:26:06Z","author_association":"MEMBER","active_lock_reason":null,"body":"If a keyword accepts embedded arguments and uses a custom regexp, the regexp is not validated if the argument is passed as a variable. For example, the keyword in the example below requires the argument to be a number, but the last example test that passes a string via a variable still succeeds.\r\n\r\n```robotframework\r\n*** Variables ***\r\n${var} bad\r\n\r\n*** Test Cases ***\r\nSucceeds as it should\r\n Example 123\r\n\r\nFails as it should\r\n Example bad\r\n\r\nSucceeds but probably shouldn't\r\n Example ${var}\r\n\r\n*** Keywords ***\r\nExample ${arg:\\d+}\r\n Log to console ${arg}\r\n```\r\n\r\nThe plan was to change this already in RF 5.1 (#4069) but due to backwards incompatibility problems explained in https://github.com/robotframework/robotframework/issues/4069#issuecomment-1237038936 changes were reverted. New issue (#4454) was submitted about enhancing conflict resolution the problematic regexps explained in the aforementioned comment wouldn't be needed.\r\n\r\nImproved conflict resolution works well and will be part of RF 5.1, but it is still not safe to make custom regexp validation more strict. It will, however, be deprecated and functionality will be changed later. In RF 5.1 there are no visible deprecation messages yet, but this will be documented in the release notes and in the User Guide. We'll probably deprecate it more loudly in RF 5.2 and change functionality in RF 6.0.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4462/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4462/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4461","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4461/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4461/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4461/events","html_url":"https://github.com/robotframework/robotframework/issues/4461","id":1376982569,"node_id":"I_kwDOAUSaQ85SExYp","number":4461,"title":"Automatic argument conversion for `pathlib.Path`","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":230194541,"node_id":"MDU6TGFiZWwyMzAxOTQ1NDE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%202","name":"beta 2","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":0,"created_at":"2022-09-18T08:21:34Z","updated_at":"2022-09-21T18:18:52Z","closed_at":"2022-09-18T10:59:21Z","author_association":"MEMBER","active_lock_reason":null,"body":"Automatic argument conversion is a really convenient feature. We should support that also with [pathlib.Path](https://docs.python.org/3/library/pathlib.html) to allow keywords like\r\n```python\r\ndef example(path: pathlib.Path):\r\n ...\r\n```\r\nthat can be used like\r\n```\r\nExample /usr/robot/example\r\n```\r\n\r\nThe inspiration for this enhancement came from #4455 that pointed out our standard libraries don't generally accept paths as `pathlib.Path` objects. After this enhancement the easiest way to support them would be using type hints.\r\n\r\nIn addition to specifying the type hint as `pathlib.Path`, we should support the `os.PathLike` ABC which also coverts `pathlib.PurePath`. I believe we should always convert to `pathlib.Path` objects regardless the type, though. Need to also make sure `/` is converted to `\\` on Windows automatically.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4461/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4461/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4455","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4455/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4455/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4455/events","html_url":"https://github.com/robotframework/robotframework/issues/4455","id":1365092943,"node_id":"I_kwDOAUSaQ85RXapP","number":4455,"title":"Standard libraries don't support `pathlib.Path` objects","user":{"login":"aaltat","id":2665023,"node_id":"MDQ6VXNlcjI2NjUwMjM=","avatar_url":"https://avatars.githubusercontent.com/u/2665023?v=4","gravatar_id":"","url":"https://api.github.com/users/aaltat","html_url":"https://github.com/aaltat","followers_url":"https://api.github.com/users/aaltat/followers","following_url":"https://api.github.com/users/aaltat/following{/other_user}","gists_url":"https://api.github.com/users/aaltat/gists{/gist_id}","starred_url":"https://api.github.com/users/aaltat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aaltat/subscriptions","organizations_url":"https://api.github.com/users/aaltat/orgs","repos_url":"https://api.github.com/users/aaltat/repos","events_url":"https://api.github.com/users/aaltat/events{/privacy}","received_events_url":"https://api.github.com/users/aaltat/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":230194541,"node_id":"MDU6TGFiZWwyMzAxOTQ1NDE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%202","name":"beta 2","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":5,"created_at":"2022-09-07T19:26:05Z","updated_at":"2022-09-21T18:12:37Z","closed_at":"2022-09-16T19:15:12Z","author_association":"MEMBER","active_lock_reason":null,"body":"OperatingSystem library should support also Python Path objects. Currently OperatingSystem library keyword which uses path or file path as argument, expect the argument to be as a string. Would it be possible to enhance library keyword to support also Python [Path](https://docs.python.org/3/library/pathlib.html) as arguments. \r\n\r\nThis could be useful when library keywords returns a path object and that object is example used in [Get File](https://robotframework.org/robotframework/latest/libraries/OperatingSystem.html#Get%20File). Currently users are required to do: \r\n```robot framework\r\n${path} Library Keyword Return Path Object\r\n${path} Convert To String ${path}\r\n${data} Get File ${path}\r\n```\r\nBut it could be handy to just do\r\n```robot framework\r\n${path} Library Keyword Return Path Object\r\n${data} Get File ${path}\r\n```\r\n\r\n\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4455/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4455/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4454","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4454/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4454/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4454/events","html_url":"https://github.com/robotframework/robotframework/issues/4454","id":1364365450,"node_id":"I_kwDOAUSaQ85RUpCK","number":4454,"title":"Automatically select \"best\" match if there is conflict with keywords using embedded arguments","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":230194541,"node_id":"MDU6TGFiZWwyMzAxOTQ1NDE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%202","name":"beta 2","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":23,"created_at":"2022-09-07T09:25:45Z","updated_at":"2023-06-07T12:25:24Z","closed_at":"2022-09-21T12:26:05Z","author_association":"MEMBER","active_lock_reason":null,"body":"Currently the following test (adapted from an example in a [comment to #4069](https://github.com/robotframework/robotframework/issues/4069#issuecomment-1237038936)) fails:\r\n\r\n```robotframework\r\n*** Test Cases ***\r\nExample\r\n Execute \"x\" on device \"y\"\r\n\r\n*** Keywords ***\r\nExecute \"${command}\"\r\n Log Executing ${command}.\r\n\r\nExecute \"${command}\" on device \"${device}\"\r\n Log Executing ${command} on ${device}.\r\n```\r\n\r\nThe reason for the failure is that `Execute \"x\" on device \"y\"` matches both of the keyword implementations. A solution to this problem, recommended in the [User Guide](http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#using-custom-regular-expressions), has been using custom patterns that limit what keywords match. For example, changing the first keyword to `Execute \"${command:[^\"]+}\"` would mitigate the issue.\r\n\r\nIssue #4069 proposes making custom patterns more strict so that they would be validated also when the argument is given as a variable. As the comment referenced above explains, this unfortunately causes problems if patterns have been used for resolving conflicts as explained above.\r\n\r\nA solution to the problem caused by conflicts, that would also allow us making custom pattern validation more strict, would be Robot somehow being able to detect what is the \"best\" match. For a human it is pretty clear that if you use `Execute \"x\" on device \"y\"`, `Execute \"${command}\" on device \"${device}\"` matches better than `Execute \"${command}\"`, but the problem is how Robot can detect that. It's also a question that can it always detect it right or could there be false positives. I have one pretty simple approach in mind that I explain in a separate comment. Other approaches can also be proposed!","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4454/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4454/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4453","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4453/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4453/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4453/events","html_url":"https://github.com/robotframework/robotframework/issues/4453","id":1364120796,"node_id":"I_kwDOAUSaQ85RTtTc","number":4453,"title":"`Run Keywords`: Execution is not continued in teardown if keyword name contains non-existing variable","user":{"login":"peerasut","id":68002612,"node_id":"MDQ6VXNlcjY4MDAyNjEy","avatar_url":"https://avatars.githubusercontent.com/u/68002612?v=4","gravatar_id":"","url":"https://api.github.com/users/peerasut","html_url":"https://github.com/peerasut","followers_url":"https://api.github.com/users/peerasut/followers","following_url":"https://api.github.com/users/peerasut/following{/other_user}","gists_url":"https://api.github.com/users/peerasut/gists{/gist_id}","starred_url":"https://api.github.com/users/peerasut/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/peerasut/subscriptions","organizations_url":"https://api.github.com/users/peerasut/orgs","repos_url":"https://api.github.com/users/peerasut/repos","events_url":"https://api.github.com/users/peerasut/events{/privacy}","received_events_url":"https://api.github.com/users/peerasut/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":230194541,"node_id":"MDU6TGFiZWwyMzAxOTQ1NDE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%202","name":"beta 2","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":1,"created_at":"2022-09-07T05:44:27Z","updated_at":"2022-09-21T18:12:37Z","closed_at":"2022-09-10T08:57:08Z","author_association":"NONE","active_lock_reason":null,"body":"When I have 2 keywords: the first one is embedded keyword, the second one is either embedded or normal keyword. I use these 2 keywords within `[Teardown]` and with using `Run Keywords` keyword. If the first keyword fails because it could not find embedded argument, it fails and does not continue to execute the second keyword.\r\n\r\nFor example:\r\n```\r\n*** Test Cases ***\r\nTC teardown fail\r\n ${var} Set Variable 1\r\n [Teardown] Run Keywords Embbedded Kw ${b}\r\n ... AND Log ${var}\r\n\r\n*** Keywords ***\r\nEmbbedded Kw ${x}\r\n Log ${x}\r\n```\r\n\r\nThe result: `Embbedded Kw ${x}` fails because arg `${b}` is not found. But it does not continue to execute ` Log ${var}`.\r\n\"image\"\r\n\r\nAs stated in [documentation](https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#test-setup-and-teardown) that `Teardown` has ability to continue on failure. So, I think that in case of embedded keyword it should continue to execute event it could not find the embedded argument.\r\n\"image\"\r\n\r\nAs I have been in this community for a while, I could implement this one if it's not too complex.\r\n\r\nNote: I used Robot Framework 5.0.1","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4453/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4453/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4447","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4447/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4447/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4447/events","html_url":"https://github.com/robotframework/robotframework/issues/4447","id":1356543862,"node_id":"I_kwDOAUSaQ85Q2zd2","number":4447,"title":"Evaluating expressions that modify evaluation namespace (locals) fail","user":{"login":"Apteryks","id":8332263,"node_id":"MDQ6VXNlcjgzMzIyNjM=","avatar_url":"https://avatars.githubusercontent.com/u/8332263?v=4","gravatar_id":"","url":"https://api.github.com/users/Apteryks","html_url":"https://github.com/Apteryks","followers_url":"https://api.github.com/users/Apteryks/followers","following_url":"https://api.github.com/users/Apteryks/following{/other_user}","gists_url":"https://api.github.com/users/Apteryks/gists{/gist_id}","starred_url":"https://api.github.com/users/Apteryks/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Apteryks/subscriptions","organizations_url":"https://api.github.com/users/Apteryks/orgs","repos_url":"https://api.github.com/users/Apteryks/repos","events_url":"https://api.github.com/users/Apteryks/events{/privacy}","received_events_url":"https://api.github.com/users/Apteryks/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":219378453,"node_id":"MDU6TGFiZWwyMTkzNzg0NTM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%201","name":"beta 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":3,"created_at":"2022-08-31T00:44:43Z","updated_at":"2022-08-31T13:01:30Z","closed_at":"2022-08-31T12:59:17Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"Hi,\r\n\r\nI stumbled on the following failure `TypeError: 'EvaluationNamespace' object does not support item assignment` when attempting either of:\r\n\r\n```\r\nEvaluate pdb.Pdb(stdout=sys.__stdout__).set_trace() modules=sys, pdb\r\n```\r\n\r\n```\r\nEvaluate breakpoint() \r\n```\r\n\r\nin a RobotFramework .robot file.\r\n\r\nThis was discussed here: https://robotframework.slack.com/archives/C07PJBN64/p1661906204160279?thread_ts=1661870574.100769&cid=C07PJBN64, and is apparently a regression; quoting Pekka's answer:\r\n\r\n> This is a bug and actually a regression. We changed EvaluationNamespace from MutableMapping to Mapping in RF 5.0 when removing Python 2 compatibility code. Evaluating list comprehensions required the namespace to be mutable with Python 2 but not anymore with Python 3. It didn't occur to us that there could be other cases where mutability would be needed.\r\n\r\n\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4447/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4447/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4441","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4441/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4441/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4441/events","html_url":"https://github.com/robotframework/robotframework/issues/4441","id":1344595990,"node_id":"I_kwDOAUSaQ85QJOgW","number":4441,"title":"Regression: Empty `--include/--exclude/--test/--suite` are not ignored","user":{"login":"zmoose","id":10065577,"node_id":"MDQ6VXNlcjEwMDY1NTc3","avatar_url":"https://avatars.githubusercontent.com/u/10065577?v=4","gravatar_id":"","url":"https://api.github.com/users/zmoose","html_url":"https://github.com/zmoose","followers_url":"https://api.github.com/users/zmoose/followers","following_url":"https://api.github.com/users/zmoose/following{/other_user}","gists_url":"https://api.github.com/users/zmoose/gists{/gist_id}","starred_url":"https://api.github.com/users/zmoose/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zmoose/subscriptions","organizations_url":"https://api.github.com/users/zmoose/orgs","repos_url":"https://api.github.com/users/zmoose/repos","events_url":"https://api.github.com/users/zmoose/events{/privacy}","received_events_url":"https://api.github.com/users/zmoose/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":230194541,"node_id":"MDU6TGFiZWwyMzAxOTQ1NDE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%202","name":"beta 2","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":1,"created_at":"2022-08-19T15:33:39Z","updated_at":"2022-09-21T18:12:36Z","closed_at":"2022-09-18T11:23:07Z","author_association":"NONE","active_lock_reason":null,"body":"I updated my python3 robotframework package from 5.0 to 5.0.1 and now the robot command fails when the \"--include=\" parameter is blank. Its always worked fine before. \r\n\r\n`robot -v OPENBMC_HOST:myhost --include= templates/test_openbmc_setup.robot\r\n[ ERROR ] Suite 'Test Openbmc Setup' contains no tests matching tag ''.\r\n\r\nTry --help for usage information.`","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4441/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4441/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4440","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4440/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4440/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4440/events","html_url":"https://github.com/robotframework/robotframework/issues/4440","id":1344528438,"node_id":"I_kwDOAUSaQ85QI-A2","number":4440,"title":"Allow using `None` as custom argument converter to enable strict type validation","user":{"login":"mikkuja","id":111570884,"node_id":"U_kgDOBqZvxA","avatar_url":"https://avatars.githubusercontent.com/u/111570884?v=4","gravatar_id":"","url":"https://api.github.com/users/mikkuja","html_url":"https://github.com/mikkuja","followers_url":"https://api.github.com/users/mikkuja/followers","following_url":"https://api.github.com/users/mikkuja/following{/other_user}","gists_url":"https://api.github.com/users/mikkuja/gists{/gist_id}","starred_url":"https://api.github.com/users/mikkuja/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mikkuja/subscriptions","organizations_url":"https://api.github.com/users/mikkuja/orgs","repos_url":"https://api.github.com/users/mikkuja/repos","events_url":"https://api.github.com/users/mikkuja/events{/privacy}","received_events_url":"https://api.github.com/users/mikkuja/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":219378453,"node_id":"MDU6TGFiZWwyMTkzNzg0NTM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%201","name":"beta 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":3,"created_at":"2022-08-19T14:34:25Z","updated_at":"2022-09-02T11:37:03Z","closed_at":"2022-08-23T08:14:28Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"I would like to use python type hints to validate that keywords arguments are of correct type.\r\n\r\nRelated to #3690\r\n\r\n## Background\r\nWhen using type hints on library keywords, Robot Framework already ensures that most of the arguments are of defined type. For example:\r\n\r\n```python\r\ndef my_keyword(time: timedelta) -> float:\r\n return time.total_seconds()\r\n```\r\n\r\nwill fail cleanly during runtime if user tries to pass something incompatible like a list:\r\n\r\n```\r\nValueError: Argument 'time' got value '[1]' (list) that cannot be converted to timedelta.\r\n```\r\ninstead of\r\n```\r\nAttributeError: 'list' object has no attribute 'total_seconds'\r\n```\r\n\r\nHowever, this validation only exists for [supported types](https://robotframework.org/robotframework/5.0/RobotFrameworkUserGuide.html#supported-conversions) and types that has user defined [custom converters](https://robotframework.org/robotframework/5.0/RobotFrameworkUserGuide.html#custom-argument-converters).\r\n\r\n## Proposal\r\n\r\nAs discussed in issue #3690 backwards compatibility limits us for enabling type guarding on default. One option would be adding a library level toggle but having too many options in `@library` is not desirable either.\r\n\r\nOther option would be adding a special [custom converter](https://robotframework.org/robotframework/5.0/RobotFrameworkUserGuide.html#custom-argument-converters) that only validates that argument [is instance](https://docs.python.org/3/library/functions.html#isinstance) of the type. For example like this:\r\n\r\n```python\r\nROBOT_LIBRARY_CONVERTERS = {\r\n CustomType1: None,\r\n CustomType2: None\r\n}\r\n```\r\n\r\nwhere `None` would be a shortcut for this pattern:\r\n\r\n```python\r\ndef _typechecked(_):\r\n raise ValueError()\r\n\r\nROBOT_LIBRARY_CONVERTERS = {\r\n CustomType1: _typechecked,\r\n CustomType2: _typechecked\r\n}\r\n```\r\n\r\nFor more implementation details see this [comment](https://github.com/robotframework/robotframework/issues/3690#issuecomment-1220547740).","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4440/reactions","total_count":3,"+1":3,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4440/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4438","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4438/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4438/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4438/events","html_url":"https://github.com/robotframework/robotframework/issues/4438","id":1341473874,"node_id":"I_kwDOAUSaQ85P9URS","number":4438,"title":"`Get Time` returns current time if it is given input time that matches epoch","user":{"login":"spu06th","id":19752636,"node_id":"MDQ6VXNlcjE5NzUyNjM2","avatar_url":"https://avatars.githubusercontent.com/u/19752636?v=4","gravatar_id":"","url":"https://api.github.com/users/spu06th","html_url":"https://github.com/spu06th","followers_url":"https://api.github.com/users/spu06th/followers","following_url":"https://api.github.com/users/spu06th/following{/other_user}","gists_url":"https://api.github.com/users/spu06th/gists{/gist_id}","starred_url":"https://api.github.com/users/spu06th/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spu06th/subscriptions","organizations_url":"https://api.github.com/users/spu06th/orgs","repos_url":"https://api.github.com/users/spu06th/repos","events_url":"https://api.github.com/users/spu06th/events{/privacy}","received_events_url":"https://api.github.com/users/spu06th/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":230194541,"node_id":"MDU6TGFiZWwyMzAxOTQ1NDE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%202","name":"beta 2","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":6,"created_at":"2022-08-17T09:38:19Z","updated_at":"2022-09-24T17:17:17Z","closed_at":"2022-09-21T18:10:36Z","author_association":"NONE","active_lock_reason":null,"body":"To reproduce in master:\r\n```\r\n*** Test Cases ***\r\nGet Time at epoch\r\n ${get_time_val}= Get Time format=epoch time_=1970-01-01 00:00:00\r\n Should Be Equal As Strings ${get_time_val} 0 Time strings are not equal\r\n```\r\nRunning the above test results in:\r\n```\r\nFAIL: Get Time.Get Time at epoch\r\nStatus of 'Get Time at epoch' should have been PASS but it was FAIL.\r\n\r\nError message:\r\nTime strings are not equal: 1660728200 != 0\r\n```\r\n\r\nIt looks like in line 3327 of [builtin.py](https://github.com/robotframework/robotframework/blob/edcf6e79c63da2edf6bcc01ec986aa70b1868854/src/robot/libraries/BuiltIn.py#L3327) that `parse_time` returns 0 (expected I assume), and that when `0` is provided as `time_` argument to `get_time` ([robottime.py line 200](https://github.com/robotframework/robotframework/blob/edcf6e79c63da2edf6bcc01ec986aa70b1868854/src/robot/utils/robottime.py#L217)), the following line returns `time.time()`:\r\n```time_ = int(time_ or time.time())```","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4438/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4438/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4433","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4433/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4433/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4433/events","html_url":"https://github.com/robotframework/robotframework/issues/4433","id":1340501451,"node_id":"I_kwDOAUSaQ85P5m3L","number":4433,"title":"Convert and validate collection contents when using generics in type hints","user":{"login":"JFoederer","id":32476108,"node_id":"MDQ6VXNlcjMyNDc2MTA4","avatar_url":"https://avatars.githubusercontent.com/u/32476108?v=4","gravatar_id":"","url":"https://api.github.com/users/JFoederer","html_url":"https://github.com/JFoederer","followers_url":"https://api.github.com/users/JFoederer/followers","following_url":"https://api.github.com/users/JFoederer/following{/other_user}","gists_url":"https://api.github.com/users/JFoederer/gists{/gist_id}","starred_url":"https://api.github.com/users/JFoederer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JFoederer/subscriptions","organizations_url":"https://api.github.com/users/JFoederer/orgs","repos_url":"https://api.github.com/users/JFoederer/repos","events_url":"https://api.github.com/users/JFoederer/events{/privacy}","received_events_url":"https://api.github.com/users/JFoederer/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""},{"id":911065884,"node_id":"MDU6TGFiZWw5MTEwNjU4ODQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/acknowledge","name":"acknowledge","color":"bc82e0","default":false,"description":"To be acknowledged in release notes"}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":11,"created_at":"2022-08-16T15:08:22Z","updated_at":"2023-03-28T10:05:05Z","closed_at":"2022-09-29T08:07:49Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"The [supported conversions](https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#toc-entry-525) section of the documentation states:\r\n\r\n> Also types in in the typing module that map to the supported concrete types or ABCs (e.g. List) are supported. With generics also the subscription syntax (e.g. List[int]) works, **but no validation is done for container contents**.\r\n\r\nIt seems like a good enhancement to include these conversions as well, but the current code actually also contains a defect in this area. The `converter_for` method of `TypeConverter` strips the `__origin__` information for all types but `Union`. As a result it is not possible to write any custom converters for generic types. Asuming you would typically need the nested types to do the proper conversions.\r\n\r\n![image](https://user-images.githubusercontent.com/32476108/184913083-e18d2303-de46-4f99-b5d2-42c119ec27b7.png)\r\n\r\nA pull request will follow to clarify the issue and demonstrate the suggested enhancement.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4433/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4433/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4431","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4431/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4431/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4431/events","html_url":"https://github.com/robotframework/robotframework/issues/4431","id":1338881097,"node_id":"I_kwDOAUSaQ85PzbRJ","number":4431,"title":"Deprecate using singular section headers","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":121827221,"node_id":"MDU6TGFiZWwxMjE4MjcyMjE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/deprecation","name":"deprecation","color":"fef2c0","default":false,"description":""},{"id":219378453,"node_id":"MDU6TGFiZWwyMTkzNzg0NTM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%201","name":"beta 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":0,"created_at":"2022-08-15T11:45:29Z","updated_at":"2022-09-02T11:37:02Z","closed_at":"2022-08-15T12:15:50Z","author_association":"MEMBER","active_lock_reason":null,"body":"We currently support both plural and singular forms with sections headers so that both\r\n```robotframework\r\n*** Test Cases ***\r\nExample\r\n Log Message\r\n```\r\nand\r\n```robotframework\r\n*** Test Case ***\r\nExample\r\n Log Message\r\n```\r\nare valid.\r\n\r\nThe plural form is used a lot more widely. The main reason the singular form has ever been supported than in the early days Robot's data was in HTML tables and tables typically had headers like in this example:\r\n\r\n| Test Case | Keyword | Argument | Argument |\r\n| -- | ------- | ------- | ------- |\r\n| Example | Log | Message | |\r\n\r\nNowadays there are no concrete benefits in supporting both header formats. There are, however, some drawbacks:\r\n- Supporting multiple formats like this makes the overall syntax a bit more complicated to learn and for external tools to support.\r\n- It makes translation effort (#4390) a bit bigger.\r\n- As pointed out in [this comment](https://github.com/robotframework/robotframework/issues/4390#issuecomment-1213425595) to #4390, some languages support also a [dual form](https://en.wikipedia.org/wiki/Dual_(grammatical_number)) that we should support if we support both singular and plural forms.\r\n\r\nAdding support for the dual form wouldn't be a big task, but it would make the overall syntax even more complicated. A much simpler solution is supporting only the plural form. We can consider the section header like `Test Cases` to indicate that \"below this header we have tests\" and it works fine regardless how many tests there actually are. We have thus made a decision to:\r\n\r\n- support only the plural form with translations (covered by #4390), and\r\n- remove the support for singular form with English.\r\n\r\nWe obviously cannot just remove the support of singular headers in RF 5.1 because the change would be backwards incompatible. These are the steps we are planning to take instead:\r\n\r\n1. Document that singular headers are deprecated in RF 5.1 release notes and in the User Guide. No visible deprecation warning yet. This is covered by this issue.\r\n2. Start emitting deprecation warnings. This can earliest be done in RF 6.0, but we don't have too big hurry and waiting for 7.0 might be better. This is covered by #4432.\r\n3. Actually remove the support for singular headers. This can earliest be the next major release after the one where they are visibly deprecated.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4431/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4431/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4429","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4429/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4429/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4429/events","html_url":"https://github.com/robotframework/robotframework/issues/4429","id":1336868939,"node_id":"I_kwDOAUSaQ85PrwBL","number":4429,"title":"Allow passing flags to regexp related keywords using explicit `flags` argument","user":{"login":"oboehmer","id":22439451,"node_id":"MDQ6VXNlcjIyNDM5NDUx","avatar_url":"https://avatars.githubusercontent.com/u/22439451?v=4","gravatar_id":"","url":"https://api.github.com/users/oboehmer","html_url":"https://github.com/oboehmer","followers_url":"https://api.github.com/users/oboehmer/followers","following_url":"https://api.github.com/users/oboehmer/following{/other_user}","gists_url":"https://api.github.com/users/oboehmer/gists{/gist_id}","starred_url":"https://api.github.com/users/oboehmer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oboehmer/subscriptions","organizations_url":"https://api.github.com/users/oboehmer/orgs","repos_url":"https://api.github.com/users/oboehmer/repos","events_url":"https://api.github.com/users/oboehmer/events{/privacy}","received_events_url":"https://api.github.com/users/oboehmer/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":219378453,"node_id":"MDU6TGFiZWwyMTkzNzg0NTM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%201","name":"beta 1","color":"ffffff","default":false,"description":""},{"id":911065884,"node_id":"MDU6TGFiZWw5MTEwNjU4ODQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/acknowledge","name":"acknowledge","color":"bc82e0","default":false,"description":"To be acknowledged in release notes"}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":1,"created_at":"2022-08-12T07:44:10Z","updated_at":"2022-09-02T11:37:02Z","closed_at":"2022-08-16T20:45:40Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"The use of regex flags as part of the expression (i.e. `(?i)fooBAR` to do a case-insensitive lookup) is an advanced regex feature not obvious to all users. It would be convenient to also pass optional arguments to `Get Regexp Matches` and other regexp keywords, i.e.\r\n\r\n```\r\n${result}= Get Regexp Matches FOObar foo flags=I\r\n${result}= Get Regexp Matches FOO\\n123\\nbar foo.*bar flags=DOTALL|I\r\n```","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4429/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4429/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4418","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4418/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4418/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4418/events","html_url":"https://github.com/robotframework/robotframework/issues/4418","id":1316679759,"node_id":"I_kwDOAUSaQ85OevBP","number":4418,"title":"Dictionaries insider lists in YAML variable files not converted to DotDict objects","user":{"login":"jiangliangnihao2022","id":101252567,"node_id":"U_kgDOBgj91w","avatar_url":"https://avatars.githubusercontent.com/u/101252567?v=4","gravatar_id":"","url":"https://api.github.com/users/jiangliangnihao2022","html_url":"https://github.com/jiangliangnihao2022","followers_url":"https://api.github.com/users/jiangliangnihao2022/followers","following_url":"https://api.github.com/users/jiangliangnihao2022/following{/other_user}","gists_url":"https://api.github.com/users/jiangliangnihao2022/gists{/gist_id}","starred_url":"https://api.github.com/users/jiangliangnihao2022/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jiangliangnihao2022/subscriptions","organizations_url":"https://api.github.com/users/jiangliangnihao2022/orgs","repos_url":"https://api.github.com/users/jiangliangnihao2022/repos","events_url":"https://api.github.com/users/jiangliangnihao2022/events{/privacy}","received_events_url":"https://api.github.com/users/jiangliangnihao2022/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":219378453,"node_id":"MDU6TGFiZWwyMTkzNzg0NTM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%201","name":"beta 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v6.0","description":"New main release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519). There are also various other nice enhancements, for example, to argument conversion and embedded arguments.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":70,"state":"closed","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-10-19T10:39:05Z","due_on":"2022-10-06T07:00:00Z","closed_at":"2022-10-19T10:39:05Z"},"comments":4,"created_at":"2022-07-25T11:21:24Z","updated_at":"2022-08-10T11:05:03Z","closed_at":"2022-08-09T15:55:10Z","author_association":"NONE","active_lock_reason":null,"body":"Yaml file: \r\n```yaml\r\nx:\r\n a: a0\r\n b: b0\r\ny:\r\n - a: a1\r\n b: b1\r\n - a: a2\r\n b: b2\r\n```\r\n\r\nRobot file:\r\n```robotframework\r\n*** Setting ***\r\nVariables ./data.yaml\r\n\r\n*** Test Cases ***\r\nImport Variables By Yaml Test\r\n ${type_x}= Evaluate type($x)\r\n Log To Console \\nx type is ${type_x}\r\n\r\n ${y_0}= Set Variable ${y}[0]\r\n ${type_y_0}= Evaluate type($y_0)\r\n Log To Console y[0] type is ${type_y_0}\\n\r\n```\r\nPrint log: .\r\n**x type is \r\n...y[0] type is ****\r\n\r\n\r\n I think y[0] also should be DotDict. would you fix this issue, because Variable y[0] can not use more feature like .(dot)\r\n\r\n===advice===\r\nupdate YamlImporter._set function in src/robot/variables/filesetter.py\r\nbefore:\r\n```python\r\n def _dot_dict(self, value):\r\n if is_dict_like(value):\r\n value = DotDict((n, self._dot_dict(v)) for n, v in value.items())\r\n return value\r\n```\r\nafter:\r\n```python\r\n def _dot_dict(self, value):\r\n if is_dict_like(value):\r\n value = DotDict((n, self._dot_dict(v)) for n, v in value.items())\r\n if isinstance(value, list):\r\n value = [ self._dot_dict(v) for v in value ]\r\n return value\r\n```","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4418/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4418/timeline","performed_via_github_app":null,"state_reason":"completed","score":1}]}}] \ No newline at end of file +[{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v6.0","description":"Next major release with still open scope and timeline.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":8,"closed_issues":0,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2022-07-11T16:39:30Z","due_on":null,"closed_at":null,"issues":{"total_count":8,"incomplete_results":false,"items":[{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4395","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4395/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4395/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4395/events","html_url":"https://github.com/robotframework/robotframework/issues/4395","id":1300958594,"node_id":"I_kwDOAUSaQ85Niw2C","number":4395,"title":"Give local keywords in resource files precedence over keywords in test case files","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v6.0","description":"Next major release with still open scope and timeline.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":8,"closed_issues":0,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2022-07-11T16:39:30Z","due_on":null,"closed_at":null},"comments":0,"created_at":"2022-07-11T16:39:30Z","updated_at":"2022-07-11T16:43:05Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Currently if you have a test case file like\r\n\r\n```robotframework\r\n*** Settings ***\r\nResource example.resource\r\n\r\n*** Test Cases ***\r\nExample\r\n Keyword 1\r\n\r\n*** Keywords ***\r\nKeyword 2\r\n Log Keyword in test case file\r\n```\r\n\r\nand the imported resource file contains\r\n\r\n```robotframework\r\n*** Keywords ***\r\nKeyword 1\r\n Keyword 2\r\n \r\nKeyword 2\r\n Log Keyword in resource file\r\n```\r\n\r\nthe `Keyword 2` keyword that ends up being called by `Keyword 1` is from the test case file. This is rather strange and it would be more logical if the keyword from the same resource file as `Keyword 1` would be used.\r\n\r\nThis behavior was deprecated in RF 5.1 when local keywords were given precedence over imported keywords with same name (#4366). It ought to be safe to finally change the behavior in RF 6.0.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4395/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4395/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4294","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4294/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4294/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4294/events","html_url":"https://github.com/robotframework/robotframework/issues/4294","id":1189768479,"node_id":"I_kwDOAUSaQ85G6m0f","number":4294,"title":"Drop Python 3.6 support","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v6.0","description":"Next major release with still open scope and timeline.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":8,"closed_issues":0,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2022-07-11T16:39:30Z","due_on":null,"closed_at":null},"comments":0,"created_at":"2022-04-01T13:04:34Z","updated_at":"2022-04-01T13:04:34Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Python 3.6 [reached end-of-life](https://endoflife.date/python) in December 2021. We don't yet have concrete estimation when RF 6.0 will be released, or even when the development starts, but my guesstimate is that it will happen earliest in early 2023. Supporting Python version that itself hasn't been supported for over a year doesn't make much sense for us at that point.\r\n\r\nAt the time of this writing, April 2022, about 15% of [Robot Framework downloads](https://pypistats.org/packages/robotframework) still use Python 3.6, but I expect that number to decline pretty fast in the future. It could be that some Linux distributions still support Python 3.6 and have it as the default Python version, but even with them installing a newer Python ought to be pretty easy.\r\n\r\nA concrete benefit of dropping Python 3.6 is that it allows us to use [datetime.fromisoformat](https://docs.python.org/3/library/datetime.html#datetime.datetime.fromisoformat) that would help with #4258. Other Python 3.7 features that would likely be useful are [dataclasses](https://docs.python.org/3/library/dataclasses.html) and [importlib.resources](https://docs.python.org/3/library/importlib.html#module-importlib.resources).","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4294/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4294/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4258","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4258/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4258/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4258/events","html_url":"https://github.com/robotframework/robotframework/issues/4258","id":1162514055,"node_id":"I_kwDOAUSaQ85FSo6H","number":4258,"title":"Performance enhacements to getting timestamps and calculating elaped times","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":121827221,"node_id":"MDU6TGFiZWwxMjE4MjcyMjE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/deprecation","name":"deprecation","color":"fef2c0","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v6.0","description":"Next major release with still open scope and timeline.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":8,"closed_issues":0,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2022-07-11T16:39:30Z","due_on":null,"closed_at":null},"comments":7,"created_at":"2022-03-08T10:59:11Z","updated_at":"2022-04-01T12:47:31Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We currently have our own `get_timestamp` function for getting the current timestamp and `get_elapsed_time` for calculating the difference between two timestamps as milliseconds.\r\n\r\n```python\r\n>>> t1 = get_timestamp()\r\n>>> t2 = get_timestamp()\r\n>>> print(t1)\r\n20220308 12:37:43.875\r\n>>> print(t2)\r\n20220308 12:37:49.022\r\n>>> get_elapsed_time(t1, t2)\r\n5147\r\n```\r\n\r\nWe should replace these custom functions with functionality provided by Python's standard [datetime](https://docs.python.org/3/library/datetime.html) module. In practice we could get the current time by using `datetime.now()` and could calculate the elapsed time by simply subtracting `datetime` objects:\r\n\r\n```python\r\n>>> d1 = datetime.now()\r\n>>> d2 = datetime.now()\r\n>>> print(d1)\r\n2022-03-08 12:43:56.109349\r\n>>> print(d2)\r\n2022-03-08 12:44:03.567573\r\n>>> delta = d2 - d1\r\n>>> round(delta.total_seconds() * 1000)\r\n7458\r\n```\r\n\r\nOne benefit of using the standard `datetime` module would be that we could remove lot of our custom code. A bigger benefit is performance measured here using [timeit](https://docs.python.org/3/library/timeit.html):\r\n```python\r\n>>> timeit(lambda: get_timestamp())\r\n1.0487582740024664\r\n>>> timeit(lambda: datetime.now())\r\n0.2848877740034368\r\n>>> timeit(lambda: get_elapsed_time(t1, t2))\r\n5.105318886999157\r\n>>> timeit(lambda: round((d2-d1).total_seconds() * 1000))\r\n0.24636966099205893\r\n```\r\nAs can seen from the examples, the difference in performance is pretty big when getting the timestamp and rather huge when calculating the elapsed time. These tests each run one million iterations, so the time for one iteration isn't huge and this doesn't matter much with smallish test/task runs. With bigger runs containing e.g. loops times start to add, though, because we call `get_timestamp` twice and `get_elapsed_time` once for each keyword, loop iteration, IF/ELSE branch, and so on. ","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4258/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4258/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4103","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4103/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4103/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4103/events","html_url":"https://github.com/robotframework/robotframework/issues/4103","id":1013745566,"node_id":"I_kwDOAUSaQ848bIee","number":4103,"title":"Process: Change the default `stdin` behavior from `subprocess.PIPE` to `None`","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v6.0","description":"Next major release with still open scope and timeline.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":8,"closed_issues":0,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2022-07-11T16:39:30Z","due_on":null,"closed_at":null},"comments":2,"created_at":"2021-10-01T20:43:17Z","updated_at":"2022-04-07T11:11:27Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We currently start processes using `stdin=subprocess.PIPE` by default. That typically works fine, but issue #4065 demonstrates it can cause problems with some processes. It would be better to use `stdin=None` by default. It would avoid problems like in #4065 and be the same as the default behavior of the underlying [subprocess.Popen](https://docs.python.org/3/library/subprocess.html#subprocess.Popen).\r\n\r\nThe problem with this change is that it can cause backwards compatibility problems. In most cases there's no difference, but in some case being able to write to the stdin of the started process can be handy. Our own acceptance tests use this functionality and it's possible/likely that also others are using it. We made stdin configurable in RF 4.1.2 (#4102) so if the pipe behavior is desired, `stdin=PIPE` can be used explicitly.\r\n\r\nI think we can change this already in RF 5.0 because it's unlikely many users are affected and `stdin=PIPE` can be used explicitly. Because `stdin=PIPE` only works with RF 4.1.2 and newer, we may want to wait until RF 5.1, though.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4103/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4103/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/3902","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/3902/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/3902/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/3902/events","html_url":"https://github.com/robotframework/robotframework/issues/3902","id":839110433,"node_id":"MDU6SXNzdWU4MzkxMTA0MzM=","number":3902,"title":"Support serializing executable test suite into JSON","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v6.0","description":"Next major release with still open scope and timeline.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":8,"closed_issues":0,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2022-07-11T16:39:30Z","due_on":null,"closed_at":null},"comments":20,"created_at":"2021-03-23T20:49:59Z","updated_at":"2022-07-29T10:42:25Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"It would be convenient to be able to serialize executable `TestSuite` objects into JSON that can be then also be used to recreate same suite later. Most important use cases are:\r\n\r\n- Easier to transfer tests between processes and machines. This would help, for example, https://github.com/MarketSquare/robotframework-cluster.\r\n- Possibility to save a suite, possible a nested suite, constructed from data on file system into a single file that is faster to parse.\r\n- Alternative data format for external tools generating tests.\r\n\r\nIn the subsequent comments I'll go through some design ideas I have related to this. Please use :+1: and :-1: to indicate do you like those ideas as well as this issue in general. Written comments obviously appreciated as well!","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/3902/reactions","total_count":4,"+1":4,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/3902/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/3423","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/3423/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/3423/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/3423/events","html_url":"https://github.com/robotframework/robotframework/issues/3423","id":541348081,"node_id":"MDU6SXNzdWU1NDEzNDgwODE=","number":3423,"title":"Possibility to use output.json in addition to output.xml","user":{"login":"teaglebuilt","id":18645015,"node_id":"MDQ6VXNlcjE4NjQ1MDE1","avatar_url":"https://avatars.githubusercontent.com/u/18645015?v=4","gravatar_id":"","url":"https://api.github.com/users/teaglebuilt","html_url":"https://github.com/teaglebuilt","followers_url":"https://api.github.com/users/teaglebuilt/followers","following_url":"https://api.github.com/users/teaglebuilt/following{/other_user}","gists_url":"https://api.github.com/users/teaglebuilt/gists{/gist_id}","starred_url":"https://api.github.com/users/teaglebuilt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/teaglebuilt/subscriptions","organizations_url":"https://api.github.com/users/teaglebuilt/orgs","repos_url":"https://api.github.com/users/teaglebuilt/repos","events_url":"https://api.github.com/users/teaglebuilt/events{/privacy}","received_events_url":"https://api.github.com/users/teaglebuilt/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v6.0","description":"Next major release with still open scope and timeline.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":8,"closed_issues":0,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2022-07-11T16:39:30Z","due_on":null,"closed_at":null},"comments":45,"created_at":"2019-12-21T17:04:23Z","updated_at":"2022-07-06T20:58:37Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"Problem:\r\n\r\nPrefer to use a NOSQL database to store test reports. NOSQL databases typically require json format because its a relational database.\r\n\r\nSolution:\r\n\r\nProvide robotframework with the ability to use json rather than xml in the output file. \r\n\r\nFor example:\r\n\r\n```\r\n # flag --output\r\n robot --output output.json ./tests\r\n```","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/3423/reactions","total_count":3,"+1":3,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/3423/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/3278","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/3278/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/3278/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/3278/events","html_url":"https://github.com/robotframework/robotframework/issues/3278","id":484420789,"node_id":"MDU6SXNzdWU0ODQ0MjA3ODk=","number":3278,"title":"Variable type conversion in test data","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v6.0","description":"Next major release with still open scope and timeline.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":8,"closed_issues":0,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2022-07-11T16:39:30Z","due_on":null,"closed_at":null},"comments":11,"created_at":"2019-08-23T09:13:40Z","updated_at":"2022-04-01T12:33:48Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"RF 3.1 added automatic argument conversion with library keywords using function annotations (#2890), default values (#2932), and some other means. That has worked very well, and it would be nice if something like that would work also with variables defined in test data. We probably could re-use the underlying argument conversion logic which ought to make it relatively easy to implement this. We also got a similar request related to variables passed from the command line #2946.\r\n\r\nAutomatically converting numbers like `42` and `3.14` to actual integers/floats would be handy, even when we already support them as variables like `${42}` and `${3.14}`. Being able to use datatime objects, bytes, and other types supported by the argument conversion that don't have direct variable alternatives would naturally be even more useful (but also less commonly needed). I would expect this to be most useful with lists and dictionaries and especially with nested list and dicts that cannot easily be constructed in Robot's data.\r\n\r\nMy proposed syntax for this functionality is supporting \"type postfix\" like `:int` in variable names like this:\r\n\r\n```robotframework\r\n*** Variables ***\r\n${COUNT:int} 42\r\n${GOOD IDEA:bool} Yes # Converted to Boolean True\r\n${ANIMALS:list} ['cat', 'dog', 'horse'] # Python syntax\r\n${NESTED:dict} {'a': 1, 'b': [{'x': 2}, {'x': 3}]} # Great with JSON\r\n```\r\n\r\nThis syntax is derived from Python's function annotation syntax and also the same syntax that was decided to be used with command line variables in #2946. Variable names would naturally be created without the type prefix like `${COUNT}` and `${GOOD IDEA}`.\r\n\r\nIn addition to being available in the variable section, the new syntax should also be available also when creating variable otherwise, including in keyword arguments:\r\n\r\n```robotframework\r\n*** Keywords ***\r\nExample\r\n [Arguments] ${count:int}\r\n ${nested:dict} = Set Variable {'a': ${count}, 'b': [{'x': 2}, {'x': 3}]}\r\n Set Test Variable ${DATE:datetime} 2019-08-23 12:03:42\r\n```\r\n\r\nThere are some design decision still to be made like should `${X:dict}` create a `DotDict` instance that allows `${X.key}` syntax and how to handle possible backwards incompatibility issues. For most parts the design looks pretty good, though, and I think this would be a valuable addition to Robot Framework. If there's enough interest, we can consider adding this already to RF 3.2 scope. To show your interest, vote with :+1: or :-1: and/or add comments.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/3278/reactions","total_count":8,"+1":8,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/3278/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/3187","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/3187/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/3187/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/3187/events","html_url":"https://github.com/robotframework/robotframework/issues/3187","id":444834531,"node_id":"MDU6SXNzdWU0NDQ4MzQ1MzE=","number":3187,"title":"Inline keyword call syntax","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/64","html_url":"https://github.com/robotframework/robotframework/milestone/64","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/64/labels","id":7828494,"node_id":"MI_kwDOAUSaQ84Ad3QO","number":64,"title":"v6.0","description":"Next major release with still open scope and timeline.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":8,"closed_issues":0,"state":"open","created_at":"2022-04-01T12:32:38Z","updated_at":"2022-07-11T16:39:30Z","due_on":null,"closed_at":null},"comments":44,"created_at":"2019-05-16T08:58:20Z","updated_at":"2022-07-29T13:51:52Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Having inline keyword call syntax would be nice. It would allow using keywords in places where currently you'd normally just have plain strings (or variables). Example usages are listed below and possible syntax alternatives discussed in separate comments.\r\n\r\n1. Arguments to other keywords. At the moment you need to this in two steps:\r\n\r\n ```\r\n ${result} = Keyword argument\r\n Another Keyword ${result}\r\n ```\r\n\r\n In Python and other \"real\" programming languages you use something like `another_keyword(keyword('argument'))`, but in Robot's syntax\r\n\r\n ```\r\n Another Keyword Keyword argument\r\n ```\r\n is parsed as `Another Keyword` getting two arguments. This cannot be changed so new syntax is needed.\r\n\r\n2. Condition to the forthcoming `IF/ELSE` syntax (#3074). Currently (well, in the future once IF/ELSE is supported), you need to use:\r\n ```\r\n ${status} = Keyword\r\n IF ${status}\r\n Another Keyword\r\n END\r\n ```\r\n and\r\n ```\r\n IF Keyword\r\n Another Keyword\r\n END\r\n ```\r\n would be parsed as `Keyword` being the expression to evaluate.\r\n\r\n3. Similarly existing FOR loops would benefit from this.\r\n\r\n4. Inline keyword call syntax would also allow adding support to create variables in the `Variables` section based on keyword return values. Currently that's not possible at all, and creating suite level variables dynamically requires using Suite Setup. Being able to do something like this is a pretty common request:\r\n\r\n ```\r\n *** Variables ***\r\n ${EXAMPLE} = Keyword argument\r\n ```\r\n\r\nThe hardest thing related to this issue is coming up with a good syntax. I've been thinking about this for some time and have some ideas but no clear candidate I like best. I'll explain these ideas in separate comments below. :+1: and :-1: reactions, comments and other syntax ideas are all highly appreciated!","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/3187/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/3187/timeline","performed_via_github_app":null,"state_reason":null,"score":1}]}},{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v5.2","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":0,"state":"open","created_at":"2022-06-20T15:09:49Z","updated_at":"2022-07-01T15:34:22Z","due_on":null,"closed_at":null,"issues":{"total_count":11,"incomplete_results":false,"items":[{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4385","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4385/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4385/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4385/events","html_url":"https://github.com/robotframework/robotframework/issues/4385","id":1291556362,"node_id":"I_kwDOAUSaQ85M-5YK","number":4385,"title":"Change the parsing model object produced by `Test Tags` (and `Force Tags`) to `TestTags`","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v5.2","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":0,"state":"open","created_at":"2022-06-20T15:09:49Z","updated_at":"2022-07-01T15:34:22Z","due_on":null,"closed_at":null},"comments":0,"created_at":"2022-07-01T15:34:21Z","updated_at":"2022-07-01T15:34:22Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"We are gong to rename `Force Tags` to `Test Tags` (#4365) and as the first step adding `Test Tags` as an alias for `Force Tags` in RF 5.1 (#4368). There were no other code changes and currently `Test Tags` (and `Force Tags`) is parsed into a `ForceTags` object. This should be changed to `TestTags` in RF 5.2.\r\n\r\nThe change doesn't affect test execution at all, but tools working with the parsing model are affected. Luckily it's pretty easy to handle both objects by having both `visit_ForceTags` and `visit_TestTags` in a model visitor.\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4385/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4385/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4375","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4375/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4375/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4375/events","html_url":"https://github.com/robotframework/robotframework/issues/4375","id":1277079240,"node_id":"I_kwDOAUSaQ85MHq7I","number":4375,"title":"Change token type of `AS` (or `WITH NAME`) used with library imports to `Token.AS`","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v5.2","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":0,"state":"open","created_at":"2022-06-20T15:09:49Z","updated_at":"2022-07-01T15:34:22Z","due_on":null,"closed_at":null},"comments":0,"created_at":"2022-06-20T15:16:19Z","updated_at":"2022-06-20T15:16:19Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Issue #4369 proposes renaming `WITH NAME` in library imports to `AS`. This first step is adding `AS` as an alias for `WITH NAME` in data (#4371, RF 5.1) and this issue covers the second step, changing the type of the underlying token used by the parser. The token type has been `Token.WITH_NAME` earlier but it will now be changed to `Token.AS` that's already used with `AS` when used with `EXCEPT`.\r\n\r\nThis change doesn't affect normal Robot Framework usage at all, but tools that operate with the parsing model and tokens produced by it need to be updated.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4375/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4375/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4374","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4374/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4374/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4374/events","html_url":"https://github.com/robotframework/robotframework/issues/4374","id":1276899785,"node_id":"I_kwDOAUSaQ85MG_HJ","number":4374,"title":"Support removing tags set globally by using `-tag` syntax with `[Tags]` setting","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v5.2","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":0,"state":"open","created_at":"2022-06-20T15:09:49Z","updated_at":"2022-07-01T15:34:22Z","due_on":null,"closed_at":null},"comments":2,"created_at":"2022-06-20T13:05:50Z","updated_at":"2022-06-22T23:01:13Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Currently it is possible to use the `Default Tags` setting to specify tags that tests have by default but that can be overridden by individual tests by using the `[Tags]` setting. The whole system to set tags for tests with `Force Tags`, `Default Tags` and `[Tags]` is somewhat complicated and issue #4365 proposes simplifying it so that `Force Tags` is renamed to `Test Tags` and `Default Tags` is removed altogether. I believe simplifying the syntax is a good idea, but I understand there are still sometimes cases where specifying tags that most tests have but some don't would be convenient.\r\n\r\nMy proposal is that we'd make it possible to use `-tag` syntax with tests that want to opt out from tags set globally. Basically that would change current\r\n```robotframework\r\n*** Settings ***\r\nForce Tags all\r\nDefault Tags most\r\n\r\n*** Test Cases ***\r\nT1\r\n No Operation\r\nT2\r\n [Tags] one\r\n No Operation\r\nT3\r\n No Operation\r\n```\r\nto\r\n```robotframework\r\n*** Settings ***\r\nTest Tags all most\r\n\r\n*** Test Cases ***\r\nT1\r\n No Operation\r\nT2\r\n [Tags] one -most\r\n No Operation\r\nT3\r\n No Operation\r\n```\r\nI actually consider the above easier to understand the original with strange `Force Tags` and `Default Tags` settings.\r\n\r\nThe major benefit of this syntax would be that it would work also with the proposed `Keyword Tags` setting (#4373). Regardless do we remove `Default Tags` or not, I don't think it makes sense to add something like `Default Keyword Tags` in addition to `Keyword Tags`, but this would work just fine:\r\n```robotframework\r\n*** Settings ***\r\nKeywords Tags all most\r\n\r\n*** Keywords ***\r\nK1\r\n No Operation\r\nK2\r\n [Tags] one -most\r\n No Operation\r\nK3\r\n No Operation\r\n```","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4374/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4374/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4304","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4304/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4304/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4304/events","html_url":"https://github.com/robotframework/robotframework/issues/4304","id":1196078189,"node_id":"I_kwDOAUSaQ85HSrRt","number":4304,"title":"New technology for Libdoc HTML outputs","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v5.2","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":0,"state":"open","created_at":"2022-06-20T15:09:49Z","updated_at":"2022-07-01T15:34:22Z","due_on":null,"closed_at":null},"comments":3,"created_at":"2022-04-07T13:47:55Z","updated_at":"2022-06-30T12:47:32Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Libdoc HTML outputs, similarly as log.html and report.html, use [jQuery Templates](https://github.com/BorisMoore/jquery-tmpl) for generating HTML content based on the date embedded to the outputs when they are created by Libdoc. In practice there's [libdoc.html](https://github.com/robotframework/robotframework/tree/master/src/robot/htmldata/libdoc) file that contains template code as well as JavaScript. It also uses external styles and some external JavaScript files used also by Rebot.\r\n\r\nThe explained setup has worked fine for us, but there's a problem that jQuery Templates have been unmaintained for years. We need to find a replacement for it and at the same time we should enhance our HTML/JavaScript setup in general. At least the following tasks should be done:\r\n\r\n- [ ] Find a replacement for jQuery Templates. We could use its successor [JsRender](https://www.jsviews.com/) or some totally new technology like [Svelte](https://svelte.dev).\r\n- [ ] Separate JavaScript code from HTML templates as much as possible.\r\n- [ ] Add tests for JavaScript model code. A precondition is deciding what test tool(s) to use.\r\n- [ ] Set up GitHub actions to run JavaScript tests.\r\n- [ ] Decide and document JavaScript coding conventions. Using an automated code formatter could be a good idea.\r\n\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4304/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4304/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4302","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4302/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4302/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4302/events","html_url":"https://github.com/robotframework/robotframework/issues/4302","id":1195887245,"node_id":"I_kwDOAUSaQ85HR8qN","number":4302,"title":"Remove `Reserved` library","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v5.2","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":0,"state":"open","created_at":"2022-06-20T15:09:49Z","updated_at":"2022-07-01T15:34:22Z","due_on":null,"closed_at":null},"comments":2,"created_at":"2022-04-07T11:07:31Z","updated_at":"2022-06-29T11:53:30Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"The Reserved library contains keywords `For`, `While`, `Break`, `Continue`, `End`, `If`, `Else`, `Elif`, `Else If`, and `Return`. Using them fails with a message telling that the keyword name is reserved and some keywords also instruct how to use the actual `FOR`, `IF`, etc. syntax.\r\n\r\nWe added the library ages ago to avoid problems if new syntax is added. Now all the syntax there (and more!) has been added so there's no need to reserve anything. When we added `IF` in RF 4.0, we also made a decision to require all this kind of syntax to be upper case. That makes it mostly unnecessary to reserve possible new syntax because even if we'd add something like `CASE`, there would be no problem using keyword `Case`.\r\n\r\nWhen this library is removed, using a keyword like `Continue` will continue to fail, but the error message changes from `'Continue' is a reserved keyword.` to `No keyword with name 'Continue' found.`. With keywords containing usage instructions, like `If` that currently fails like `'If' is a reserved keyword. It must be an upper case 'IF' when used as a marker.`, the new error isn't as informative as earlier. I would say we can nowadays expect users to know that this kind of syntax must be upper case so this isn't a big deal. If we were to report such errors to users, we should detect them already at parsing time anyway to make errors easily available for IDEs and other tools using Robot's parsing modules.\r\n\r\nA benefit of removing the Reserved library is that in some contexts the current custom error message is pretty confusing. For a concrete example, see #4297.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4302/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4302/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4252","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4252/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4252/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4252/events","html_url":"https://github.com/robotframework/robotframework/issues/4252","id":1160040268,"node_id":"I_kwDOAUSaQ85FJM9M","number":4252,"title":"Support nested keywords with library keywords","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v5.2","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":0,"state":"open","created_at":"2022-06-20T15:09:49Z","updated_at":"2022-07-01T15:34:22Z","due_on":null,"closed_at":null},"comments":2,"created_at":"2022-03-04T20:49:53Z","updated_at":"2022-06-20T15:19:06Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Library keywords can execute methods freely, but methods aren't shown in the log file as child keywords. For example,\r\n\r\n```python\r\ndef do_something():\r\n do_first_thing('example')\r\n do_second_thing()\r\n```\r\nwill in the log file be shown as a single keyword without any child keywords. It is possible to use `BuiltIn.run_keyword` to execute other keywords so that they are shown as child keywords and #4237 discusses better APIs for that usage.\r\n\r\nA problem with using `BuiltIn.run_keyword` is that keywords executed with it must be available as normal keywords either in the library running other keywords or in some other imported library. That's ok if keywords are usable on their own, but it is possible that child keywords cannot be used like that. This problem can be avoided by making it possible to run any callable as the [final proposal](https://github.com/robotframework/robotframework/issues/4237#issuecomment-1058077142) in #4237 suggests. There could, however, be even better solutions for the underlying need.\r\n\r\nA solution I have been thinking is is using a context manager that would create a keyword in log (and in output.xml). We probably could use our existing `robot.running.Keyword` for that purpose. The usage could be something like this:\r\n\r\n```python\r\ndef do_something():\r\n with Keyword('Do first thing', args=['example'], doc='Example'):\r\n do_first_thing()\r\n with Keyword('Do second thing'):\r\n print('No need to call a method, implementation can be directly inside the context manager!')\r\n```\r\n\r\nThese are the main benefits of this approach compared to `BuitlIn.run_keyword` would be:\r\n1. No need to expose child keywords as real keywords.\r\n2. No need to even make each child keyword a callable. Implementation could be directly inside the context manager.\r\n3. It would be possible to add documentation, tags, etc. to be shown in the log file.\r\n\r\nPoints 1. and 3. would be possible also with `execute_keyword` proposed in #4237. Executing other keywords has also other use cases than logging child keywords, so #4237 is likely needed anyway. It's not certain is 2. alone worth enough to implement this feature. Possibly using a context manager could result with cleaner code, though.\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4252/reactions","total_count":2,"+1":2,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4252/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4237","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4237/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4237/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4237/events","html_url":"https://github.com/robotframework/robotframework/issues/4237","id":1140704583,"node_id":"I_kwDOAUSaQ85D_cVH","number":4237,"title":"Better API for library keywords to execute other keywords","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v5.2","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":0,"state":"open","created_at":"2022-06-20T15:09:49Z","updated_at":"2022-07-01T15:34:22Z","due_on":null,"closed_at":null},"comments":9,"created_at":"2022-02-16T23:50:50Z","updated_at":"2022-06-20T15:19:06Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"It is a relatively common need for library keywords to be able to run other keywords. One good example is SeleniumLibrary, that makes it possible to register a keyword that will be executed if any of its own keywords fails. Sometimes, especially when doing task automation, it is also beneficial to log actions done by the keyword in the log file separately. For example,\r\n\r\n```python\r\ndef do_something():\r\n do_first_thing()\r\n do_second_thing()\r\n```\r\nwill in the log file be shown as a single keyword without any child keywords, but there are sometimes needs to show `do_first_thing` and `do_second_thing` as child keywords.\r\n\r\nNowadays keywords can execute other keywords by using `BuiltIn.run_keyword`. It works but has several problems:\r\n\r\n1. Arguments are resolved twice. This means replacing variables and handling syntax like `\\n`. For example, if we have a keyword like\r\n ```python\r\n def example(arg):\r\n BuiltIn().run_keyword('Log To Console', arg)\r\n ```\r\n and call it like\r\n ```\r\n Example c:\\\\temp\r\n ```\r\n the actually logged string has a tab character. The reason is that `\\\\t` is first resolved to string `\\t` which is then on the second round resolved to a tab.\r\n\r\n Double resolving can be avoided be registering the keyword to be a \"run keyword variant\", but that API isn't really public and it's also pretty bad in general. We have #2190 about enhancing it and making it public, but it would probably be better to avoid this double resolving altogether.\r\n\r\n2. Related to above, the keyword using `BuiltIn.run_keyword` cannot safely call it without escaping strings. For example, something like `BuiltIn.run_keyword('Log To Console', 'c:\\\\temp')` won't work correctly and the argument should be `c:\\\\\\\\temp` instead.\r\n\r\n3. `BuiltIn.run_keyword` only accepts positional arguments. For example, if we had a keyword implemented like\r\n ```pyhton\r\n def example(upper=False):\r\n ...\r\n ```\r\n we couldn't call it like `BuiltIn.run_keyword('Example', upper=True)` but instead needed to use `BuiltIn.run_keywod('Example', 'upper=True')`.\r\n\r\nThe above examples ought to make it clear that a better API is needed. I have some ideas how to API could look and will write separate comments about that a bit later.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4237/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4237/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4234","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4234/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4234/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4234/events","html_url":"https://github.com/robotframework/robotframework/issues/4234","id":1139037342,"node_id":"I_kwDOAUSaQ85D5FSe","number":4234,"title":"Supporting embedded arguments mixed with normal arguments","user":{"login":"JockeJarre","id":12571104,"node_id":"MDQ6VXNlcjEyNTcxMTA0","avatar_url":"https://avatars.githubusercontent.com/u/12571104?v=4","gravatar_id":"","url":"https://api.github.com/users/JockeJarre","html_url":"https://github.com/JockeJarre","followers_url":"https://api.github.com/users/JockeJarre/followers","following_url":"https://api.github.com/users/JockeJarre/following{/other_user}","gists_url":"https://api.github.com/users/JockeJarre/gists{/gist_id}","starred_url":"https://api.github.com/users/JockeJarre/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JockeJarre/subscriptions","organizations_url":"https://api.github.com/users/JockeJarre/orgs","repos_url":"https://api.github.com/users/JockeJarre/repos","events_url":"https://api.github.com/users/JockeJarre/events{/privacy}","received_events_url":"https://api.github.com/users/JockeJarre/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v5.2","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":0,"state":"open","created_at":"2022-06-20T15:09:49Z","updated_at":"2022-07-01T15:34:22Z","due_on":null,"closed_at":null},"comments":11,"created_at":"2022-02-15T18:05:52Z","updated_at":"2022-06-30T20:51:05Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"it could be useful to support embedded arguments mixed with normal arguments\r\n\r\n```robot\r\nNumber of ${animals} should be\r\n [Arguments] ${count}\r\n # ...\r\n```\r\nthat could be called like\r\n```robot\r\nNumber of horses should be 2\r\nNumber of dogs should be 3\r\n```\r\n\r\nOr if you want to use it for library aliases:\r\n\r\n```robot\r\n${alias}.Call keyword on different connections using the alias\r\n [Arguments] &{args}\r\n```\r\n \r\nCalled like this:\r\n\r\n```robot\r\naliasone.Call Keyword on different connections using the alias &{Parameters}\r\naliastwo.Call Keyword on different connections using the alias &{Parameters}\r\n```","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4234/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4234/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4210","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4210/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4210/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4210/events","html_url":"https://github.com/robotframework/robotframework/issues/4210","id":1118587633,"node_id":"I_kwDOAUSaQ85CrErx","number":4210,"title":"Enhance errror detection at parsing time","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v5.2","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":0,"state":"open","created_at":"2022-06-20T15:09:49Z","updated_at":"2022-07-01T15:34:22Z","due_on":null,"closed_at":null},"comments":1,"created_at":"2022-01-30T15:49:38Z","updated_at":"2022-06-30T19:02:23Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Robot's parser detects many errors already at the parsing time, but there are also many syntax errors that are only detected at the execution time. A problem with detecting errors only at the execution time is that they aren't reported to tools like editor plugins that use Robot's parser. We should thus move error detection to parser as much as possible. This includes at least these cases:\r\n\r\n- Empty test and keyword.\r\n- `END`, `ELSE`, `ELSE IF`, `EXCEPT` or `FINALLY` when there is no matching parent element like `IF` or `TRY`.\r\n- ~`RETURN` used in test.~ Fixed already in RF 5.0.\r\n- ~`BREAK/CONTINUE` outside loops.~ Fixed already in RF 5.0.\r\n- ~`RETURN/BREAK/CONTINUE` in `FINALLY`.~ Fixed already in RF 5.0.\r\n\r\nWe also have a similar problem that some of the error situations detected by the parser are not detected as early as they could be. For example, having `IF` with more than one condition is detected by the parser when the parsing model is validated, but the underlying tokens do not get `ERROR` type. This is a problem if only using tokens (i.e. when using `get_tokens`, not `get_model`) and also when using the model it would be more convenient if invalid tokens could be easily detected. This problem occurs at least in these cases:\r\n\r\n- `IF`, `ELSE IF` and `WHILE` with more than one condition.\r\n- `ELSE`, `END`, `BREAK`, `CONTINUE`, `TRY` and `FINALLY` with values.\r\n- `AS` with invalid variable or with more than one variable.\r\n\r\nBecause these latter errors are detected by the parser, only a bit late, I don't consider this limitation as bad as the problem with the earlier errors.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4210/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4210/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/3761","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/3761/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/3761/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/3761/events","html_url":"https://github.com/robotframework/robotframework/issues/3761","id":743242487,"node_id":"MDU6SXNzdWU3NDMyNDI0ODc=","number":3761,"title":"Native syntax to create local variables","user":{"login":"mkorpela","id":136885,"node_id":"MDQ6VXNlcjEzNjg4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/136885?v=4","gravatar_id":"","url":"https://api.github.com/users/mkorpela","html_url":"https://github.com/mkorpela","followers_url":"https://api.github.com/users/mkorpela/followers","following_url":"https://api.github.com/users/mkorpela/following{/other_user}","gists_url":"https://api.github.com/users/mkorpela/gists{/gist_id}","starred_url":"https://api.github.com/users/mkorpela/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mkorpela/subscriptions","organizations_url":"https://api.github.com/users/mkorpela/orgs","repos_url":"https://api.github.com/users/mkorpela/repos","events_url":"https://api.github.com/users/mkorpela/events{/privacy}","received_events_url":"https://api.github.com/users/mkorpela/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v5.2","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":0,"state":"open","created_at":"2022-06-20T15:09:49Z","updated_at":"2022-07-01T15:34:22Z","due_on":null,"closed_at":null},"comments":19,"created_at":"2020-11-15T12:03:28Z","updated_at":"2022-06-29T11:53:06Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Robot Framework row is parsed by the following rules:\r\n- First column is thought as a keyword definition.\r\n- Unless if first column is a variable then second column is thought as a keyword definition.\r\n- Unless if the second column is also a variable then apply second rule again.\r\n- All the rest columns are paramenters to that keyword and by default they are strings (that can be converted to types).\r\n\r\nThose rules result in an odd way of setting a simple value for a local variable:\r\n`${my_variable}= Set Variable MY_VALUE`\r\n\r\nI propose we introduce a shortcut for this to reduce unnecessary verbosity:\r\n`${my_variable}:= MY_VALUE`","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/3761/reactions","total_count":4,"+1":4,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/3761/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/2190","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/2190/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/2190/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/2190/events","html_url":"https://github.com/robotframework/robotframework/issues/2190","id":114558284,"node_id":"MDU6SXNzdWUxMTQ1NTgyODQ=","number":2190,"title":"Clean-up semi-public API to register \"run keyword variants\" and to disable variable resolving in arguments","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/65","html_url":"https://github.com/robotframework/robotframework/milestone/65","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/65/labels","id":8098814,"node_id":"MI_kwDOAUSaQ84Ae5P-","number":65,"title":"v5.2","description":"","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":0,"state":"open","created_at":"2022-06-20T15:09:49Z","updated_at":"2022-07-01T15:34:22Z","due_on":null,"closed_at":null},"comments":10,"created_at":"2015-11-02T09:32:51Z","updated_at":"2022-06-20T15:19:05Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"Robot has a mechanism to disable resolving variables in arguments using `robot.libraries.BuiltIn.register_run_keyword` method. This also makes the method so called \"run keyword variant\" which slightly changes the logic how the keyword is executed. This whole system is a mess that needs to be cleaned up. At least the following things need to be considered:\n1. Separate mechanism to disable resolving variables from arguments. Could possibly be part of `robot.api.deco.keyword`. Should then also have an API to resolve arguments if needed.\n2. Investigate could the whole \"run keyword variant\" system be removed from the public API or, preferably, altogether.\n3. If we cannot remove \"run keyword variant\" system, we need to deprecate/remove the functionality to register keywords by using function/method. That system doesn't work in Python 3 currently and trying to fix it is not worth the effort.\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/2190/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/2190/timeline","performed_via_github_app":null,"state_reason":null,"score":1}]}},{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null,"issues":{"total_count":44,"incomplete_results":false,"items":[{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4418","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4418/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4418/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4418/events","html_url":"https://github.com/robotframework/robotframework/issues/4418","id":1316679759,"node_id":"I_kwDOAUSaQ85OevBP","number":4418,"title":"Dictionaries insider lists in YAML variable files not converted to DotDict objects","user":{"login":"jiangliangnihao2022","id":101252567,"node_id":"U_kgDOBgj91w","avatar_url":"https://avatars.githubusercontent.com/u/101252567?v=4","gravatar_id":"","url":"https://api.github.com/users/jiangliangnihao2022","html_url":"https://github.com/jiangliangnihao2022","followers_url":"https://api.github.com/users/jiangliangnihao2022/followers","following_url":"https://api.github.com/users/jiangliangnihao2022/following{/other_user}","gists_url":"https://api.github.com/users/jiangliangnihao2022/gists{/gist_id}","starred_url":"https://api.github.com/users/jiangliangnihao2022/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jiangliangnihao2022/subscriptions","organizations_url":"https://api.github.com/users/jiangliangnihao2022/orgs","repos_url":"https://api.github.com/users/jiangliangnihao2022/repos","events_url":"https://api.github.com/users/jiangliangnihao2022/events{/privacy}","received_events_url":"https://api.github.com/users/jiangliangnihao2022/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":4,"created_at":"2022-07-25T11:21:24Z","updated_at":"2022-07-29T13:51:26Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"Yaml file: \r\n```yaml\r\nx:\r\n a: a0\r\n b: b0\r\ny:\r\n - a: a1\r\n b: b1\r\n - a: a2\r\n b: b2\r\n```\r\n\r\nRobot file:\r\n```robotframework\r\n*** Setting ***\r\nVariables ./data.yaml\r\n\r\n*** Test Cases ***\r\nImport Variables By Yaml Test\r\n ${type_x}= Evaluate type($x)\r\n Log To Console \\nx type is ${type_x}\r\n\r\n ${y_0}= Set Variable ${y}[0]\r\n ${type_y_0}= Evaluate type($y_0)\r\n Log To Console y[0] type is ${type_y_0}\\n\r\n```\r\nPrint log: .\r\n**x type is \r\n...y[0] type is ****\r\n\r\n\r\n I think y[0] also should be DotDict. would you fix this issue, because Variable y[0] can not use more feature like .(dot)\r\n\r\n===advice===\r\nupdate YamlImporter._set function in src/robot/variables/filesetter.py\r\nbefore:\r\n```python\r\n def _dot_dict(self, value):\r\n if is_dict_like(value):\r\n value = DotDict((n, self._dot_dict(v)) for n, v in value.items())\r\n return value\r\n```\r\nafter:\r\n```python\r\n def _dot_dict(self, value):\r\n if is_dict_like(value):\r\n value = DotDict((n, self._dot_dict(v)) for n, v in value.items())\r\n if isinstance(value, list):\r\n value = [ self._dot_dict(v) for v in value ]\r\n return value\r\n```","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4418/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4418/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4413","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4413/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4413/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4413/events","html_url":"https://github.com/robotframework/robotframework/issues/4413","id":1309391946,"node_id":"I_kwDOAUSaQ85OC7xK","number":4413,"title":"Dictionary related keywords in `Collections` are more script about accepted values","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":1,"created_at":"2022-07-19T11:40:02Z","updated_at":"2022-07-21T18:00:16Z","closed_at":"2022-07-19T11:41:24Z","author_association":"MEMBER","active_lock_reason":null,"body":"Dictionary related keywords in the `Collections` library earlier accepted anything that isn't a string or a number, but after refactoring in dbffeb0525f2026adca244eb5e7df26c44b2e66c they expect values to be actual dictionaries. This is validated using our `is_dict_like` that simply does `isinstance(obj, Mapping)`.\r\n\r\nObjects used with these keywords obviously should be dictionaries or dictionary-like, but it is possible to create dictionary-like objects that don't inherit `Mapping`. For example, our XML library tests were affected by this because [lxml.etree._Attrib](https://bugs.launchpad.net/lxml/+bug/1981760) wasn't a mapping. I added a workaround for that problem to our code (first in 255f0fa2e013cd86419520755f6651311e9370f4, then enhanced in 4e226582f53fd97b28a3979131e58ebd489caa8b) and the bug has been fixed also on the lxml side.\r\n\r\nI would say having a dictionary-like object that isn't a `Mapping` is always a bug, but as the lxml example demonstrates it is certainly possible that such code exists. It is also possible that not all projects are as fast to react as lxml was.\r\n\r\nBecause this change is backwards incompatible, it's a bit questionable is it a good idea in a non-major release or in general. The reason I think the change is fine is that we are equally strict that values are lists or list-like with list related keywords. It's also easy to register dictionary-objects as mappings like our workaround (and also the actual fix) for the lxml problem does. Anyway, if there are problems caused by this change we can consider reverting it or changing the code so that non-Mappings are still accepted but there's a deprecation warning.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4413/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4413/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4411","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4411/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4411/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4411/events","html_url":"https://github.com/robotframework/robotframework/issues/4411","id":1307857719,"node_id":"I_kwDOAUSaQ85N9FM3","number":4411,"title":"Section header translations are unnecessarily required to be in title case","user":{"login":"MoreFamed","id":82573620,"node_id":"MDQ6VXNlcjgyNTczNjIw","avatar_url":"https://avatars.githubusercontent.com/u/82573620?v=4","gravatar_id":"","url":"https://api.github.com/users/MoreFamed","html_url":"https://github.com/MoreFamed","followers_url":"https://api.github.com/users/MoreFamed/followers","following_url":"https://api.github.com/users/MoreFamed/following{/other_user}","gists_url":"https://api.github.com/users/MoreFamed/gists{/gist_id}","starred_url":"https://api.github.com/users/MoreFamed/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MoreFamed/subscriptions","organizations_url":"https://api.github.com/users/MoreFamed/orgs","repos_url":"https://api.github.com/users/MoreFamed/repos","events_url":"https://api.github.com/users/MoreFamed/events{/privacy}","received_events_url":"https://api.github.com/users/MoreFamed/received_events","type":"User","site_admin":false},"labels":[{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":110430429,"node_id":"MDU6TGFiZWwxMTA0MzA0Mjk=","url":"https://api.github.com/repos/robotframework/robotframework/labels/task","name":"task","color":"ededed","default":false,"description":"Generic task not listed in release notes"},{"id":178145936,"node_id":"MDU6TGFiZWwxNzgxNDU5MzY=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%202","name":"alpha 2","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":4,"created_at":"2022-07-18T12:07:05Z","updated_at":"2022-07-19T12:01:25Z","closed_at":"2022-07-19T10:24:20Z","author_association":"NONE","active_lock_reason":null,"body":"I am testing the Czech localization. It works just partially for me. I cannot use Czech variants of *** Keyword ***, *** Keywords ***, *** Test Case *** and *** Test Cases *** because of the error `Unrecognized section header '*** Testovací případy ***'. Valid sections: 'Settings', 'Variables',` etc. The other ones I tested (12 other items) seem to be OK when run with `robot --language CS`. I noticed that those problematic ones are those that should be written into asterisks and together with it they consist of more than one word. Document at https://robotframework.crowdin.com/translate/ seems to be good.\r\n\r\nRF 5.1 alpha 1","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4411/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4411/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4408","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4408/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4408/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4408/events","html_url":"https://github.com/robotframework/robotframework/issues/4408","id":1304939765,"node_id":"I_kwDOAUSaQ85Nx8z1","number":4408,"title":"Collection: `Dictionary Should Contain Item` incorrectly casts values to strings before comparison","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":0,"created_at":"2022-07-14T15:21:27Z","updated_at":"2022-07-14T15:32:07Z","closed_at":"2022-07-14T15:32:07Z","author_association":"MEMBER","active_lock_reason":null,"body":"Current `Dictionary Should Contain Item` converts both the expected and the actual value to string before comparison. For example, the following example passes:\r\n\r\n```robotframework\r\n*** Settings ***\r\nLibrary Collections\r\n\r\n*** Variables ***\r\n&{DICT} a=${1}\r\n\r\n*** Test Cases ***\r\nExample\r\n Dictionary Should Contain Item ${DICT} a 1\r\n```\r\n\r\nThis makes no sense in general and is also inconsistent with other keywords in Collections that don't do such casting.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4408/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4408/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4407","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4407/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4407/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4407/events","html_url":"https://github.com/robotframework/robotframework/issues/4407","id":1304931345,"node_id":"I_kwDOAUSaQ85Nx6wR","number":4407,"title":"RF version 4 and above:Suspended due to logged failure: ValueError: Argument 'timeout' got value '0.5s' that cannot be converted to None. ","user":{"login":"ac57486","id":67546951,"node_id":"MDQ6VXNlcjY3NTQ2OTUx","avatar_url":"https://avatars.githubusercontent.com/u/67546951?v=4","gravatar_id":"","url":"https://api.github.com/users/ac57486","html_url":"https://github.com/ac57486","followers_url":"https://api.github.com/users/ac57486/followers","following_url":"https://api.github.com/users/ac57486/following{/other_user}","gists_url":"https://api.github.com/users/ac57486/gists{/gist_id}","starred_url":"https://api.github.com/users/ac57486/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ac57486/subscriptions","organizations_url":"https://api.github.com/users/ac57486/orgs","repos_url":"https://api.github.com/users/ac57486/repos","events_url":"https://api.github.com/users/ac57486/events{/privacy}","received_events_url":"https://api.github.com/users/ac57486/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":4,"created_at":"2022-07-14T15:14:23Z","updated_at":"2022-08-05T08:14:56Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"In RF version 4 and above, I am getting exception when using \"Wait Until Page Contains Element\" inside run_keyword_and_return_status as given below :\r\n\r\n**result = BuiltIn().run_keyword_and_return_status(\"Wait Until Page Contains Element\", element, '0.5s')**\r\n\r\n**Suspended due to logged failure: ValueError: Argument 'timeout' got value '0.5s' that cannot be converted to None.** \r\nNot getting this error in earlier version 3.2.2. \r\n\r\nBut this works fine if I use wait_until_page_contains_element:\r\nsl = BuiltIn().get_library_instance('SeleniumLibrary')\r\nsl.wait_until_page_contains_element(element, '0.5s')\r\n\r\n\r\nExample:\r\n```robotframework\r\n*** Keywords ***\r\nWait Until Page Contains One Of The Elements ${sfc_lnk_element1} ${sfc_lnk_element2} \r\n```\r\n\r\nPython Library\r\n```python\r\n@keyword\r\ndef wait_until_page_contains_one_of_the_elements(*elements, timeout=10):\r\n result = False\r\n count = len(elements)\r\n for index in range(0, int(timeout), int(count*0.5)):\r\n for element in elements:\r\n result = BuiltIn().run_keyword_and_return_status(\"SeleniumLibrary.Wait Until Page Contains Element\", element, '0.5s')\r\n if result:\r\n break\r\n if not result:\r\n BuiltIn().fail('Page could not find any of the elements specified')\r\n```\r\nPlease help me with this issue.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4407/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4407/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4404","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4404/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4404/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4404/events","html_url":"https://github.com/robotframework/robotframework/issues/4404","id":1304553859,"node_id":"I_kwDOAUSaQ85NwemD","number":4404,"title":"Document that failing test setup stops execution even if continue-on-failure mode is active","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":911065884,"node_id":"MDU6TGFiZWw5MTEwNjU4ODQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/acknowledge","name":"acknowledge","color":"bc82e0","default":false,"description":"To be acknowledged in release notes"}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":2,"created_at":"2022-07-14T10:01:43Z","updated_at":"2022-07-15T07:26:50Z","closed_at":"2022-07-14T15:34:54Z","author_association":"MEMBER","active_lock_reason":null,"body":"When support for controlling the continue-on-failure mode was added (#2285), we didn't think how tests setups should behave when the mode is activated. Currently if you have a test like\r\n```robotframework\r\n*** Test Cases ***\r\nExample\r\n [Tags] robot:continue-on-failure\r\n [Setup] Setup Keyword\r\n Keyword In Body\r\n Another Keyword\r\n```\r\nand the `Setup Keyword` fails, keywords in the test body aren't run. That can be considered inconsistent because continue-on-failure mode is explicitly enabled, but I actually like this behavior. You can have some action in setup so that execution ends if it fails, but keywords in the body that are validating that everything went as expected would all be run if the setup succeeds. This would also add some new functionality to setups that are otherwise not really different from normal keywords.\r\n\r\nWhat do others (especially @oboehmer) think about this? Should we stop execution after a failing setup also when continue-on-failure mode is on? If yes, we just need to add some tests for the current behavior and mention this in the User Guide. If not, then we need to change the code as well.\r\n\r\nA problem with changing the code is that the change would be backwards incompatible. It's a bit questionable could we do it without a deprecation in RF 5.1 but deprecation adds more work.\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4404/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4404/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4401","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4401/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4401/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4401/events","html_url":"https://github.com/robotframework/robotframework/issues/4401","id":1302477625,"node_id":"I_kwDOAUSaQ85Nojs5","number":4401,"title":"Python 3.11 compatibility","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":2,"created_at":"2022-07-12T18:38:08Z","updated_at":"2022-07-12T22:53:41Z","closed_at":"2022-07-12T22:52:52Z","author_association":"MEMBER","active_lock_reason":null,"body":"Python 3.11 is getting ready and we need to test that RF 5.1 is compatible with it. That requires:\r\n\r\n- [x] Running all tests with the latest Python 3.11 version (beta 4 at the moment) both on Linux.\r\n- [x] Same as above on Windows.\r\n- [x] Fixing possible issues.\r\n- [x] Adding Python 3.11 support to project metadata in setup.py.\r\n- [x] Enabling Python 3.11 runs on CI (assuming it is already supported there).","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4401/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4401/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4400","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4400/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4400/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4400/events","html_url":"https://github.com/robotframework/robotframework/issues/4400","id":1301905398,"node_id":"I_kwDOAUSaQ85NmX_2","number":4400,"title":"Allow translating True and False words used in Boolean argument conversion","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":0,"created_at":"2022-07-12T11:09:18Z","updated_at":"2022-07-12T11:09:18Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"If a keyword argument has `bool` type, Robot's argument conversion converts strings like `true`, `yes` and `on` to Python `True` and strings like `false`, `no`, `off` to `False`. Now that we are adding translations in RF 5.1 (#4096, #519) it would be convenient to support translating these \"Boolean words\" as well.\r\n\r\nThis issue covers implementing this functionality. Issue #4390 covers adding translations and documenting this.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4400/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4400/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4398","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4398/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4398/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4398/events","html_url":"https://github.com/robotframework/robotframework/issues/4398","id":1301655946,"node_id":"I_kwDOAUSaQ85NlbGK","number":4398,"title":"Collections: `Get From Dictionary` should accept a default value","user":{"login":"Bosch-Eli-Black","id":37427589,"node_id":"MDQ6VXNlcjM3NDI3NTg5","avatar_url":"https://avatars.githubusercontent.com/u/37427589?v=4","gravatar_id":"","url":"https://api.github.com/users/Bosch-Eli-Black","html_url":"https://github.com/Bosch-Eli-Black","followers_url":"https://api.github.com/users/Bosch-Eli-Black/followers","following_url":"https://api.github.com/users/Bosch-Eli-Black/following{/other_user}","gists_url":"https://api.github.com/users/Bosch-Eli-Black/gists{/gist_id}","starred_url":"https://api.github.com/users/Bosch-Eli-Black/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Bosch-Eli-Black/subscriptions","organizations_url":"https://api.github.com/users/Bosch-Eli-Black/orgs","repos_url":"https://api.github.com/users/Bosch-Eli-Black/repos","events_url":"https://api.github.com/users/Bosch-Eli-Black/events{/privacy}","received_events_url":"https://api.github.com/users/Bosch-Eli-Black/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":809830686,"node_id":"MDU6TGFiZWw4MDk4MzA2ODY=","url":"https://api.github.com/repos/robotframework/robotframework/labels/good%20first%20issue","name":"good first issue","color":"7057ff","default":true,"description":"Good for newcomers"},{"id":911065884,"node_id":"MDU6TGFiZWw5MTEwNjU4ODQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/acknowledge","name":"acknowledge","color":"bc82e0","default":false,"description":"To be acknowledged in release notes"}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":6,"created_at":"2022-07-12T07:28:43Z","updated_at":"2022-07-15T09:05:02Z","closed_at":"2022-07-14T14:22:10Z","author_association":"NONE","active_lock_reason":null,"body":"[Pop From Dictionary](https://robotframework.org/robotframework/latest/libraries/Collections.html#Pop%20From%20Dictionary) has support for returning a default value if the key isn't found in the dictionary. e.g.\r\n```robot\r\nPop From Dictionary ${myDict} myKey myDefaultValue\r\n````\r\n\r\nI think it'd be great if `Get From Dictionary` also support having a default value passed to it. 🙂\r\n\r\ne.g.\r\n```robot\r\nGet From Dictionary ${myDict} myKey myDefaultValue\r\n```\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4398/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4398/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4394","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4394/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4394/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4394/events","html_url":"https://github.com/robotframework/robotframework/issues/4394","id":1300760095,"node_id":"I_kwDOAUSaQ85NiAYf","number":4394,"title":"Error when `--doc` or `--metadata` value matches an existing directory","user":{"login":"lesnake","id":3767451,"node_id":"MDQ6VXNlcjM3Njc0NTE=","avatar_url":"https://avatars.githubusercontent.com/u/3767451?v=4","gravatar_id":"","url":"https://api.github.com/users/lesnake","html_url":"https://github.com/lesnake","followers_url":"https://api.github.com/users/lesnake/followers","following_url":"https://api.github.com/users/lesnake/following{/other_user}","gists_url":"https://api.github.com/users/lesnake/gists{/gist_id}","starred_url":"https://api.github.com/users/lesnake/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lesnake/subscriptions","organizations_url":"https://api.github.com/users/lesnake/orgs","repos_url":"https://api.github.com/users/lesnake/repos","events_url":"https://api.github.com/users/lesnake/events{/privacy}","received_events_url":"https://api.github.com/users/lesnake/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":2,"created_at":"2022-07-11T14:04:18Z","updated_at":"2022-07-12T11:52:01Z","closed_at":"2022-07-12T11:52:01Z","author_association":"NONE","active_lock_reason":null,"body":"Let say that I have a directory named pekka, running \r\n`robot --metadata dev:pekka any.robot `\r\nwill fail with message :\r\n`[ ERROR ] Reading documentation from an external file failed: [Errno 21] Is a directory: 'pekka'`\r\n\r\nThe same happens with -D pekka\r\n\r\nI think the issue comes from this line :\r\n`if os.path.exists(value):`\r\nline 143 in src/robot/conf/settings.py, which should be :\r\n`if os.file.exists(value):`\r\nwhich will filter out directories to reach the failing open/read.\r\n\r\nIssue related for sure with #4008 ","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4394/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4394/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4390","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4390/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4390/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4390/events","html_url":"https://github.com/robotframework/robotframework/issues/4390","id":1294282426,"node_id":"I_kwDOAUSaQ85NJS66","number":4390,"title":"Add and document translations","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430421,"node_id":"MDU6TGFiZWwxMTA0MzA0MjE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20critical","name":"priority: critical","color":"00441b","default":false,"description":""},{"id":911065884,"node_id":"MDU6TGFiZWw5MTEwNjU4ODQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/acknowledge","name":"acknowledge","color":"bc82e0","default":false,"description":"To be acknowledged in release notes"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":4,"created_at":"2022-07-05T13:11:09Z","updated_at":"2022-07-21T17:56:50Z","closed_at":null,"author_association":"MEMBER","active_lock_reason":null,"body":"RF 5.1 starts localization efforts with these ~two~ three enhancements:\r\n\r\n- #4096\r\n- #519\r\n- #4400 \r\n\r\nThe issues above cover adding the support for translations. This issue exists for these purposes:\r\n- Actually adding translations for various languages.\r\n- Documenting what languages we support in the User Guide and elsewhere.\r\n- Collecting information about who has provided translations so that we can acknowledge them in the release notes.\r\n\r\nThe translation efforts have been lead by @leeuwe who also set a [Crowdin page](https://robotframework.crowdin.com/robot-framework) for collaboration. We also have a dedicated #localization channel on our Slack where you can get an invitation via robotframework.org.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4390/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4390/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4388","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4388/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4388/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4388/events","html_url":"https://github.com/robotframework/robotframework/issues/4388","id":1293448993,"node_id":"I_kwDOAUSaQ85NGHch","number":4388,"title":"Enhance performance of executing user keywords especially when they fail","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":1,"created_at":"2022-07-04T17:55:55Z","updated_at":"2022-07-05T12:59:38Z","closed_at":"2022-07-04T18:15:06Z","author_association":"MEMBER","active_lock_reason":null,"body":"We have recently added various tags special tags to user keywords to control their behavior. These include:\r\n- `robot:continue-on-failure` and `robot:recursive-continue-on-failure` in RF 4.1 (#2285)\r\n- `robot:exclude`, `robot:skip`, and `robot:skip-on-failure` in RF 5.0 (#4161)\r\n- `robot:stop-on-failure` and `robot:recursive-stop-on-failure` in RF 5.1 (#4303)\r\n- `robot:private` in RF 5.1 (#430)\r\n\r\nAll these tags provide valuable functionality, but checking do keywords have these tags adds some overhead. The reason there's overhead is that when we use something like `robot:private in keyword.tags`, this code ends up calling `Tags.match()` that is very generic and handles things like normalization before matching, support for patterns (e.g. `example: *`) and Boolean expressions (e.g. `tag1 OR tag2`). The overhead isn't _that_ big, but it adds up if there are lot of keywords. Many of these tags affect the behavior if there's a failure, so there's especially big overhead if there are lot of keywords that fail.\r\n\r\nLuckily having a big amount of failing keywords isn't a too common situation, but it is easy to demonstrate this with a loop and, for example, a TRY/EXCEPT structure. As issue #4053 demonstrates, the extra overhead has caused problems also in practice. That issue was reported when we had added `robot:continue-on-failure` and with all the newer tags the situation is likely somewhat worse.\r\n\r\nTo avoid these useful tags slowing down execution, we should handle the special `robot:` tags better. We should check for them when creating `Tags` objects (could be done as part of normalizing tags) so that we can then query for them using some other approach than the generic `Tags.match()`.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4388/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4388/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4387","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4387/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4387/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4387/events","html_url":"https://github.com/robotframework/robotframework/issues/4387","id":1293241871,"node_id":"I_kwDOAUSaQ85NFU4P","number":4387,"title":"Libdoc: Fix storing information about deprecated keywords to spec files","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":2,"created_at":"2022-07-04T14:20:32Z","updated_at":"2022-07-05T12:59:38Z","closed_at":"2022-07-04T17:13:04Z","author_association":"MEMBER","active_lock_reason":null,"body":"We support marking keywords deprecated by starting their documentation with `*DEPRECATED*`. There are two problems with handling this information with Libdoc:\r\n\r\n- The information is included only in XML spec files, not in JSON spec files.\r\n- If documentation is converted to HTML, reading this information fails because the marker is tuned to `DEPRECATED`.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4387/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4387/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4384","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4384/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4384/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4384/events","html_url":"https://github.com/robotframework/robotframework/issues/4384","id":1287379171,"node_id":"I_kwDOAUSaQ85Mu9jj","number":4384,"title":"RPA aliases for settings do not work in suite initialization files","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":0,"created_at":"2022-06-28T13:46:33Z","updated_at":"2022-07-05T12:59:38Z","closed_at":"2022-06-28T22:13:51Z","author_association":"MEMBER","active_lock_reason":null,"body":"We support, for example, `Test Setup` as an alias for `Test Setup` but these aliases do not work in suite initialization file. Specifying test/task settings in initialization files isn't that often a good idea and apparently nobody has tried to use this functionality with tasks because nobody has reported it. Another reason this isn't too severe issue is that the test specific variants work also with tasks so, for example, `Test Setup` can be used if really needed.\r\n\r\nI noticed this problem myself when adding `Test/Task Tags` as an alias for `Force Tags` (#4368). The initial implementation didn't support `Test Tags` in initialization files either and that needs to be fixed as well.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4384/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4384/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4381","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4381/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4381/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4381/events","html_url":"https://github.com/robotframework/robotframework/issues/4381","id":1282356714,"node_id":"I_kwDOAUSaQ85MbzXq","number":4381,"title":"Parsing errors are recognized as EmptyLines","user":{"login":"bhirsz","id":8532066,"node_id":"MDQ6VXNlcjg1MzIwNjY=","avatar_url":"https://avatars.githubusercontent.com/u/8532066?v=4","gravatar_id":"","url":"https://api.github.com/users/bhirsz","html_url":"https://github.com/bhirsz","followers_url":"https://api.github.com/users/bhirsz/followers","following_url":"https://api.github.com/users/bhirsz/following{/other_user}","gists_url":"https://api.github.com/users/bhirsz/gists{/gist_id}","starred_url":"https://api.github.com/users/bhirsz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bhirsz/subscriptions","organizations_url":"https://api.github.com/users/bhirsz/orgs","repos_url":"https://api.github.com/users/bhirsz/repos","events_url":"https://api.github.com/users/bhirsz/events{/privacy}","received_events_url":"https://api.github.com/users/bhirsz/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":4,"created_at":"2022-06-23T12:49:33Z","updated_at":"2022-07-05T12:59:37Z","closed_at":"2022-06-30T20:48:15Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"Since Robot Framework 5.* some parsing errors are recognized as EmptyLine instead of being part of the statement where the error occurs. Some of the errors also changed (for example in 4.* there was \"IF cannot have more than two conditions\" where now it's detected as \"IF branch cannot be empty\"). \r\nFor example:\r\n```\r\n Keyword\r\n var\r\n ${var}\r\n ${one} ${two}\r\n```\r\nmodel:\r\n![image](https://user-images.githubusercontent.com/8532066/175300673-d395872f-56b8-435f-839a-3be15608beb1.png)\r\n\r\n```\r\n # two conditions\r\n IF ${condition} ${condition}\r\n Keyword\r\n END\r\n```\r\nmodel:\r\nInflineIfHeader + EmptyLine (inside If) + KeywordCall for Keyword and END\r\n![image](https://user-images.githubusercontent.com/8532066/175301157-60fa11bd-6f34-4db7-b62f-fb3fd85a114c.png)\r\n\r\n![image](https://user-images.githubusercontent.com/8532066/175301360-e1f25b86-635e-4782-bd36-3bbe65f30b81.png)\r\n\r\n![image](https://user-images.githubusercontent.com/8532066/175301548-1378bed2-f04a-4079-b080-d2f6940944ab.png)\r\n\r\nIn Robot Framework 4.* it recognizes it properly:\r\n![image](https://user-images.githubusercontent.com/8532066/175302025-9719317e-8b08-4255-8e65-485d3329965d.png)\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4381/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4381/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4380","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4380/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4380/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4380/events","html_url":"https://github.com/robotframework/robotframework/issues/4380","id":1281214680,"node_id":"I_kwDOAUSaQ85MXcjY","number":4380,"title":"Deprecate setting tags starting with a hyphen like `-tag` using the `[Tags]` setting","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":121827221,"node_id":"MDU6TGFiZWwxMjE4MjcyMjE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/deprecation","name":"deprecation","color":"fef2c0","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":0,"created_at":"2022-06-22T23:16:49Z","updated_at":"2022-07-05T12:59:37Z","closed_at":"2022-06-29T11:52:56Z","author_association":"MEMBER","active_lock_reason":null,"body":"We are planning to support removing globally set tags using the `-tag` syntax with the `[Tags]` setting both with tests and keywords (#4374). Because it is possible that tags using this format have been used, we need to deprecate this syntax first. In practice this kind of usages will cause deprecation warnings:\r\n\r\n```robotframework\r\n*** Test Cases ***\r\nExample\r\n [Tags] -example\r\n Keyword\r\n\r\n*** Keywords ***\r\nKeyword\r\n [Tags] -another\r\n No Operation\r\n```\r\n\r\nThis change applies only to the `[Tags]` setting, so using the `-tag` syntax in Settings has no special meaning and will cause no warning. It will also be possible to escape the `-tag` syntax with the `[Tags]` setting like `\\-tag` in which case the literal value `-tag` will be used. Finally, if a tag is specified as a variable, the value is resolved only at the execution time and is used as-is. In practice this example would work without a warning and the test will get tags `-example`, `-another` and `-third`:\r\n\r\n```robotframework\r\n*** Settings ***\r\nTest Tags -example\r\n\r\n*** Variables ***\r\n${TAG} -another\r\n\r\n*** Test Cases ***\r\nExample\r\n [Tags] \\-third ${TAG}\r\n Keyword\r\n```\r\n\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4380/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4380/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4379","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4379/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4379/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4379/events","html_url":"https://github.com/robotframework/robotframework/issues/4379","id":1280125848,"node_id":"I_kwDOAUSaQ85MTSuY","number":4379,"title":"Require space after Given/When/Then prefixes","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":1,"created_at":"2022-06-22T13:14:43Z","updated_at":"2022-07-05T12:59:37Z","closed_at":"2022-06-22T13:16:10Z","author_association":"MEMBER","active_lock_reason":null,"body":"Currently this works:\r\n```robotframework\r\n*** Test Cases ***\r\nExample\r\n Givenkeyword\r\n\r\n*** Keywords ***\r\nKeyword\r\n```\r\nWhen localizing these prefixes (#519) we decided to change the logic so that a space is mandatory. That makes `Givenkeyword` invalid and `Given keyword` needs to be used instead.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4379/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4379/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4373","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4373/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4373/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4373/events","html_url":"https://github.com/robotframework/robotframework/issues/4373","id":1276881291,"node_id":"I_kwDOAUSaQ85MG6mL","number":4373,"title":"Support adding tags for all keywords using `Keyword Tags` setting","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":4,"created_at":"2022-06-20T12:50:53Z","updated_at":"2022-07-05T12:59:36Z","closed_at":"2022-06-30T15:41:52Z","author_association":"MEMBER","active_lock_reason":null,"body":"Currently it is possible to give tags to user keywords only so that all keywords use the `[Tags]` setting separately. Often all keywords in a resource files have some common tags, and it would be convenient to be able to list them only once. We can support that by adding new `Keyword Tags` setting that can be used in the Settings section. Although the primary use case would we with keywords in resource files, the new setting should work also in test case and suite initialization files. When used in the latter, it should not recurse to lower levels suites or to resource files in the same directory.\r\n\r\nWith tests it's possible to use `Force Tags` and `Default Tags` setting, but there's a proposal to rename the former to `Test Tags` and removing the latter altogether (#4365). That proposal is related to this issue in two ways:\r\n\r\n- If we add `Keyword Tags`, it would be a _lot_ better if the test related setting was `Test Tags` and not `Force Tags`.\r\n- Regardless do we remove `Default Tags` or not, I don't think keyword tags would need that kind of a separate setting. I instead believe we should come up with some new syntax that allows removing tags set globally both from tests and keywords. I'll submit a separate issue about that.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4373/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4373/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4372","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4372/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4372/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4372/events","html_url":"https://github.com/robotframework/robotframework/issues/4372","id":1276826311,"node_id":"I_kwDOAUSaQ85MGtLH","number":4372,"title":"Document how to import resource files bundled into Python packages","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":0,"created_at":"2022-06-20T12:04:33Z","updated_at":"2022-07-05T12:59:36Z","closed_at":"2022-06-22T13:42:02Z","author_association":"MEMBER","active_lock_reason":null,"body":"We were planning to add such support (#4317), but it turned out that using just\r\n\r\n Resource package:example.robot\r\n\r\nworks already now. Need to document that in the User Guide and it's probably a good idea to add explicit tests for it as well.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4372/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4372/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4371","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4371/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4371/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4371/events","html_url":"https://github.com/robotframework/robotframework/issues/4371","id":1274943445,"node_id":"I_kwDOAUSaQ85L_hfV","number":4371,"title":"Add `AS` alias for `WITH NAME` in library imports","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":121827221,"node_id":"MDU6TGFiZWwxMjE4MjcyMjE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/deprecation","name":"deprecation","color":"fef2c0","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":0,"created_at":"2022-06-17T11:58:02Z","updated_at":"2022-07-05T12:59:35Z","closed_at":"2022-06-22T13:42:03Z","author_association":"MEMBER","active_lock_reason":null,"body":"Issue #4369 proposes renaming `WITH NAME` in library imports to `AS`. This issue covers the first step towards that: adding `AS` alias for `WITH NAME`. At this point there's no need to do other changes.\r\n\r\nI add `deprecation` label to this issue because the plan is to later deprecate `WITH NAME`. Tests that run with RF 5.1 or newer should thus use `AS` instead of that.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4371/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4371/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4368","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4368/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4368/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4368/events","html_url":"https://github.com/robotframework/robotframework/issues/4368","id":1273320448,"node_id":"I_kwDOAUSaQ85L5VQA","number":4368,"title":"New `Test Tags` setting as an alias for `Force Tags`","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":121827221,"node_id":"MDU6TGFiZWwxMjE4MjcyMjE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/deprecation","name":"deprecation","color":"fef2c0","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":1,"created_at":"2022-06-16T09:46:22Z","updated_at":"2022-07-05T12:59:35Z","closed_at":"2022-06-29T11:52:55Z","author_association":"MEMBER","active_lock_reason":null,"body":"Issue #4365 proposes simplifying setting test tags so that `Force Tags` is renamed to `Test Tags` and `Default Tags` is removed. This issue is the first concrete step to that direction. The idea is just to add `Test Tags` as an alias for `Force Tags` in RF 5.1. Then later, probably in RF 6.0, we can deprecate both `Force Tags` and `Default Tags`. Although those settings aren't \"loudly\" deprecated yet, I'll add the `deprecation` label to this issue to indicate that they will be deprecated later.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4368/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4368/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4366","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4366/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4366/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4366/events","html_url":"https://github.com/robotframework/robotframework/issues/4366","id":1271782924,"node_id":"I_kwDOAUSaQ85Lzd4M","number":4366,"title":"Give local keywords precedence over imported keywords in resource files","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":121827221,"node_id":"MDU6TGFiZWwxMjE4MjcyMjE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/deprecation","name":"deprecation","color":"fef2c0","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":6,"created_at":"2022-06-15T07:19:42Z","updated_at":"2022-07-11T17:44:18Z","closed_at":"2022-07-11T17:44:18Z","author_association":"MEMBER","active_lock_reason":null,"body":"Currently if we have a resource file like\r\n\r\n```robotframework\r\n*** Settings ***\r\nResource another.resource\r\n\r\n*** Keywords ***\r\nKeyword\r\n Internal Keyword\r\n\r\nInternal Keyword\r\n No Operation\r\n```\r\nand also the imported `another.resource` contains keyword with name `Internal Keyword`, execution fails due to there being two keywords matching the same name. Failing like that would be fine if both matches were imported, but when a resource file has a local keyword matching the name it should have precedence.\r\n\r\nThis change would be good in general, but it gets more important when we add support for private keywords in resource files (#430). Public keywords will have precedence over private keywords otherwise, but keywords in the same resource files should call them automatically if there's a conflict.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4366/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4366/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4364","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4364/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4364/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4364/events","html_url":"https://github.com/robotframework/robotframework/issues/4364","id":1267202458,"node_id":"I_kwDOAUSaQ85Lh_ma","number":4364,"title":"The @{list} notation mismatching behaviour between embedded and traditional keywords","user":{"login":"jatalahd","id":3659596,"node_id":"MDQ6VXNlcjM2NTk1OTY=","avatar_url":"https://avatars.githubusercontent.com/u/3659596?v=4","gravatar_id":"","url":"https://api.github.com/users/jatalahd","html_url":"https://github.com/jatalahd","followers_url":"https://api.github.com/users/jatalahd/followers","following_url":"https://api.github.com/users/jatalahd/following{/other_user}","gists_url":"https://api.github.com/users/jatalahd/gists{/gist_id}","starred_url":"https://api.github.com/users/jatalahd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jatalahd/subscriptions","organizations_url":"https://api.github.com/users/jatalahd/orgs","repos_url":"https://api.github.com/users/jatalahd/repos","events_url":"https://api.github.com/users/jatalahd/events{/privacy}","received_events_url":"https://api.github.com/users/jatalahd/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":1,"created_at":"2022-06-10T08:02:18Z","updated_at":"2022-06-14T14:18:48Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"Until Robot 4.1.2 we have used the following style in library keywords:\r\n\r\n\r\n class testlibrary:\r\n\r\n @keyword(\"Testing embedded ${arguments}\") \r\n def test_embedded_arguments(self, *arguments: str):\r\n print (arguments)\r\n\r\n\r\n def test_unembedded_arguments(self, *arguments: str):\r\n print (arguments)\r\n\r\nand calling them from robot file\r\n\r\n\r\n *** Settings ***\r\n Library testlibrary\r\n\r\n *** Variables ***\r\n @{ARGUMENTS} arg1 arg2 arg3\r\n\r\n *** Test Cases ***\r\n Test Embedded Arguments\r\n Testing embedded @{ARGUMENTS}\r\n\r\n\r\n Test Unembedded Arguments\r\n Test Unembedded Arguments @{ARGUMENTS}\r\n\r\n\r\nOutput:\r\n\r\n ('arg1', 'arg2', 'arg3')\r\n\r\n ('arg1', 'arg2', 'arg3')\r\n\r\n\r\nStarting from Robot FW version 5.0, the argument expansion does not work the same way between these two:\r\n\r\nOutput:\r\n\r\n (\"['arg1', 'arg2', 'arg3']\",)\r\n\r\n ('arg1', 'arg2', 'arg3')\r\n\r\n\r\nI feel that this is regression from fixing issue: #4207\r\n\r\nDo you see this as a defect or do we need to do the required modifications to our test libraries? \r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4364/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4364/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4359","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4359/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4359/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4359/events","html_url":"https://github.com/robotframework/robotframework/issues/4359","id":1263455747,"node_id":"I_kwDOAUSaQ85LTs4D","number":4359,"title":"Parsing model: `Variable.from_params` doesn't handle list values properly","user":{"login":"osrjv","id":29481017,"node_id":"MDQ6VXNlcjI5NDgxMDE3","avatar_url":"https://avatars.githubusercontent.com/u/29481017?v=4","gravatar_id":"","url":"https://api.github.com/users/osrjv","html_url":"https://github.com/osrjv","followers_url":"https://api.github.com/users/osrjv/followers","following_url":"https://api.github.com/users/osrjv/following{/other_user}","gists_url":"https://api.github.com/users/osrjv/gists{/gist_id}","starred_url":"https://api.github.com/users/osrjv/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/osrjv/subscriptions","organizations_url":"https://api.github.com/users/osrjv/orgs","repos_url":"https://api.github.com/users/osrjv/repos","events_url":"https://api.github.com/users/osrjv/events{/privacy}","received_events_url":"https://api.github.com/users/osrjv/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":2,"created_at":"2022-06-07T15:09:09Z","updated_at":"2022-07-05T12:59:35Z","closed_at":"2022-06-07T19:34:29Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"This is an issue originally reported in #4357.\r\n\r\nThe `Variable` token for suite variables is a bit broken (in my opinion) for values in general. It has a property `value` for getting its value, but for list/dict type values it will return a tuple. The matching `from_params` assumes it will only ever be a single scalar value, but that's not true for the aforementioned types.\r\n\r\nHere's an example of a tokenized list variable:\r\n```python\r\nVariable(tokens=[\r\n Token(VARIABLE, '@{LIST}', 3, 0),\r\n Token(SEPARATOR, ' ', 3, 7),\r\n Token(ARGUMENT, '${1}', 3, 18),\r\n Token(SEPARATOR, ' ', 3, 22),\r\n Token(ARGUMENT, '${2}', 3, 26),\r\n Token(SEPARATOR, ' ', 3, 30),\r\n Token(ARGUMENT, '${3}', 3, 34),\r\n Token(EOL, '\\n', 3, 38)]\r\n)\r\n```\r\nWhich is not compatible with [this method](https://github.com/robotframework/robotframework/blob/master/src/robot/parsing/model/statements.py#L523). And lists/dicts are not covered in [the unittests](https://github.com/robotframework/robotframework/blob/master/utest/parsing/test_statements.py#L223).","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4359/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4359/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4358","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4358/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4358/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4358/events","html_url":"https://github.com/robotframework/robotframework/issues/4358","id":1263387635,"node_id":"I_kwDOAUSaQ85LTcPz","number":4358,"title":"User Guide: Errors in examples related to TRY/EXCEPT","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":0,"created_at":"2022-06-07T14:21:25Z","updated_at":"2022-07-05T12:59:34Z","closed_at":"2022-06-07T14:35:20Z","author_association":"MEMBER","active_lock_reason":null,"body":"Examples related to catching error message when using EXCEPT branches has wrong syntax for defining expected errors using patterns. They use syntax like `GLOB: Patt*n` that was initially used for this purpose, but the syntax was changed to `Patt*n type=GLOB` before RF 5.1 final release. Examples need to be updated as well.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4358/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4358/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4357","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4357/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4357/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4357/events","html_url":"https://github.com/robotframework/robotframework/issues/4357","id":1261507793,"node_id":"I_kwDOAUSaQ85LMRTR","number":4357,"title":"Parsing model: Creating `TRY` and `WHILE` statements using `from_params` is not possible","user":{"login":"osrjv","id":29481017,"node_id":"MDQ6VXNlcjI5NDgxMDE3","avatar_url":"https://avatars.githubusercontent.com/u/29481017?v=4","gravatar_id":"","url":"https://api.github.com/users/osrjv","html_url":"https://github.com/osrjv","followers_url":"https://api.github.com/users/osrjv/followers","following_url":"https://api.github.com/users/osrjv/following{/other_user}","gists_url":"https://api.github.com/users/osrjv/gists{/gist_id}","starred_url":"https://api.github.com/users/osrjv/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/osrjv/subscriptions","organizations_url":"https://api.github.com/users/osrjv/orgs","repos_url":"https://api.github.com/users/osrjv/repos","events_url":"https://api.github.com/users/osrjv/events{/privacy}","received_events_url":"https://api.github.com/users/osrjv/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":6,"created_at":"2022-06-06T08:15:54Z","updated_at":"2022-07-05T12:59:34Z","closed_at":"2022-06-07T14:35:21Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"`Token` objects for control structures have a default value, since they are effectively static. This is handled [here](https://github.com/robotframework/robotframework/blob/master/src/robot/parsing/lexer/tokens.py#L154).\r\n\r\nHow this is handled is possibly a bit... questionable, but without commenting on the current implementation the `TRY/EXCEPT/FINALLY` tokens are missing defaults.\r\n\r\nThis is an issue made worse by the fact that the [factory method](https://github.com/robotframework/robotframework/blob/master/src/robot/parsing/model/statements.py#L926) does not supply an explicit value, and it can't be set by the caller.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4357/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4357/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4355","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4355/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4355/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4355/events","html_url":"https://github.com/robotframework/robotframework/issues/4355","id":1259480556,"node_id":"I_kwDOAUSaQ85LEiXs","number":4355,"title":"Continuable failures terminate WHILE loops","user":{"login":"oboehmer","id":22439451,"node_id":"MDQ6VXNlcjIyNDM5NDUx","avatar_url":"https://avatars.githubusercontent.com/u/22439451?v=4","gravatar_id":"","url":"https://api.github.com/users/oboehmer","html_url":"https://github.com/oboehmer","followers_url":"https://api.github.com/users/oboehmer/followers","following_url":"https://api.github.com/users/oboehmer/following{/other_user}","gists_url":"https://api.github.com/users/oboehmer/gists{/gist_id}","starred_url":"https://api.github.com/users/oboehmer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oboehmer/subscriptions","organizations_url":"https://api.github.com/users/oboehmer/orgs","repos_url":"https://api.github.com/users/oboehmer/repos","events_url":"https://api.github.com/users/oboehmer/events{/privacy}","received_events_url":"https://api.github.com/users/oboehmer/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":1,"created_at":"2022-06-03T06:20:58Z","updated_at":"2022-07-05T12:59:34Z","closed_at":"2022-06-06T14:58:17Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"I would expect `robot:continue-on-failure` to continue a `WHILE` loop, however it only continues the current iteration and then aborts\r\n\r\n```\r\n*** Test Cases ***\r\nContinue in WHILE loop with continue tag\r\n [Tags] robot:continue-on-failure\r\n ${val}= Set Variable ${0}\r\n WHILE ${val} < 3\r\n Fail while-loop1-${val}\r\n Log this is executed, but only once (for val==0)\r\n ${val}= Evaluate ${val} + 1\r\n END\r\n```\r\n\r\n\"image\"\r\n\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4355/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4355/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4354","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4354/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4354/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4354/events","html_url":"https://github.com/robotframework/robotframework/issues/4354","id":1253985763,"node_id":"I_kwDOAUSaQ85Kvk3j","number":4354,"title":"When merging suites and tests with Rebot, copy documentation, metadata and tags from merged suites and tests","user":{"login":"burrk","id":87382026,"node_id":"MDQ6VXNlcjg3MzgyMDI2","avatar_url":"https://avatars.githubusercontent.com/u/87382026?v=4","gravatar_id":"","url":"https://api.github.com/users/burrk","html_url":"https://github.com/burrk","followers_url":"https://api.github.com/users/burrk/followers","following_url":"https://api.github.com/users/burrk/following{/other_user}","gists_url":"https://api.github.com/users/burrk/gists{/gist_id}","starred_url":"https://api.github.com/users/burrk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/burrk/subscriptions","organizations_url":"https://api.github.com/users/burrk/orgs","repos_url":"https://api.github.com/users/burrk/repos","events_url":"https://api.github.com/users/burrk/events{/privacy}","received_events_url":"https://api.github.com/users/burrk/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":1,"created_at":"2022-05-31T14:50:50Z","updated_at":"2022-08-04T17:03:24Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":" I've attached an example zip file. Inside the merged output.xml file, all the appended suite documentation is still there - but each log contains the complete final text as if it was overwriting the documentation instead of appending to it.\r\n\r\n[RebotMessageMerge.zip](https://github.com/robotframework/robotframework/files/8806168/RebotMessageMerge.zip)\r\n\r\nIn the sample code I have each testcase appending documentation to the suite, which is lost when the suite results are merged. **In real life** we append additional test result information to the suite documentation _during teardown_, so it is conveniently available in the suite summary. Some of the information is the common suite information, but appended to it is additional test summary information (as a table)\r\n\r\nHowever, when a suite is distributed across multiple test servers and we merge the results together, only documentation from one of the servers' results makes it to the final report. \r\n\r\n@pekkaklarck suggested I raise this as an issue in this Slack thread: https://robotframework.slack.com/archives/C3C28F9DF/p1653496529741169?thread_ts=1652803426.993159&cid=C3C28F9D\r\n\r\nThe test environment is:\r\nWindows 10 Pro (20H2) \r\npython=3.8.13\r\nchromedriver-py==102.0.5005.61\r\nrpaframework==14.0.0 (robotframework 5.0.1)\r\nrpaframework-recognition==3.0.0\r\nrobotframework-datadriver[XLS]==1.6.1\r\nrobotframework-pabot==2.5.3\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4354/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4354/timeline","performed_via_github_app":null,"state_reason":null,"score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4353","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4353/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4353/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4353/events","html_url":"https://github.com/robotframework/robotframework/issues/4353","id":1253983471,"node_id":"I_kwDOAUSaQ85KvkTv","number":4353,"title":"Performance enhancements to parsing","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""},{"id":911065884,"node_id":"MDU6TGFiZWw5MTEwNjU4ODQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/acknowledge","name":"acknowledge","color":"bc82e0","default":false,"description":"To be acknowledged in release notes"}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":1,"created_at":"2022-05-31T14:49:11Z","updated_at":"2022-07-05T12:59:33Z","closed_at":"2022-06-02T14:40:30Z","author_association":"MEMBER","active_lock_reason":null,"body":"PR #4350 by @fabioz contains nice looking performance enhancements for parsing. This issue exists mainly to get the enhancements listed in release notes. Need to test how much that affects normal execution times but parsing enhancements nevertheless help with editors and other tools that use Robot's parsing modules.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4353/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4353/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4351","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4351/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4351/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4351/events","html_url":"https://github.com/robotframework/robotframework/issues/4351","id":1252820643,"node_id":"I_kwDOAUSaQ85KrIaj","number":4351,"title":"Libdoc can give bad error message if library argument has extension matching resource files","user":{"login":"fabioz","id":117621,"node_id":"MDQ6VXNlcjExNzYyMQ==","avatar_url":"https://avatars.githubusercontent.com/u/117621?v=4","gravatar_id":"","url":"https://api.github.com/users/fabioz","html_url":"https://github.com/fabioz","followers_url":"https://api.github.com/users/fabioz/followers","following_url":"https://api.github.com/users/fabioz/following{/other_user}","gists_url":"https://api.github.com/users/fabioz/gists{/gist_id}","starred_url":"https://api.github.com/users/fabioz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fabioz/subscriptions","organizations_url":"https://api.github.com/users/fabioz/orgs","repos_url":"https://api.github.com/users/fabioz/repos","events_url":"https://api.github.com/users/fabioz/events{/privacy}","received_events_url":"https://api.github.com/users/fabioz/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":175630288,"node_id":"MDU6TGFiZWwxNzU2MzAyODg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/alpha%201","name":"alpha 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/61","html_url":"https://github.com/robotframework/robotframework/milestone/61","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/61/labels","id":7269150,"node_id":"MI_kwDOAUSaQ84Abuse","number":61,"title":"v5.1","description":"New feature release with main focus in improving support for other languages than English. This means support for multilanguage markers in data (#4096) and supporting Given/When/Then syntax with other languages than English (#519).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":33,"state":"open","created_at":"2021-10-19T19:00:19Z","updated_at":"2022-08-04T17:03:24Z","due_on":"2022-09-05T07:00:00Z","closed_at":null},"comments":4,"created_at":"2022-05-30T14:30:23Z","updated_at":"2022-07-05T12:59:33Z","closed_at":"2022-06-19T18:29:44Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"This problem was initially seen at:\r\n\r\nhttps://github.com/robocorp/robotframework-lsp/issues/608\r\n\r\nThe language server tried to generate a libspec with a command line such similar to:\r\n\r\n`python -m robot.libdoc test_lib::path\\to\\x.txt out.libspec`\r\n\r\nand the error given was: \r\n\r\n`Resource file 'test_lib::d:\\foo\\x.txt' does not exist.`\r\n\r\nThe same could happen if dealing with a library with a module which ends with `.resource` or `.txt` or `.rest` (libdoc tries to guess, but in this particular case, where the language server knows that it's dealing with a library import, the error for the `Resource does not exist` is always wrong).","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4351/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4351/timeline","performed_via_github_app":null,"state_reason":"completed","score":1}]}},{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/63","html_url":"https://github.com/robotframework/robotframework/milestone/63","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/63/labels","id":7790732,"node_id":"MI_kwDOAUSaQ84AduCM","number":63,"title":"v5.0.1","description":"First and possibly the only RF 5.0.x series bug fix release.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":13,"state":"closed","created_at":"2022-03-22T08:52:28Z","updated_at":"2022-05-16T07:54:41Z","due_on":"2022-05-16T07:00:00Z","closed_at":"2022-05-16T07:54:41Z","issues":{"total_count":13,"incomplete_results":false,"items":[{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4336","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4336/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4336/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4336/events","html_url":"https://github.com/robotframework/robotframework/issues/4336","id":1227975814,"node_id":"I_kwDOAUSaQ85JMWyG","number":4336,"title":"`Get Variable Value` doesn't support accessing list/dict variable items like `${var}[0]` or `${var}[key]`","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/63","html_url":"https://github.com/robotframework/robotframework/milestone/63","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/63/labels","id":7790732,"node_id":"MI_kwDOAUSaQ84AduCM","number":63,"title":"v5.0.1","description":"First and possibly the only RF 5.0.x series bug fix release.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":13,"state":"closed","created_at":"2022-03-22T08:52:28Z","updated_at":"2022-05-16T07:54:41Z","due_on":"2022-05-16T07:00:00Z","closed_at":"2022-05-16T07:54:41Z"},"comments":0,"created_at":"2022-05-06T14:59:37Z","updated_at":"2022-05-09T18:14:26Z","closed_at":"2022-05-06T16:34:41Z","author_association":"MEMBER","active_lock_reason":null,"body":"This is inconsistent because it is possible to access same items using the extended variable syntax like `${var[0]}` and `${var['key']}`. I found this issue while debugging #4175. Implementation is basically a byproduct of the fix for that issue.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4336/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4336/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4331","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4331/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4331/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4331/events","html_url":"https://github.com/robotframework/robotframework/issues/4331","id":1221549470,"node_id":"I_kwDOAUSaQ85Iz12e","number":4331,"title":"Example in API documentation uses an out-of-date API","user":{"login":"boakley","id":1123938,"node_id":"MDQ6VXNlcjExMjM5Mzg=","avatar_url":"https://avatars.githubusercontent.com/u/1123938?v=4","gravatar_id":"","url":"https://api.github.com/users/boakley","html_url":"https://github.com/boakley","followers_url":"https://api.github.com/users/boakley/followers","following_url":"https://api.github.com/users/boakley/following{/other_user}","gists_url":"https://api.github.com/users/boakley/gists{/gist_id}","starred_url":"https://api.github.com/users/boakley/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/boakley/subscriptions","organizations_url":"https://api.github.com/users/boakley/orgs","repos_url":"https://api.github.com/users/boakley/repos","events_url":"https://api.github.com/users/boakley/events{/privacy}","received_events_url":"https://api.github.com/users/boakley/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/63","html_url":"https://github.com/robotframework/robotframework/milestone/63","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/63/labels","id":7790732,"node_id":"MI_kwDOAUSaQ84AduCM","number":63,"title":"v5.0.1","description":"First and possibly the only RF 5.0.x series bug fix release.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":13,"state":"closed","created_at":"2022-03-22T08:52:28Z","updated_at":"2022-05-16T07:54:41Z","due_on":"2022-05-16T07:00:00Z","closed_at":"2022-05-16T07:54:41Z"},"comments":2,"created_at":"2022-04-29T21:14:40Z","updated_at":"2022-05-09T18:14:41Z","closed_at":"2022-05-05T13:35:17Z","author_association":"NONE","active_lock_reason":null,"body":"The current API documentation seems to use an out-of-date API. When I run the example in the docs, two of the lines in the example appear to be incorrect. \r\n\r\nThis is the example from the documentation:\r\n\r\n```\r\nfrom robot.api import TestSuite\r\n\r\nsuite = TestSuite('Activate Skynet')\r\nsuite.resource.imports.library('OperatingSystem')\r\ntest = suite.tests.create('Should Activate Skynet', tags=['smoke'])\r\ntest.setup.config('Set Environment Variable', args=['SKYNET', 'activated'])\r\ntest.keywords.create('Environment Variable Should Be Set', args=['SKYNET'])\r\n```\r\n\r\nWhen run with either robot 4.1.3 or 5.0, it gives the following error:\r\n\r\n```\r\nTypeError: config() takes 1 positional argument but 2 were given\r\n```\r\n\r\nWhen I comment out the call to `test.setup.config` I get this error:\r\n\r\n```\r\nAttributeError: 'keywords' attribute is read-only and deprecated since Robot Framework 4.0. Use 'body', 'setup' or 'teardown' instead.\r\n```","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4331/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4331/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4324","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4324/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4324/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4324/events","html_url":"https://github.com/robotframework/robotframework/issues/4324","id":1216486957,"node_id":"I_kwDOAUSaQ85Igh4t","number":4324,"title":"Programmatic execution API doesn't support `pathlib.Path` objects","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/63","html_url":"https://github.com/robotframework/robotframework/milestone/63","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/63/labels","id":7790732,"node_id":"MI_kwDOAUSaQ84AduCM","number":63,"title":"v5.0.1","description":"First and possibly the only RF 5.0.x series bug fix release.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":13,"state":"closed","created_at":"2022-03-22T08:52:28Z","updated_at":"2022-05-16T07:54:41Z","due_on":"2022-05-16T07:00:00Z","closed_at":"2022-05-16T07:54:41Z"},"comments":0,"created_at":"2022-04-26T21:17:17Z","updated_at":"2022-05-09T16:26:57Z","closed_at":"2022-04-26T21:46:26Z","author_association":"MEMBER","active_lock_reason":null,"body":"Currently options accepting paths need to be give as strings, not as `pathlib.Path` objects, when using the programmatic execution API. For example, this fails:\r\n\r\n```python\r\nfrom pathlib import Path\r\nfrom robot import run\r\n\r\nrun('tests.robot', output=Path('example.xml'))\r\n```\r\n\r\nA workaround is using strings to begin with or to convert `Path` objects to strings like `output=str(Path('example.xml'))`. `Path` objects are getting more and more widely used so better to support them directly.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4324/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4324/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4322","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4322/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4322/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4322/events","html_url":"https://github.com/robotframework/robotframework/issues/4322","id":1214803793,"node_id":"I_kwDOAUSaQ85IaG9R","number":4322,"title":"DateTime: Enhance documentation related to the epoch time format","user":{"login":"UliSei","id":89480399,"node_id":"MDQ6VXNlcjg5NDgwMzk5","avatar_url":"https://avatars.githubusercontent.com/u/89480399?v=4","gravatar_id":"","url":"https://api.github.com/users/UliSei","html_url":"https://github.com/UliSei","followers_url":"https://api.github.com/users/UliSei/followers","following_url":"https://api.github.com/users/UliSei/following{/other_user}","gists_url":"https://api.github.com/users/UliSei/gists{/gist_id}","starred_url":"https://api.github.com/users/UliSei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/UliSei/subscriptions","organizations_url":"https://api.github.com/users/UliSei/orgs","repos_url":"https://api.github.com/users/UliSei/repos","events_url":"https://api.github.com/users/UliSei/events{/privacy}","received_events_url":"https://api.github.com/users/UliSei/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/63","html_url":"https://github.com/robotframework/robotframework/milestone/63","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/63/labels","id":7790732,"node_id":"MI_kwDOAUSaQ84AduCM","number":63,"title":"v5.0.1","description":"First and possibly the only RF 5.0.x series bug fix release.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":13,"state":"closed","created_at":"2022-03-22T08:52:28Z","updated_at":"2022-05-16T07:54:41Z","due_on":"2022-05-16T07:00:00Z","closed_at":"2022-05-16T07:54:41Z"},"comments":1,"created_at":"2022-04-25T17:10:58Z","updated_at":"2022-05-09T16:26:57Z","closed_at":"2022-05-06T16:34:41Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"I'd suggest to keep the sentence in the **Epoch time** abstract:\r\n\"Notice that epoch time itself is independent on timezones and thus same around the world at a certain time. What local time a certain epoch time matches obviously then depends on the timezone.\"\r\n\r\nThen append\r\n\"See also Python [datetime ](https://docs.python.org/3/library/datetime.html#aware-and-naive-objects) library.\"\r\n\r\nAnd finally show these examples:\r\n![grafik](https://user-images.githubusercontent.com/89480399/165138462-08f49b51-6907-40bd-bc40-48c5b347c142.png)\r\n\r\n---\r\nSource that can be copied for testing:\r\n```\r\n** Settings ***\r\nLibrary DateTime\r\n\r\n*** Test Cases ***\r\nEpoch time in RF refers to local time\r\n ${date_TS} Get Current Date time_zone=local result_format=timestamp exclude_millis=True\r\n ${dateEp1} Convert Date ${date_TS} epoch exclude_millis=True\r\n ${dateEp2} Get Current Date time_zone=UTC increment=+ 0 hours result_format=epoch exclude_millis=True # UTC is ignored\r\n Should Be Equal As Integers ${dateEp1} ${dateEp2} # Always True, wherever on the world the test case is started\r\n\r\n ${dateEp3} Get Current Date time_zone=UTC increment=+ 1 hours result_format=epoch exclude_millis=True # UTC is ignored\r\n ${dateEp2} Evaluate ${dateEp2} + 3600\r\n Should Be Equal As Integers ${dateEp2} ${dateEp3} # Always True, wherever on the world the test case is started\r\n```\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4322/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4322/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4318","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4318/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4318/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4318/events","html_url":"https://github.com/robotframework/robotframework/issues/4318","id":1207027984,"node_id":"I_kwDOAUSaQ85H8ckQ","number":4318,"title":"Support creating functions using `partial` and `partialmethod` (earlier the latter caused a crash)","user":{"login":"dries007","id":1346725,"node_id":"MDQ6VXNlcjEzNDY3MjU=","avatar_url":"https://avatars.githubusercontent.com/u/1346725?v=4","gravatar_id":"","url":"https://api.github.com/users/dries007","html_url":"https://github.com/dries007","followers_url":"https://api.github.com/users/dries007/followers","following_url":"https://api.github.com/users/dries007/following{/other_user}","gists_url":"https://api.github.com/users/dries007/gists{/gist_id}","starred_url":"https://api.github.com/users/dries007/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dries007/subscriptions","organizations_url":"https://api.github.com/users/dries007/orgs","repos_url":"https://api.github.com/users/dries007/repos","events_url":"https://api.github.com/users/dries007/events{/privacy}","received_events_url":"https://api.github.com/users/dries007/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/63","html_url":"https://github.com/robotframework/robotframework/milestone/63","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/63/labels","id":7790732,"node_id":"MI_kwDOAUSaQ84AduCM","number":63,"title":"v5.0.1","description":"First and possibly the only RF 5.0.x series bug fix release.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":13,"state":"closed","created_at":"2022-03-22T08:52:28Z","updated_at":"2022-05-16T07:54:41Z","due_on":"2022-05-16T07:00:00Z","closed_at":"2022-05-16T07:54:41Z"},"comments":5,"created_at":"2022-04-18T13:02:42Z","updated_at":"2022-05-09T16:26:56Z","closed_at":"2022-04-22T10:00:12Z","author_association":"NONE","active_lock_reason":null,"body":"I'm currently writing some robot libraries where it would be quite handy to provide the user with a selection of variations of keywords with some arguments preset. To do this I thought I could use partialmethod, but unforutunately doing so makes the library unusable by RobotFramework 5.x.\r\n\r\nMiniam code example:\r\n\r\n```python\r\nfrom functools import partialmethod\r\n\r\n\r\nclass PartialBug:\r\n def echo(self, x: str) -> str:\r\n return x\r\n\r\n hello_world = partialmethod(echo, x=\"hello world\")\r\n```\r\n\r\n```robotframework\r\n*** Settings ***\r\nLibrary PartialBug\r\n```\r\n\r\n\r\n

\r\nStacktrace\r\n\r\n\r\n```pytb\r\n[ ERROR ] Unexpected error: AttributeError: 'functools.partial' object has no attribute '__name__'\r\nTraceback (most recent call last):\r\n File \"/home/dries/Projects/opso/opso-sw/.venv/lib/python3.10/site-packages/robot/utils/application.py\", line 83, in _execute\r\n rc = self.main(arguments, **options)\r\n File \"/home/dries/Projects/opso/opso-sw/.venv/lib/python3.10/site-packages/robot/run.py\", line 450, in main\r\n result = suite.run(settings)\r\n File \"/home/dries/Projects/opso/opso-sw/.venv/lib/python3.10/site-packages/robot/running/model.py\", line 296, in run\r\n self.visit(runner)\r\n File \"/home/dries/Projects/opso/opso-sw/.venv/lib/python3.10/site-packages/robot/model/testsuite.py\", line 226, in visit\r\n visitor.visit_suite(self)\r\n File \"/home/dries/Projects/opso/opso-sw/.venv/lib/python3.10/site-packages/robot/model/visitor.py\", line 85, in visit_suite\r\n if self.start_suite(suite) is not False:\r\n File \"/home/dries/Projects/opso/opso-sw/.venv/lib/python3.10/site-packages/robot/running/suiterunner.py\", line 72, in start_suite\r\n ns.handle_imports()\r\n File \"/home/dries/Projects/opso/opso-sw/.venv/lib/python3.10/site-packages/robot/running/namespace.py\", line 55, in handle_imports\r\n self._handle_imports(self._imports)\r\n File \"/home/dries/Projects/opso/opso-sw/.venv/lib/python3.10/site-packages/robot/running/namespace.py\", line 66, in _handle_imports\r\n self._import(item)\r\n File \"/home/dries/Projects/opso/opso-sw/.venv/lib/python3.10/site-packages/robot/running/namespace.py\", line 74, in _import\r\n action(import_setting)\r\n File \"/home/dries/Projects/opso/opso-sw/.venv/lib/python3.10/site-packages/robot/running/namespace.py\", line 127, in _import_library\r\n lib = IMPORTER.import_library(name, import_setting.args,\r\n File \"/home/dries/Projects/opso/opso-sw/.venv/lib/python3.10/site-packages/robot/running/importer.py\", line 48, in import_library\r\n lib = self._import_library(name, positional, named, lib)\r\n File \"/home/dries/Projects/opso/opso-sw/.venv/lib/python3.10/site-packages/robot/running/importer.py\", line 78, in _import_library\r\n lib.create_handlers()\r\n File \"/home/dries/Projects/opso/opso-sw/.venv/lib/python3.10/site-packages/robot/running/testlibraries.py\", line 119, in create_handlers\r\n self._create_handlers(self.get_instance())\r\n File \"/home/dries/Projects/opso/opso-sw/.venv/lib/python3.10/site-packages/robot/running/testlibraries.py\", line 241, in _create_handlers\r\n handler, embedded = self._try_to_create_handler(name, method)\r\n File \"/home/dries/Projects/opso/opso-sw/.venv/lib/python3.10/site-packages/robot/running/testlibraries.py\", line 299, in _try_to_create_handler\r\n handler = self._create_handler(name, method)\r\n File \"/home/dries/Projects/opso/opso-sw/.venv/lib/python3.10/site-packages/robot/running/testlibraries.py\", line 310, in _create_handler\r\n return Handler(self, handler_name, handler_method)\r\n File \"/home/dries/Projects/opso/opso-sw/.venv/lib/python3.10/site-packages/robot/running/handlers.py\", line 40, in Handler\r\n return _PythonHandler(library, name, method)\r\n File \"/home/dries/Projects/opso/opso-sw/.venv/lib/python3.10/site-packages/robot/running/handlers.py\", line 143, in __init__\r\n _RunnableHandler.__init__(self, library, handler_name, handler_method,\r\n File \"/home/dries/Projects/opso/opso-sw/.venv/lib/python3.10/site-packages/robot/running/handlers.py\", line 60, in __init__\r\n self.arguments = self._parse_arguments(handler_method)\r\n File \"/home/dries/Projects/opso/opso-sw/.venv/lib/python3.10/site-packages/robot/running/handlers.py\", line 147, in _parse_arguments\r\n return PythonArgumentParser().parse(handler_method, self.longname)\r\n File \"/home/dries/Projects/opso/opso-sw/.venv/lib/python3.10/site-packages/robot/running/arguments/py3argumentparser.py\", line 29, in parse\r\n self._set_args(spec, handler)\r\n File \"/home/dries/Projects/opso/opso-sw/.venv/lib/python3.10/site-packages/robot/running/arguments/py3argumentparser.py\", line 43, in _set_args\r\n if handler.__name__ == '__init__':\r\n\r\nProcess finished with exit code 255\r\n```\r\n\r\n\r\n
","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4318/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4318/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4315","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4315/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4315/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4315/events","html_url":"https://github.com/robotframework/robotframework/issues/4315","id":1203240686,"node_id":"I_kwDOAUSaQ85Ht_7u","number":4315,"title":"`BuiltIn.Log`: Using invalid log level should be a normal error, not a syntax error","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/63","html_url":"https://github.com/robotframework/robotframework/milestone/63","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/63/labels","id":7790732,"node_id":"MI_kwDOAUSaQ84AduCM","number":63,"title":"v5.0.1","description":"First and possibly the only RF 5.0.x series bug fix release.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":13,"state":"closed","created_at":"2022-03-22T08:52:28Z","updated_at":"2022-05-16T07:54:41Z","due_on":"2022-05-16T07:00:00Z","closed_at":"2022-05-16T07:54:41Z"},"comments":1,"created_at":"2022-04-13T12:34:39Z","updated_at":"2022-05-09T18:14:12Z","closed_at":"2022-05-06T17:47:20Z","author_association":"MEMBER","active_lock_reason":null,"body":"Currently using, for example, `Log message invalid` causes a syntax error that cannot be caught by `TRY/EXCEPT` (#4314). We should change the error to a normal error instead. Should also check how `Set Log Level` behaves (most likely the same way) and are there other similar error situations where the error should be a normal error, not a syntax error.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4315/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4315/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4314","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4314/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4314/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4314/events","html_url":"https://github.com/robotframework/robotframework/issues/4314","id":1203067073,"node_id":"I_kwDOAUSaQ85HtVjB","number":4314,"title":"Document that `EXCEPT` does not catch syntax errors","user":{"login":"UliSei","id":89480399,"node_id":"MDQ6VXNlcjg5NDgwMzk5","avatar_url":"https://avatars.githubusercontent.com/u/89480399?v=4","gravatar_id":"","url":"https://api.github.com/users/UliSei","html_url":"https://github.com/UliSei","followers_url":"https://api.github.com/users/UliSei/followers","following_url":"https://api.github.com/users/UliSei/following{/other_user}","gists_url":"https://api.github.com/users/UliSei/gists{/gist_id}","starred_url":"https://api.github.com/users/UliSei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/UliSei/subscriptions","organizations_url":"https://api.github.com/users/UliSei/orgs","repos_url":"https://api.github.com/users/UliSei/repos","events_url":"https://api.github.com/users/UliSei/events{/privacy}","received_events_url":"https://api.github.com/users/UliSei/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/63","html_url":"https://github.com/robotframework/robotframework/milestone/63","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/63/labels","id":7790732,"node_id":"MI_kwDOAUSaQ84AduCM","number":63,"title":"v5.0.1","description":"First and possibly the only RF 5.0.x series bug fix release.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":13,"state":"closed","created_at":"2022-03-22T08:52:28Z","updated_at":"2022-05-16T07:54:41Z","due_on":"2022-05-16T07:00:00Z","closed_at":"2022-05-16T07:54:41Z"},"comments":1,"created_at":"2022-04-13T09:53:26Z","updated_at":"2022-05-09T16:26:56Z","closed_at":"2022-05-06T16:34:41Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"There are 2 places where the TRY-Except syntax is explained.\r\n1) When I read the **Release notes for 5.0** line 123 ...\r\n\"It is also possible to have an `EXCEPT` without messages, in which case it matches **any error**.\"\r\n... I thought every error would be handled by EXCEPT.\r\nSo I made two test cases ...\r\n\r\n```\r\nCatch any exception from keyword Fail\r\n TRY\r\n Fail # AssertionError\r\n EXCEPT\r\n Log EXCEPT with no arguments catches any exception.\r\n END\r\n\r\nCatch any exception from keyword Log\r\n TRY\r\n Log \\nLog keyword runs on error INFOx # Invalid log level 'INFOx'.\r\n EXCEPT\r\n Log EXCEPT with no arguments catches any exception.\r\n END\r\n```\r\n\r\n... and wondered why the first one passed and the second one failed.\r\n\r\nSo I'd suggest to change the note:\r\n\"It is also possible to have an `EXCEPT` without messages, in which case it matches\r\nany error except those which are caused by wrong keyword syntax.\"\r\n\r\n2) I also had a look to the [User Guide, 2.9.5](http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#try-except-syntax):\r\n\"If the keyword fails with a message Error message (case-sensitive), the EXCEPT branch is executed.\"\r\nMaybe it would help other users to see known examples where the Error message is not catched which is the case for\r\na) keywords with false syntax\r\nb) keywords used in teardown #4293 \r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4314/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4314/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4305","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4305/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4305/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4305/events","html_url":"https://github.com/robotframework/robotframework/issues/4305","id":1196194792,"node_id":"I_kwDOAUSaQ85HTHvo","number":4305,"title":"Functions named `__init__` are exposed as keywords with name `__init__`, not `Init`","user":{"login":"oboehmer","id":22439451,"node_id":"MDQ6VXNlcjIyNDM5NDUx","avatar_url":"https://avatars.githubusercontent.com/u/22439451?v=4","gravatar_id":"","url":"https://api.github.com/users/oboehmer","html_url":"https://github.com/oboehmer","followers_url":"https://api.github.com/users/oboehmer/followers","following_url":"https://api.github.com/users/oboehmer/following{/other_user}","gists_url":"https://api.github.com/users/oboehmer/gists{/gist_id}","starred_url":"https://api.github.com/users/oboehmer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oboehmer/subscriptions","organizations_url":"https://api.github.com/users/oboehmer/orgs","repos_url":"https://api.github.com/users/oboehmer/repos","events_url":"https://api.github.com/users/oboehmer/events{/privacy}","received_events_url":"https://api.github.com/users/oboehmer/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/63","html_url":"https://github.com/robotframework/robotframework/milestone/63","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/63/labels","id":7790732,"node_id":"MI_kwDOAUSaQ84AduCM","number":63,"title":"v5.0.1","description":"First and possibly the only RF 5.0.x series bug fix release.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":13,"state":"closed","created_at":"2022-03-22T08:52:28Z","updated_at":"2022-05-16T07:54:41Z","due_on":"2022-05-16T07:00:00Z","closed_at":"2022-05-16T07:54:41Z"},"comments":3,"created_at":"2022-04-07T15:14:22Z","updated_at":"2022-05-09T16:26:55Z","closed_at":"2022-04-08T13:52:51Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"I noticed robotframework 5.0 exposes the `__init__` method as keyword for https://github.com/guykisel/robotframework-faker/tree/master/robotframework-faker library. This is not happening with 4.1.3:\r\n\r\n## with robot 5.0\r\n\r\n```\r\n$ pip freeze|grep robotframework-faker\r\nrobotframework-faker==5.0.0\r\n$ pip freeze|grep robotframework=\r\nrobotframework==5.0\r\n$ python -m robot.libdoc FakerLibrary list | grep init\r\n__init__\r\n$ \r\n```\r\n\r\n## downgrading to 4.1.3\r\n\r\n```\r\n$ pip freeze|grep robotframework=\r\nrobotframework==4.1.3\r\n$ python -m robot.libdoc FakerLibrary list | grep init\r\n$ ","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4305/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4305/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4292","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4292/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4292/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4292/events","html_url":"https://github.com/robotframework/robotframework/issues/4292","id":1179876625,"node_id":"I_kwDOAUSaQ85GU30R","number":4292,"title":"Process library test related to sending signals fails on Guix","user":{"login":"Apteryks","id":8332263,"node_id":"MDQ6VXNlcjgzMzIyNjM=","avatar_url":"https://avatars.githubusercontent.com/u/8332263?v=4","gravatar_id":"","url":"https://api.github.com/users/Apteryks","html_url":"https://github.com/Apteryks","followers_url":"https://api.github.com/users/Apteryks/followers","following_url":"https://api.github.com/users/Apteryks/following{/other_user}","gists_url":"https://api.github.com/users/Apteryks/gists{/gist_id}","starred_url":"https://api.github.com/users/Apteryks/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Apteryks/subscriptions","organizations_url":"https://api.github.com/users/Apteryks/orgs","repos_url":"https://api.github.com/users/Apteryks/repos","events_url":"https://api.github.com/users/Apteryks/events{/privacy}","received_events_url":"https://api.github.com/users/Apteryks/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/63","html_url":"https://github.com/robotframework/robotframework/milestone/63","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/63/labels","id":7790732,"node_id":"MI_kwDOAUSaQ84AduCM","number":63,"title":"v5.0.1","description":"First and possibly the only RF 5.0.x series bug fix release.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":13,"state":"closed","created_at":"2022-03-22T08:52:28Z","updated_at":"2022-05-16T07:54:41Z","due_on":"2022-05-16T07:00:00Z","closed_at":"2022-05-16T07:54:41Z"},"comments":10,"created_at":"2022-03-24T18:21:16Z","updated_at":"2022-05-16T07:54:17Z","closed_at":"2022-05-16T07:54:16Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"Hello!\r\n\r\nRunning the acceptance test suite (atest) on a Guix System, I have one failure I'm unable to explain:\r\n\r\n```\r\npython3 atest/run.py atest/robot/standard_libraries/process \r\nPython 3.9.9 on Linux\r\n---------------------\r\n\r\nRunning command:\r\n/gnu/store/6nig0lg4c8qjacwcjpkdxhayqdylk4sq-profile/bin/python3 /tmp/guix-build-python-robotframework-5.0.drv-0/source/src/robot/run.py --doc Robot Framework acceptance tests --metadata interpreter:Python 3.9.9 on Linux --variablefile /tmp/guix-build-python-robotframework-5.0.drv-0/source/atest/interpreter.py;/gnu/store/6nig0lg4c8qjacwcjpkdxhayqdylk4sq-profile/bin/python3;Python;3.9.9 --pythonpath /tmp/guix-build-python-robotframework-5.0.drv-0/source/atest/resources --outputdir /tmp/guix-build-python-robotframework-5.0.drv-0/source/atest/results/Python-3.9.9-Linux --splitlog --console dotted --consolewidth 100 --SuiteStatLevel 3 --exclude require-py3.10 --exclude require-windows atest/robot/standard_libraries/process\r\n\r\nRunning suite 'Process' with 123 tests.\r\n====================================================================================================\r\n...........................................................................F........................\r\n.......................\r\n----------------------------------------------------------------------------------------------------\r\nFAIL: Process.Sending Signal.By default signal is not sent to process running in shell\r\nStatus of 'By default signal is not sent to process running in shell' should have been PASS but it was FAIL.\r\n\r\nError message:\r\nKeyword 'Blastoff Successful' failed after retrying for 2 seconds 200 milliseconds. The last error was: '10\r\n' does not end with 'BLASTOFF'\r\n====================================================================================================\r\nRun suite 'Process' with 123 tests in 58 seconds 132 milliseconds.\r\n\r\nFAILED\r\n123 tests, 122 passed, 1 failed\r\n\r\nOutput: /tmp/guix-build-python-robotframework-5.0.drv-0/source/atest/results/Python-3.9.9-Linux/output.xml\r\nLog: /tmp/guix-build-python-robotframework-5.0.drv-0/source/atest/results/Python-3.9.9-Linux/log.html\r\nReport: /tmp/guix-build-python-robotframework-5.0.drv-0/source/atest/results/Python-3.9.9-Linux/report.html\r\n```\r\n\r\nI've tried to investigate why that is, but don't see anything obvious. I see that very test is already skipped on MacOSX; why is that? Does it depend on the shell used for the system? On Guix System that'd be Bash 5.\r\n\r\nHere are the direct dependencies involved, required for the tests mostly:\r\n```\r\ndependencies:\r\npython-docutils@0.17.1\r\npython-invoke@1.6.0\r\npython-jsonschema@3.2.0\r\npython-lxml@4.6.3\r\npython-pygments@2.8.1\r\npython-pyyaml@5.4.1\r\npython-rellu@0.7\r\npython-xmlschema@1.2.5\r\npython@3.9.9\r\nscrot@1.7\r\ntzdata@2021e\r\nxvfb-run@1.20.10-3\r\n```\r\n\r\nAny ideas?","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4292/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4292/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4281","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4281/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4281/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4281/events","html_url":"https://github.com/robotframework/robotframework/issues/4281","id":1172358607,"node_id":"I_kwDOAUSaQ85F4MXP","number":4281,"title":"Update Libdoc's JSON schema","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/63","html_url":"https://github.com/robotframework/robotframework/milestone/63","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/63/labels","id":7790732,"node_id":"MI_kwDOAUSaQ84AduCM","number":63,"title":"v5.0.1","description":"First and possibly the only RF 5.0.x series bug fix release.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":13,"state":"closed","created_at":"2022-03-22T08:52:28Z","updated_at":"2022-05-16T07:54:41Z","due_on":"2022-05-16T07:00:00Z","closed_at":"2022-05-16T07:54:41Z"},"comments":9,"created_at":"2022-03-17T13:03:20Z","updated_at":"2022-05-09T16:26:55Z","closed_at":"2022-04-28T18:44:22Z","author_association":"MEMBER","active_lock_reason":null,"body":"Libdoc spec files were enhanced in RF 5.0 but the JSON schema was not updated. Change were:\r\n- New `typedocs` section to list all type information used by a library. This is related to #4160 and #4088.\r\n- Old `dataTypes` section is deprecated in favor of the new `typedocs`.\r\n- Each keyword argument has `typedocs` that contains a mapping of type names it uses to typedocs in the aforementioned `typedocs` section. \r\n\r\nThe XSD schema documenting XML spec has been updated.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4281/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4281/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4204","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4204/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4204/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4204/events","html_url":"https://github.com/robotframework/robotframework/issues/4204","id":1112361856,"node_id":"I_kwDOAUSaQ85CTUuA","number":4204,"title":"Using `Set Test Variable` in suite setup or teardown should be a normal error, not a syntax error","user":{"login":"MaximeAbout","id":97884384,"node_id":"U_kgDOBdWY4A","avatar_url":"https://avatars.githubusercontent.com/u/97884384?v=4","gravatar_id":"","url":"https://api.github.com/users/MaximeAbout","html_url":"https://github.com/MaximeAbout","followers_url":"https://api.github.com/users/MaximeAbout/followers","following_url":"https://api.github.com/users/MaximeAbout/following{/other_user}","gists_url":"https://api.github.com/users/MaximeAbout/gists{/gist_id}","starred_url":"https://api.github.com/users/MaximeAbout/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MaximeAbout/subscriptions","organizations_url":"https://api.github.com/users/MaximeAbout/orgs","repos_url":"https://api.github.com/users/MaximeAbout/repos","events_url":"https://api.github.com/users/MaximeAbout/events{/privacy}","received_events_url":"https://api.github.com/users/MaximeAbout/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/63","html_url":"https://github.com/robotframework/robotframework/milestone/63","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/63/labels","id":7790732,"node_id":"MI_kwDOAUSaQ84AduCM","number":63,"title":"v5.0.1","description":"First and possibly the only RF 5.0.x series bug fix release.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":13,"state":"closed","created_at":"2022-03-22T08:52:28Z","updated_at":"2022-05-16T07:54:41Z","due_on":"2022-05-16T07:00:00Z","closed_at":"2022-05-16T07:54:41Z"},"comments":1,"created_at":"2022-01-24T09:10:39Z","updated_at":"2022-05-09T18:14:02Z","closed_at":"2022-05-06T17:47:19Z","author_association":"NONE","active_lock_reason":null,"body":"Hello, \r\n\r\nI'm facing an issue on Suite Teardown. From what I read in the documentation, the teardown should always been run:\r\n![image](https://user-images.githubusercontent.com/97884384/150752902-aadb2994-0cfd-4497-957c-d28021a2f712.png)\r\n\r\nBut I just discover than, in case of keyword issue (not a test failure) it is not the case. Here a simple example inspired from my test suite:\r\n```\r\n*** Settings ***\r\n\r\nSuite Setup Setup\r\nSuite Teardown Release\r\n\r\nForce Tags robot:recursive-continue-on-failure\r\nDefault Tags all\r\n\r\n*** Test Cases ***\r\n\r\nTest1\r\n Log test1\r\n\r\n*** Keywords ***\r\nSetup\r\n Log setup\r\n\r\nRelease\r\n SubRelease\r\n Log Release 4\r\n\r\nSubRelease\r\n Log release 1\r\n Set Test variable ${toto} 4\r\n Log Release 3\r\n\r\n```\r\n\r\nHere the result\r\n![image](https://user-images.githubusercontent.com/97884384/150753442-011e5e4f-4515-471a-afd7-afc6b904a74c.png)\r\n\r\n\r\nI know that do a Set Test variable in a teardown is a mistake but still, teardown should not continue ?\r\n\r\nThank you. \r\nBest regards, \r\nMaxime\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4204/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4204/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4175","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4175/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4175/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4175/events","html_url":"https://github.com/robotframework/robotframework/issues/4175","id":1087495667,"node_id":"I_kwDOAUSaQ85A0d3z","number":4175,"title":"`Get Variable Value` fails if variable name contains another variable and resolving it fails","user":{"login":"haryw4","id":96569100,"node_id":"U_kgDOBcGHDA","avatar_url":"https://avatars.githubusercontent.com/u/96569100?v=4","gravatar_id":"","url":"https://api.github.com/users/haryw4","html_url":"https://github.com/haryw4","followers_url":"https://api.github.com/users/haryw4/followers","following_url":"https://api.github.com/users/haryw4/following{/other_user}","gists_url":"https://api.github.com/users/haryw4/gists{/gist_id}","starred_url":"https://api.github.com/users/haryw4/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haryw4/subscriptions","organizations_url":"https://api.github.com/users/haryw4/orgs","repos_url":"https://api.github.com/users/haryw4/repos","events_url":"https://api.github.com/users/haryw4/events{/privacy}","received_events_url":"https://api.github.com/users/haryw4/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/63","html_url":"https://github.com/robotframework/robotframework/milestone/63","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/63/labels","id":7790732,"node_id":"MI_kwDOAUSaQ84AduCM","number":63,"title":"v5.0.1","description":"First and possibly the only RF 5.0.x series bug fix release.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":13,"state":"closed","created_at":"2022-03-22T08:52:28Z","updated_at":"2022-05-16T07:54:41Z","due_on":"2022-05-16T07:00:00Z","closed_at":"2022-05-16T07:54:41Z"},"comments":2,"created_at":"2021-12-23T08:37:01Z","updated_at":"2022-05-09T16:26:54Z","closed_at":"2022-05-06T16:34:40Z","author_association":"NONE","active_lock_reason":null,"body":"With RFW 3 this was working fine when inner dictionary entry did not exist : ${var[${dict['A']}]} -> default returned\r\nWith RFW 4 this fails with : Resolving variable '${dict['A']}' failed: KeyError: 'A'\r\n\r\nThis contradicts the purpose of this keyword. It should return given default whenever it is not possible to resolve the given term. ","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4175/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4175/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/3862","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/3862/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/3862/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/3862/events","html_url":"https://github.com/robotframework/robotframework/issues/3862","id":813376424,"node_id":"MDU6SXNzdWU4MTMzNzY0MjQ=","number":3862,"title":"`--runemptysuite` should work with `--rerunfailed` when there are no failed tests","user":{"login":"villesau","id":2647016,"node_id":"MDQ6VXNlcjI2NDcwMTY=","avatar_url":"https://avatars.githubusercontent.com/u/2647016?v=4","gravatar_id":"","url":"https://api.github.com/users/villesau","html_url":"https://github.com/villesau","followers_url":"https://api.github.com/users/villesau/followers","following_url":"https://api.github.com/users/villesau/following{/other_user}","gists_url":"https://api.github.com/users/villesau/gists{/gist_id}","starred_url":"https://api.github.com/users/villesau/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/villesau/subscriptions","organizations_url":"https://api.github.com/users/villesau/orgs","repos_url":"https://api.github.com/users/villesau/repos","events_url":"https://api.github.com/users/villesau/events{/privacy}","received_events_url":"https://api.github.com/users/villesau/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/63","html_url":"https://github.com/robotframework/robotframework/milestone/63","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/63/labels","id":7790732,"node_id":"MI_kwDOAUSaQ84AduCM","number":63,"title":"v5.0.1","description":"First and possibly the only RF 5.0.x series bug fix release.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":13,"state":"closed","created_at":"2022-03-22T08:52:28Z","updated_at":"2022-05-16T07:54:41Z","due_on":"2022-05-16T07:00:00Z","closed_at":"2022-05-16T07:54:41Z"},"comments":15,"created_at":"2021-02-22T10:43:03Z","updated_at":"2022-05-09T16:26:54Z","closed_at":"2022-04-26T21:46:26Z","author_association":"NONE","active_lock_reason":null,"body":"Hi,\r\n\r\nThe `Collecting failed tests from 'output.xml' failed: All tests passed.` is pretty misleading: In reality nothing fails, it finds as just many failed tests as it is supposed to find. Maybe `Could not find failed tests, exiting` or similar would be better. Now it indicates that it would give some non-zero status code and so on.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/3862/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/3862/timeline","performed_via_github_app":null,"state_reason":"completed","score":1}]}},{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z","issues":{"total_count":76,"incomplete_results":false,"items":[{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4279","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4279/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4279/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4279/events","html_url":"https://github.com/robotframework/robotframework/issues/4279","id":1170023204,"node_id":"I_kwDOAUSaQ85FvSMk","number":4279,"title":"Allow overriding all built-in variables","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":230194665,"node_id":"MDU6TGFiZWwyMzAxOTQ2NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%202","name":"rc 2","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":1,"created_at":"2022-03-15T18:16:51Z","updated_at":"2022-03-15T20:37:31Z","closed_at":"2022-03-15T20:00:25Z","author_association":"MEMBER","active_lock_reason":null,"body":"Currently it is possible to override some of the built-in variables in the Variables section but not all. All variables can be overridden with locally created variables. For example, in the \"Variable section\" test below `${42}` is overridden but `${TRUE}` is not and in the \"Local variables\" test both are overridden.\r\n\r\n```\r\n*** Variables ***\r\n${42} Overridden\r\n${TRUE} Not overridden\r\n\r\n*** Test Cases ***\r\nVariable section\r\n Log to console ${42}\r\n Log to console ${TRUE}\r\n\r\nLocal variables\r\n ${42} = Set variable Overridden again\r\n ${TRUE} = Set variable Overridden this time\r\n Log to console ${42}\r\n Log to console ${TRUE}\r\n```\r\n\r\nThe reason that `${42}` can be overridden in the Variables section is that it doesn't actually exist initially. The value is created dynamically when the variable is used if a variable with that name doesn't exist. In the example above such a variable is created and it is used instead. Built-in variables that are initialized before execution starts cannot currently be overridden except when creating local variables.\r\n\r\nNot being able to override built-in variables, especially variables like in the above example, could be considered a good idea, but it causes problems when we add new built-in variables. For example, newly added `&{OPTIONS}` (#4229) overrides variables with the same name (incl. `${options}`) as explained in #4274. I believe the best way to avoid these problems is that we make it possible to override all built-in variables.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4279/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4279/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4275","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4275/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4275/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4275/events","html_url":"https://github.com/robotframework/robotframework/issues/4275","id":1169079912,"node_id":"I_kwDOAUSaQ85Frr5o","number":4275,"title":"Libdoc does not support specifying argument types using new `arg: X | Y` syntax","user":{"login":"DetachHead","id":57028336,"node_id":"MDQ6VXNlcjU3MDI4MzM2","avatar_url":"https://avatars.githubusercontent.com/u/57028336?v=4","gravatar_id":"","url":"https://api.github.com/users/DetachHead","html_url":"https://github.com/DetachHead","followers_url":"https://api.github.com/users/DetachHead/followers","following_url":"https://api.github.com/users/DetachHead/following{/other_user}","gists_url":"https://api.github.com/users/DetachHead/gists{/gist_id}","starred_url":"https://api.github.com/users/DetachHead/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DetachHead/subscriptions","organizations_url":"https://api.github.com/users/DetachHead/orgs","repos_url":"https://api.github.com/users/DetachHead/repos","events_url":"https://api.github.com/users/DetachHead/events{/privacy}","received_events_url":"https://api.github.com/users/DetachHead/received_events","type":"User","site_admin":false},"labels":[{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":110430429,"node_id":"MDU6TGFiZWwxMTA0MzA0Mjk=","url":"https://api.github.com/repos/robotframework/robotframework/labels/task","name":"task","color":"ededed","default":false,"description":"Generic task not listed in release notes"},{"id":230194665,"node_id":"MDU6TGFiZWwyMzAxOTQ2NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%202","name":"rc 2","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":1,"created_at":"2022-03-15T01:30:20Z","updated_at":"2022-03-15T20:38:04Z","closed_at":"2022-03-15T08:11:44Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"originally raised here: https://github.com/robocorp/robotframework-lsp/issues/602\r\n\r\n### files\r\n`Sandpit/test.py`:\r\n```py\r\ndef foo(src: str | None) -> None:\r\n ...\r\n```\r\n`Sandpit/test.robot`:\r\n```robot\r\n*** Settings ***\r\nLibrary Sandpit.test\r\n```\r\n### command & output\r\n```\r\n> python -m robot.libdoc Sandpit.test Sandpit.test.libspec \r\n\r\nBuilding library 'Sandpit.test' failed: KeyError: typing.Union\r\n\r\nTry --help for usage information\r\n```\r\n\r\n### environment\r\n - OS: windows 10\r\n - Robot Framework Version: 5.0b1\r\n - python version: 3.10","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4275/reactions","total_count":2,"+1":2,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4275/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4274","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4274/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4274/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4274/events","html_url":"https://github.com/robotframework/robotframework/issues/4274","id":1168824098,"node_id":"I_kwDOAUSaQ85Fqtci","number":4274,"title":"New &{OPTIONS} feature breaks test cases with existing ${options} variables","user":{"login":"oboehmer","id":22439451,"node_id":"MDQ6VXNlcjIyNDM5NDUx","avatar_url":"https://avatars.githubusercontent.com/u/22439451?v=4","gravatar_id":"","url":"https://api.github.com/users/oboehmer","html_url":"https://github.com/oboehmer","followers_url":"https://api.github.com/users/oboehmer/followers","following_url":"https://api.github.com/users/oboehmer/following{/other_user}","gists_url":"https://api.github.com/users/oboehmer/gists{/gist_id}","starred_url":"https://api.github.com/users/oboehmer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oboehmer/subscriptions","organizations_url":"https://api.github.com/users/oboehmer/orgs","repos_url":"https://api.github.com/users/oboehmer/repos","events_url":"https://api.github.com/users/oboehmer/events{/privacy}","received_events_url":"https://api.github.com/users/oboehmer/received_events","type":"User","site_admin":false},"labels":[{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":110430429,"node_id":"MDU6TGFiZWwxMTA0MzA0Mjk=","url":"https://api.github.com/repos/robotframework/robotframework/labels/task","name":"task","color":"ededed","default":false,"description":"Generic task not listed in release notes"},{"id":230194665,"node_id":"MDU6TGFiZWwyMzAxOTQ2NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%202","name":"rc 2","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":3,"created_at":"2022-03-14T19:40:39Z","updated_at":"2022-03-15T20:38:04Z","closed_at":"2022-03-15T20:00:25Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"I noticed the following test case to fail when run with robot 5.0rc1, i.e. with the #4230 changes introducing OPTIONS as a reserved variable. \r\n\r\n```\r\n$ cat /tmp/o.robot\r\n*** Variables ***\r\n${options} 123\r\n\r\n*** Test Cases ***\r\ntest\r\n Should be Equal ${options} 123\r\n\r\n$ robot /tmp/o.robot \r\n==============================================================================\r\nO \r\n==============================================================================\r\ntest | FAIL |\r\n{'include': [], 'exclude': [], 'skip': [], 'skip_on_failure': []} != 123\r\n------------------------------------------------------------------------------\r\nO | FAIL |\r\n1 test, 0 passed, 1 failed\r\n==============================================================================\r\n```\r\n\r\nIt looks user-defined variables do NOT overwrite it, not even when specifying it on the command line, which should overwrite all:\r\n\r\n```\r\n$ robot --variable options:123 /tmp/o.robot \r\n==============================================================================\r\nO \r\n==============================================================================\r\ntest | FAIL |\r\n{'include': [], 'exclude': [], 'skip': [], 'skip_on_failure': []} != 123\r\n------------------------------------------------------------------------------\r\nO | FAIL |\r\n1 test, 0 passed, 1 failed\r\n==============================================================================\r\n```\r\n\r\nIf this special variable affects robot tests where users defined options, I would strongly opt to rename it to use a different name, as failures can be difficult to troubleshoot (as I just witnessed it as one obscure tests failed in our integration run)\r\n\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4274/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4274/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4270","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4270/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4270/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4270/events","html_url":"https://github.com/robotframework/robotframework/issues/4270","id":1167518719,"node_id":"I_kwDOAUSaQ85Fluv_","number":4270,"title":"Differences in parsing IF/ELSE.. and TRY/EXCEPT statements with get_model(..., data_only=False)","user":{"login":"d-biehl","id":7069968,"node_id":"MDQ6VXNlcjcwNjk5Njg=","avatar_url":"https://avatars.githubusercontent.com/u/7069968?v=4","gravatar_id":"","url":"https://api.github.com/users/d-biehl","html_url":"https://github.com/d-biehl","followers_url":"https://api.github.com/users/d-biehl/followers","following_url":"https://api.github.com/users/d-biehl/following{/other_user}","gists_url":"https://api.github.com/users/d-biehl/gists{/gist_id}","starred_url":"https://api.github.com/users/d-biehl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/d-biehl/subscriptions","organizations_url":"https://api.github.com/users/d-biehl/orgs","repos_url":"https://api.github.com/users/d-biehl/repos","events_url":"https://api.github.com/users/d-biehl/events{/privacy}","received_events_url":"https://api.github.com/users/d-biehl/received_events","type":"User","site_admin":false},"labels":[{"id":110430429,"node_id":"MDU6TGFiZWwxMTA0MzA0Mjk=","url":"https://api.github.com/repos/robotframework/robotframework/labels/task","name":"task","color":"ededed","default":false,"description":"Generic task not listed in release notes"},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":230194665,"node_id":"MDU6TGFiZWwyMzAxOTQ2NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%202","name":"rc 2","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":10,"created_at":"2022-03-13T08:43:42Z","updated_at":"2022-03-15T20:38:03Z","closed_at":"2022-03-13T21:08:06Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"Given this piece of code: \r\n\r\n```python\r\nimport ast\r\nfrom io import StringIO\r\nfrom robot.api import get_model\r\n\r\n\r\nDATA = \"\"\"\\\r\n*** Test Cases ***\r\nfirst\r\n IF 0\r\n\r\n ELSE\r\n\r\n END\r\n\"\"\"\r\n\r\nwith StringIO(DATA) as data:\r\n model = get_model(data, data_only=True, curdir=\".\") # << data_only is not default value\r\n\r\nfor node in ast.walk(model):\r\n if node.errors:\r\n print(node.errors)\r\n```\r\n\r\nIf I run this, i get:\r\n\r\n```\r\n('IF has empty body.',)\r\n('ELSE has empty body.',)\r\n```\r\n\r\nBut if I set data_only parameter to False, which is the the default value, I get no output.\r\nI would expect, the output would be the same, like I set data_only to True.\r\n\r\nI get the same behaviour, if I use TRY/EXCEPT statement like:\r\n\r\n```robotframework\r\nDATA = \"\"\"\\\r\n*** Test Cases ***\r\nfirst\r\n TRY\r\n\r\n EXCEPT\r\n\r\n END\r\n\"\"\"\r\n```\r\n\r\nTried it with robotframework 4.1.3 and 5.0rc1, both the same.\r\n\r\nAnother question I ask me is, why robot must check that a body is empty? I think this should be done by code analysis tools like robocop.\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4270/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4270/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4269","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4269/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4269/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4269/events","html_url":"https://github.com/robotframework/robotframework/issues/4269","id":1167509284,"node_id":"I_kwDOAUSaQ85Flsck","number":4269,"title":"Invalid BREAK usage with dryrun","user":{"login":"d-biehl","id":7069968,"node_id":"MDQ6VXNlcjcwNjk5Njg=","avatar_url":"https://avatars.githubusercontent.com/u/7069968?v=4","gravatar_id":"","url":"https://api.github.com/users/d-biehl","html_url":"https://github.com/d-biehl","followers_url":"https://api.github.com/users/d-biehl/followers","following_url":"https://api.github.com/users/d-biehl/following{/other_user}","gists_url":"https://api.github.com/users/d-biehl/gists{/gist_id}","starred_url":"https://api.github.com/users/d-biehl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/d-biehl/subscriptions","organizations_url":"https://api.github.com/users/d-biehl/orgs","repos_url":"https://api.github.com/users/d-biehl/repos","events_url":"https://api.github.com/users/d-biehl/events{/privacy}","received_events_url":"https://api.github.com/users/d-biehl/received_events","type":"User","site_admin":false},"labels":[{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":110430429,"node_id":"MDU6TGFiZWwxMTA0MzA0Mjk=","url":"https://api.github.com/repos/robotframework/robotframework/labels/task","name":"task","color":"ededed","default":false,"description":"Generic task not listed in release notes"},{"id":230194665,"node_id":"MDU6TGFiZWwyMzAxOTQ2NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%202","name":"rc 2","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"yanne","id":159146,"node_id":"MDQ6VXNlcjE1OTE0Ng==","avatar_url":"https://avatars.githubusercontent.com/u/159146?v=4","gravatar_id":"","url":"https://api.github.com/users/yanne","html_url":"https://github.com/yanne","followers_url":"https://api.github.com/users/yanne/followers","following_url":"https://api.github.com/users/yanne/following{/other_user}","gists_url":"https://api.github.com/users/yanne/gists{/gist_id}","starred_url":"https://api.github.com/users/yanne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yanne/subscriptions","organizations_url":"https://api.github.com/users/yanne/orgs","repos_url":"https://api.github.com/users/yanne/repos","events_url":"https://api.github.com/users/yanne/events{/privacy}","received_events_url":"https://api.github.com/users/yanne/received_events","type":"User","site_admin":false},"assignees":[{"login":"yanne","id":159146,"node_id":"MDQ6VXNlcjE1OTE0Ng==","avatar_url":"https://avatars.githubusercontent.com/u/159146?v=4","gravatar_id":"","url":"https://api.github.com/users/yanne","html_url":"https://github.com/yanne","followers_url":"https://api.github.com/users/yanne/followers","following_url":"https://api.github.com/users/yanne/following{/other_user}","gists_url":"https://api.github.com/users/yanne/gists{/gist_id}","starred_url":"https://api.github.com/users/yanne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yanne/subscriptions","organizations_url":"https://api.github.com/users/yanne/orgs","repos_url":"https://api.github.com/users/yanne/repos","events_url":"https://api.github.com/users/yanne/events{/privacy}","received_events_url":"https://api.github.com/users/yanne/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":3,"created_at":"2022-03-13T07:50:08Z","updated_at":"2022-03-13T21:10:12Z","closed_at":"2022-03-13T19:56:27Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"Given this piece of code:\r\n\r\n```robotframework\r\n*** Test Cases ***\r\nfirst test\r\n WHILE True\r\n BREAK\r\n END\r\n```\r\n\r\nIf I run this with in \"dry run\" mode like this:\r\n\r\n`robot -d .\\results\\ --dryrun .\\tests\\playground.robot`\r\n\r\nthen I get an `Invalid 'BREAK' usage.` and the test fails with this output:\r\n\r\n```\r\n==============================================================================\r\nPlayground\r\n==============================================================================\r\nfirst test | FAIL |\r\nInvalid 'BREAK' usage.\r\n------------------------------------------------------------------------------\r\nPlayground | FAIL |\r\n1 test, 0 passed, 1 failed\r\n==============================================================================\r\nOutput: C:\\tmp\\rt1\\results\\output.xml\r\nLog: C:\\tmp\\rt1\\results\\log.html\r\nReport: C:\\tmp\\rt1\\results\\report.html\r\n```\r\n\r\nI would expect that there is no error, also if I run this in dry run mode.\r\n\r\nVersions:\r\nRobot Framework 5.0rc1 (Python 3.10.2 on win32)\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4269/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4269/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4268","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4268/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4268/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4268/events","html_url":"https://github.com/robotframework/robotframework/issues/4268","id":1166207816,"node_id":"I_kwDOAUSaQ85FgutI","number":4268,"title":"Warn if suite contains multiple suites with same name","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":0,"created_at":"2022-03-11T09:45:15Z","updated_at":"2022-03-11T14:00:47Z","closed_at":"2022-03-11T10:21:11Z","author_association":"MEMBER","active_lock_reason":null,"body":"If you have, for example, suites `tests.robot` and `tests_.robot` in a same directory and the directory, you two suites named `Tests`. This isn't typically a problem, but as https://github.com/d-biehl/robotcode/issues/37 demonstrates, it can make it hard to run individual suites or tests.\r\n\r\nWe already emit a warning if a suite has two tests with same name, and we could very easily emit such a warning also if a suite has two suites with same name. Then users would get a warning and it would be easier to avoid the problem.\r\n\r\nAs a special case, I don't think it's a good idea to emit a warning if you run tests like `robot tests.robot tests.robot` i.e. run the same suite multiple times in one command.\r\n\r\nThe underlying problem was originally reported as #4253.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4268/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4268/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4267","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4267/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4267/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4267/events","html_url":"https://github.com/robotframework/robotframework/issues/4267","id":1165276545,"node_id":"I_kwDOAUSaQ85FdLWB","number":4267,"title":"Use standard `round` instead of our custom `roundup`","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":1,"created_at":"2022-03-10T14:10:32Z","updated_at":"2022-03-11T14:00:46Z","closed_at":"2022-03-10T14:14:29Z","author_association":"MEMBER","active_lock_reason":null,"body":"The main reason we added our custom `roundup` and used it instead of `round` was that it behaved consistently between Python 2 and Python 3. It always rounds half values up (e.g. 0.5 -> 1, 1.5 -> 2) same way as `round` on Python 2 does. On Python 3 `round` uses \"bankers rounding\" algorithm and rounds every second half value down and every second up (e.g. 0.5 -> 0, 1.5 -> 2). There was some merit in using the more familiar rounding algorithm used with Python 2, but the approach used by Python 3 is generally considered better. Using the current Python standard is probably better for us and the built-in `round` is certainly faster.\r\n\r\nAnother reason to use `roundup` was that it preserved the original input type when it didn't remove precision. For example, `roundup(110, -2)` yields `100`, not `100.0`, like `round` with Python 2 does. Python 3 `round` preserves the input type the same way as `roundup` so this isn't a valid reason anymore.\r\n\r\nThis is mostly an internal change, but can naturally affect users if they use keywords doing rounding. For example, `Should Be Equal As Numbers` supports precision that's used for rounding input values before comparison and that is affected. For example, after this change\r\n\r\n```\r\nShould Be Equal As Numbers 135 145 precision=-1\r\n```\r\n\r\nsucceeds because both values are rounded to 140. That's somewhat unfortunate, but I still believe using the same rounding approach Python does is a good idea.\r\n\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4267/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4267/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4266","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4266/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4266/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4266/events","html_url":"https://github.com/robotframework/robotframework/issues/4266","id":1165197020,"node_id":"I_kwDOAUSaQ85Fc37c","number":4266,"title":"Remove deprecated `robot.variables.is_var` and similar functions","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":0,"created_at":"2022-03-10T13:03:39Z","updated_at":"2022-03-11T14:00:46Z","closed_at":"2022-03-10T14:14:28Z","author_association":"MEMBER","active_lock_reason":null,"body":"This is the list of the deprecated and to-be-removed functions in `robot.variables`:\r\n\r\n- `is_var`\r\n- `is_scalar_var`\r\n- `is_list_var`\r\n- `is_dict_var`\r\n- `contains_var`\r\n\r\nNew functions to use instead have exact same names but `var` is changed to `variable`. For example, `is_variable` should be used instead of `is_var`.\r\n\r\nThese functions were deprecated already in RF 3.2 and the deprecation warning was made more loud in RF 4.0. The plan was to remove them already in RF 4.1 but back then they still were preserved. Time to remove them now.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4266/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4266/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4260","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4260/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4260/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4260/events","html_url":"https://github.com/robotframework/robotframework/issues/4260","id":1162654904,"node_id":"I_kwDOAUSaQ85FTLS4","number":4260,"title":"Update README","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110430421,"node_id":"MDU6TGFiZWwxMTA0MzA0MjE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20critical","name":"priority: critical","color":"00441b","default":false,"description":""},{"id":110430429,"node_id":"MDU6TGFiZWwxMTA0MzA0Mjk=","url":"https://api.github.com/repos/robotframework/robotframework/labels/task","name":"task","color":"ededed","default":false,"description":"Generic task not listed in release notes"}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":5,"created_at":"2022-03-08T13:25:29Z","updated_at":"2022-03-21T22:09:38Z","closed_at":"2022-03-21T22:09:37Z","author_association":"MEMBER","active_lock_reason":null,"body":"README needs to be updated now that we support only Python 3 (#3457).","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4260/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4260/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4259","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4259/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4259/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4259/events","html_url":"https://github.com/robotframework/robotframework/issues/4259","id":1162654222,"node_id":"I_kwDOAUSaQ85FTLIO","number":4259,"title":"Update installation instructions","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110430421,"node_id":"MDU6TGFiZWwxMTA0MzA0MjE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20critical","name":"priority: critical","color":"00441b","default":false,"description":""},{"id":110430429,"node_id":"MDU6TGFiZWwxMTA0MzA0Mjk=","url":"https://api.github.com/repos/robotframework/robotframework/labels/task","name":"task","color":"ededed","default":false,"description":"Generic task not listed in release notes"}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":3,"created_at":"2022-03-08T13:24:55Z","updated_at":"2022-03-23T10:21:34Z","closed_at":"2022-03-23T10:21:34Z","author_association":"MEMBER","active_lock_reason":null,"body":"Installations instructions need to basically be rewritten now that we only support Python 3 (#3457).","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4259/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4259/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4257","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4257/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4257/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4257/events","html_url":"https://github.com/robotframework/robotframework/issues/4257","id":1162286875,"node_id":"I_kwDOAUSaQ85FRxcb","number":4257,"title":"Remove Python 2, Jython, IronPython and Java references from User Guide","user":{"login":"rikerfi","id":17685527,"node_id":"MDQ6VXNlcjE3Njg1NTI3","avatar_url":"https://avatars.githubusercontent.com/u/17685527?v=4","gravatar_id":"","url":"https://api.github.com/users/rikerfi","html_url":"https://github.com/rikerfi","followers_url":"https://api.github.com/users/rikerfi/followers","following_url":"https://api.github.com/users/rikerfi/following{/other_user}","gists_url":"https://api.github.com/users/rikerfi/gists{/gist_id}","starred_url":"https://api.github.com/users/rikerfi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rikerfi/subscriptions","organizations_url":"https://api.github.com/users/rikerfi/orgs","repos_url":"https://api.github.com/users/rikerfi/repos","events_url":"https://api.github.com/users/rikerfi/events{/privacy}","received_events_url":"https://api.github.com/users/rikerfi/received_events","type":"User","site_admin":false},"labels":[{"id":110430421,"node_id":"MDU6TGFiZWwxMTA0MzA0MjE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20critical","name":"priority: critical","color":"00441b","default":false,"description":""},{"id":110430429,"node_id":"MDU6TGFiZWwxMTA0MzA0Mjk=","url":"https://api.github.com/repos/robotframework/robotframework/labels/task","name":"task","color":"ededed","default":false,"description":"Generic task not listed in release notes"}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":2,"created_at":"2022-03-08T06:48:57Z","updated_at":"2022-03-22T10:44:31Z","closed_at":"2022-03-22T10:44:31Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"There are examples that are made for python2 but fail python3. See e.g. https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#toc-entry-603 \r\n`raw_input` should go `input` at least 2 examples.\r\n\r\n```\r\n\"\"\"Listener that stops execution if a test fails.\"\"\"\r\n\r\nROBOT_LISTENER_API_VERSION = 3\r\n\r\ndef end_test(data, result):\r\n if not result.passed:\r\n print('Test \"%s\" failed: %s' % (result.name, result.message))\r\n raw_input('Press enter to continue.')\r\n```","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4257/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4257/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4254","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4254/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4254/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4254/events","html_url":"https://github.com/robotframework/robotframework/issues/4254","id":1160381066,"node_id":"I_kwDOAUSaQ85FKgKK","number":4254,"title":"`--flattenkeywords` does not work with tags if keyword does not have documentation","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":1,"created_at":"2022-03-05T15:37:07Z","updated_at":"2022-03-11T14:00:46Z","closed_at":"2022-03-05T17:03:36Z","author_association":"MEMBER","active_lock_reason":null,"body":"For example, `Keyword` in the following example won't be flattened when using `--flattenkeywords tag:flat`. If `[Documentation]` is added to the keyword, flattening works.\r\n\r\n```robotframework\r\n*** Test Cases ***\r\nTest\r\n Keyword\r\n\r\n*** Keywords ***\r\nKeyword\r\n [Tags] flat\r\n Log This is message\r\n```\r\n\r\nThanks @Snooz82 for reporting the problem on Slack.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4254/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4254/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4251","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4251/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4251/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4251/events","html_url":"https://github.com/robotframework/robotframework/issues/4251","id":1159963141,"node_id":"I_kwDOAUSaQ85FI6IF","number":4251,"title":"XML: `pathlib.Path` not properly supported","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":0,"created_at":"2022-03-04T19:14:57Z","updated_at":"2022-03-11T14:00:46Z","closed_at":"2022-03-04T19:26:49Z","author_association":"MEMBER","active_lock_reason":null,"body":"`Parse XML` supports `pathlib.Path` when using the standard ElementTree, not when using lxml. Otherwise parsing files using paths to files doesn't work with `pathlib.Path` at all. Paths used in data are strings so this isn't too severe, but it's possible that other libraries returns paths as `pathlib.Path` objects.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4251/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4251/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4249","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4249/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4249/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4249/events","html_url":"https://github.com/robotframework/robotframework/issues/4249","id":1159485172,"node_id":"I_kwDOAUSaQ85FHFb0","number":4249,"title":"Suites with double underscore at end of filename results in a suite with no name","user":{"login":"d-biehl","id":7069968,"node_id":"MDQ6VXNlcjcwNjk5Njg=","avatar_url":"https://avatars.githubusercontent.com/u/7069968?v=4","gravatar_id":"","url":"https://api.github.com/users/d-biehl","html_url":"https://github.com/d-biehl","followers_url":"https://api.github.com/users/d-biehl/followers","following_url":"https://api.github.com/users/d-biehl/following{/other_user}","gists_url":"https://api.github.com/users/d-biehl/gists{/gist_id}","starred_url":"https://api.github.com/users/d-biehl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/d-biehl/subscriptions","organizations_url":"https://api.github.com/users/d-biehl/orgs","repos_url":"https://api.github.com/users/d-biehl/repos","events_url":"https://api.github.com/users/d-biehl/events{/privacy}","received_events_url":"https://api.github.com/users/d-biehl/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":1,"created_at":"2022-03-04T10:23:49Z","updated_at":"2022-03-11T14:00:45Z","closed_at":"2022-03-04T21:01:21Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"A suite folder or suite file with double underscore at the end of the name, like 'test__.robot' or 'folder__', results in a suite with no name. \r\n\r\nSteps to reproduce:\r\n\r\n- create a new RobotProject\r\n- create a folder with name 'suite__'\r\n- create a file with name 'first__.robot' in folder 'suite__'\r\n- add a simple testcase to file 'first__.robot_ like:\r\n```robotframework\r\n*** Test Cases ***\r\nsimple\r\n Log hello\r\n```\r\n- execute the suite with 'robot .'\r\n\r\nthe resulting output is:\r\n```\r\n==============================================================================\r\nRt1\r\n==============================================================================\r\nRt1.\r\n==============================================================================\r\nRt1..\r\n==============================================================================\r\nfirst | PASS |\r\n------------------------------------------------------------------------------\r\nRt1.. | PASS |\r\n1 test, 1 passed, 0 failed\r\n==============================================================================\r\nRt1. | PASS |\r\n1 test, 1 passed, 0 failed\r\n==============================================================================\r\nRt1 | PASS |\r\n1 test, 1 passed, 0 failed\r\n==============================================================================\r\n```\r\n\r\nI expect that the correct suite names are in there like:\r\nRt1.Suite.First\r\n\r\nAlso the log and report doesn't show the correct suite name.\r\n\r\nI assume that robot suitebuilder thinks, that the suite name is a prefix, see [here] (https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#test-suite-name-and-documentation) for explanations. But I think, if the name after the prefix is empty, it should be handled as a normal name, without a prefix.\r\n\r\nUsed Versions:\r\nRobotFramework 4.1.3 and 5.0 beta 1\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4249/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4249/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4242","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4242/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4242/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4242/events","html_url":"https://github.com/robotframework/robotframework/issues/4242","id":1148265753,"node_id":"I_kwDOAUSaQ85EcSUZ","number":4242,"title":"XML: `Set Elements Text` and other \"plural variants\" do not return modified XML","user":{"login":"msieurtoph","id":7763445,"node_id":"MDQ6VXNlcjc3NjM0NDU=","avatar_url":"https://avatars.githubusercontent.com/u/7763445?v=4","gravatar_id":"","url":"https://api.github.com/users/msieurtoph","html_url":"https://github.com/msieurtoph","followers_url":"https://api.github.com/users/msieurtoph/followers","following_url":"https://api.github.com/users/msieurtoph/following{/other_user}","gists_url":"https://api.github.com/users/msieurtoph/gists{/gist_id}","starred_url":"https://api.github.com/users/msieurtoph/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/msieurtoph/subscriptions","organizations_url":"https://api.github.com/users/msieurtoph/orgs","repos_url":"https://api.github.com/users/msieurtoph/repos","events_url":"https://api.github.com/users/msieurtoph/events{/privacy}","received_events_url":"https://api.github.com/users/msieurtoph/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":3,"created_at":"2022-02-23T15:49:57Z","updated_at":"2022-03-11T14:00:45Z","closed_at":"2022-03-04T18:57:26Z","author_association":"NONE","active_lock_reason":null,"body":"Hi,\r\n\r\nAs the `XML.Get Element`, `XML.Set Element Text` accept `source` to be \"a path to an XML file, a string containing XML, or an already parsed XML element.\"\r\n\r\nAccording to documentation, `XML.Set Elements Text` works like `XML.Set Element Text`.\r\nBut I figured out it ONLY accepts parsed XML. It fails if you supply a path to an XML file.\r\n\r\n\r\nSo you can do \r\n```\r\n ${out} XML.Set Element Text path/to/my/xml text=xxx xpath=//xxx/xxx\r\n```\r\n\r\n\r\nBut you have to do a parse first when using `XML.Set Elements Text`\r\n```\r\n ${xml} XML.Parse Xml path/to/my/xml\r\n ${out} XML.Set Elements Text ${xml} text=xxx xpath=//xxx/*\r\n``` \r\n\r\nIMO, `XML.Set Elements Text` should accept the same inputs as `XML.Set Element Text` or `XML.Get Element` and take the parsing instruction in charge, if needed.\r\n\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4242/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4242/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4240","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4240/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4240/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4240/events","html_url":"https://github.com/robotframework/robotframework/issues/4240","id":1145169275,"node_id":"I_kwDOAUSaQ85EQeV7","number":4240,"title":"Support separating `--pythonpath` items using a semicolon","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":0,"created_at":"2022-02-20T23:40:02Z","updated_at":"2022-03-11T14:00:45Z","closed_at":"2022-02-20T23:47:41Z","author_association":"MEMBER","active_lock_reason":null,"body":"It's already not possible to separate items using a colon like `--pythonpath first:second`. Although the splitting algorithm takes Widows paths using ´:` into account, it would be good to be able to use a semicolon as a separator like `--pythonpath fist;second` as well. We can do it so that if the path contains semicolons, we split using that, and otherwise we use the current algorithm and split from colon.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4240/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4240/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4239","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4239/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4239/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4239/events","html_url":"https://github.com/robotframework/robotframework/issues/4239","id":1145168302,"node_id":"I_kwDOAUSaQ85EQeGu","number":4239,"title":"Handle `--pythonpath` internally as other options","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":121827221,"node_id":"MDU6TGFiZWwxMjE4MjcyMjE=","url":"https://api.github.com/repos/robotframework/robotframework/labels/deprecation","name":"deprecation","color":"fef2c0","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":1,"created_at":"2022-02-20T23:35:41Z","updated_at":"2022-03-11T14:00:44Z","closed_at":"2022-02-20T23:47:40Z","author_association":"MEMBER","active_lock_reason":null,"body":"`--pythonpath` option is handled already by our `ArgumentParser` and it's not passed to `RobotSettings`. Now that we validate options passed to `robot.run/rebot` (#4212), `pythonpath` not being accepted by `RobotSettings` causes problems with Pabot (https://github.com/mkorpela/pabot/issues/450). This problem can be avoided by handling `pythonpath` as other normal options. Instead of processing it already in `ArgumentParser` it should be passed to `RobotSettings` and then later read from there.\r\n\r\nAs part of this change, `auto_pythonpath` argument accepted by `ArgumentParser` needs to be deprecated. `ArgumentParser` resides under `robot.utils` and is thus considered to be part of the public API and removing an option accepted by it would thus be a backwards incompatible change.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4239/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4239/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4235","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4235/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4235/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4235/events","html_url":"https://github.com/robotframework/robotframework/issues/4235","id":1139789328,"node_id":"I_kwDOAUSaQ85D784Q","number":4235,"title":"Update screenshots in User Guide","user":{"login":"rikerfi","id":17685527,"node_id":"MDQ6VXNlcjE3Njg1NTI3","avatar_url":"https://avatars.githubusercontent.com/u/17685527?v=4","gravatar_id":"","url":"https://api.github.com/users/rikerfi","html_url":"https://github.com/rikerfi","followers_url":"https://api.github.com/users/rikerfi/followers","following_url":"https://api.github.com/users/rikerfi/following{/other_user}","gists_url":"https://api.github.com/users/rikerfi/gists{/gist_id}","starred_url":"https://api.github.com/users/rikerfi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rikerfi/subscriptions","organizations_url":"https://api.github.com/users/rikerfi/orgs","repos_url":"https://api.github.com/users/rikerfi/repos","events_url":"https://api.github.com/users/rikerfi/events{/privacy}","received_events_url":"https://api.github.com/users/rikerfi/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""}],"state":"closed","locked":false,"assignee":{"login":"yanne","id":159146,"node_id":"MDQ6VXNlcjE1OTE0Ng==","avatar_url":"https://avatars.githubusercontent.com/u/159146?v=4","gravatar_id":"","url":"https://api.github.com/users/yanne","html_url":"https://github.com/yanne","followers_url":"https://api.github.com/users/yanne/followers","following_url":"https://api.github.com/users/yanne/following{/other_user}","gists_url":"https://api.github.com/users/yanne/gists{/gist_id}","starred_url":"https://api.github.com/users/yanne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yanne/subscriptions","organizations_url":"https://api.github.com/users/yanne/orgs","repos_url":"https://api.github.com/users/yanne/repos","events_url":"https://api.github.com/users/yanne/events{/privacy}","received_events_url":"https://api.github.com/users/yanne/received_events","type":"User","site_admin":false},"assignees":[{"login":"yanne","id":159146,"node_id":"MDQ6VXNlcjE1OTE0Ng==","avatar_url":"https://avatars.githubusercontent.com/u/159146?v=4","gravatar_id":"","url":"https://api.github.com/users/yanne","html_url":"https://github.com/yanne","followers_url":"https://api.github.com/users/yanne/followers","following_url":"https://api.github.com/users/yanne/following{/other_user}","gists_url":"https://api.github.com/users/yanne/gists{/gist_id}","starred_url":"https://api.github.com/users/yanne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yanne/subscriptions","organizations_url":"https://api.github.com/users/yanne/orgs","repos_url":"https://api.github.com/users/yanne/repos","events_url":"https://api.github.com/users/yanne/events{/privacy}","received_events_url":"https://api.github.com/users/yanne/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":3,"created_at":"2022-02-16T09:54:48Z","updated_at":"2022-03-23T08:28:43Z","closed_at":"2022-03-23T08:28:43Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"We should handle `FIXME: new screenshots of report / log.` statement away from the user guide: See: https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#report-file","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4235/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4235/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4232","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4232/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4232/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4232/events","html_url":"https://github.com/robotframework/robotframework/issues/4232","id":1138902699,"node_id":"I_kwDOAUSaQ85D4kar","number":4232,"title":"Remove deprecated `Run Keyword If All Critical Tests Passed` and `Run Keyword If Any Critical Tests Failed` keywords","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":0,"created_at":"2022-02-15T16:11:30Z","updated_at":"2022-03-11T14:00:44Z","closed_at":"2022-02-16T09:32:53Z","author_association":"MEMBER","active_lock_reason":null,"body":"These keywords were deprecated in RF 4.0 when the criticality concept was removed (#3624). Ought to be safe to remove now in RF 5.0.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4232/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4232/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4229","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4229/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4229/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4229/events","html_url":"https://github.com/robotframework/robotframework/issues/4229","id":1135926867,"node_id":"I_kwDOAUSaQ85DtN5T","number":4229,"title":"Add `&{OPTIONS}` to automatic variables to expose command line options","user":{"login":"nicobucher","id":13329240,"node_id":"MDQ6VXNlcjEzMzI5MjQw","avatar_url":"https://avatars.githubusercontent.com/u/13329240?v=4","gravatar_id":"","url":"https://api.github.com/users/nicobucher","html_url":"https://github.com/nicobucher","followers_url":"https://api.github.com/users/nicobucher/followers","following_url":"https://api.github.com/users/nicobucher/following{/other_user}","gists_url":"https://api.github.com/users/nicobucher/gists{/gist_id}","starred_url":"https://api.github.com/users/nicobucher/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nicobucher/subscriptions","organizations_url":"https://api.github.com/users/nicobucher/orgs","repos_url":"https://api.github.com/users/nicobucher/repos","events_url":"https://api.github.com/users/nicobucher/events{/privacy}","received_events_url":"https://api.github.com/users/nicobucher/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""},{"id":911065884,"node_id":"MDU6TGFiZWw5MTEwNjU4ODQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/acknowledge","name":"acknowledge","color":"bc82e0","default":false,"description":"To be acknowledged in release notes"}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":10,"created_at":"2022-02-13T14:24:22Z","updated_at":"2022-03-15T19:22:53Z","closed_at":"2022-03-01T21:07:54Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"It would be beneficial to be able to access command line options like \"exclude tags\" and \"include tags\" from within test cases.\r\n\r\nThis enhancement was sort of already requested in #3255 but this is a more general request.\r\n\r\nAs described also by @pekkaklarck in PR #4052 , a disctionary called \"SETTINGS\" containing these options would be best. Starting off with only exclude and include tags, the number of exposed options can be extended in the future.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4229/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4229/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4226","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4226/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4226/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4226/events","html_url":"https://github.com/robotframework/robotframework/issues/4226","id":1133741817,"node_id":"I_kwDOAUSaQ85Dk4b5","number":4226,"title":"Support importing Python variable files as modules, not only using a path","user":{"login":"JockeJarre","id":12571104,"node_id":"MDQ6VXNlcjEyNTcxMTA0","avatar_url":"https://avatars.githubusercontent.com/u/12571104?v=4","gravatar_id":"","url":"https://api.github.com/users/JockeJarre","html_url":"https://github.com/JockeJarre","followers_url":"https://api.github.com/users/JockeJarre/followers","following_url":"https://api.github.com/users/JockeJarre/following{/other_user}","gists_url":"https://api.github.com/users/JockeJarre/gists{/gist_id}","starred_url":"https://api.github.com/users/JockeJarre/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JockeJarre/subscriptions","organizations_url":"https://api.github.com/users/JockeJarre/orgs","repos_url":"https://api.github.com/users/JockeJarre/repos","events_url":"https://api.github.com/users/JockeJarre/events{/privacy}","received_events_url":"https://api.github.com/users/JockeJarre/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430354,"node_id":"MDU6TGFiZWwxMTA0MzAzNTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20high","name":"priority: high","color":"006d2c","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":3,"created_at":"2022-02-12T09:15:04Z","updated_at":"2022-03-11T14:00:43Z","closed_at":"2022-02-16T10:09:12Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"Normally you would use Python Variable files by adding \".py\" to the ending:\r\n\r\n`Variables PythonModule.py parameters`\r\n\r\nBut it does not allow writing \r\n\r\n`Variables PythonModule parameters`\r\n\r\ninstead you get the error: Variable file \"PythonModule\" does not exist.\r\n\r\nCurrently it is possible to have a Python Variable file without \".py\" when you define a python package with a `__init__.py` file inside.\r\n\r\n`Variables PythonPackage parameters`","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4226/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4226/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4225","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4225/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4225/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4225/events","html_url":"https://github.com/robotframework/robotframework/issues/4225","id":1132465232,"node_id":"I_kwDOAUSaQ85DgAxQ","number":4225,"title":"Better error reporting if whitespace between keywords and arguments is missing","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":219378453,"node_id":"MDU6TGFiZWwyMTkzNzg0NTM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%201","name":"beta 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":2,"created_at":"2022-02-11T11:54:30Z","updated_at":"2022-02-11T13:39:46Z","closed_at":"2022-02-11T12:34:16Z","author_association":"MEMBER","active_lock_reason":null,"body":"A very common problem, especially with new Robot Framework users, is forgetting to have enough whitespace between keyword and arguments like in this example:\r\n```robotframework\r\n*** Test Cases ***\r\nExample\r\n Should Be Equal ${value} expected\r\n```\r\n\r\nIf you run the above test, it fails with this error:\r\n> No keyword with name 'Should Be Equal ${value} expected' found.\r\n\r\nThe error is technically correct but it isn't too helpful. We should detect this situation and provide a better message. For example, something like this:\r\n> No keyword with name 'Should Be Equal ${value} expected' found. Did you try using keyword 'BuiltIn.Should Be Equal' and forgot to use enough whitespace between keyword and arguments?\r\n\r\nDetecting this situation is pretty easy, we can simply look does the used keyword name start with any of the available keywords. There can be false positives, but at least in the common case the error would be a lot better than what we currently have.\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4225/reactions","total_count":2,"+1":2,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4225/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4224","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4224/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4224/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4224/events","html_url":"https://github.com/robotframework/robotframework/issues/4224","id":1130588297,"node_id":"I_kwDOAUSaQ85DY2iJ","number":4224,"title":"Automatic list, tuple, dict and set conversion do not work correctly with all containers","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":219378453,"node_id":"MDU6TGFiZWwyMTkzNzg0NTM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%201","name":"beta 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":0,"created_at":"2022-02-10T18:06:52Z","updated_at":"2022-02-11T12:38:55Z","closed_at":"2022-02-10T18:18:31Z","author_association":"MEMBER","active_lock_reason":null,"body":"According to documentation in the User Guide. list and tuple converters should accept any sequence, dict converters should accept any mapping, and set converters should accept any container. In practice these converters are much stricter. For example, list converter only accepts tuples. We could either update documentation or change code. I believe accepting more generic containers is a good idea so better change the code.\r\n\r\nThis is somewhat similar problem as we have with Boolean converters (#4222). In that case the documentation was changed instead of code. ","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4224/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4224/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4222","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4222/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4222/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4222/events","html_url":"https://github.com/robotframework/robotframework/issues/4222","id":1130411699,"node_id":"I_kwDOAUSaQ85DYLaz","number":4222,"title":"Incorrect documentation for automatic Boolean conversion","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":219378453,"node_id":"MDU6TGFiZWwyMTkzNzg0NTM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%201","name":"beta 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":0,"created_at":"2022-02-10T16:23:38Z","updated_at":"2022-02-11T12:38:55Z","closed_at":"2022-02-10T18:18:31Z","author_association":"MEMBER","active_lock_reason":null,"body":"Documentation in the User Guide tells that Boolean conversion would accept all argument types and that other types than strings would be passed as-is. This isn't true, the converter actually accepts only strings, integers, floats and None. We could pretty easily change the implementation to match documentation, but because nobody as complained about the current behavior I believe it's better to update docs to match the implementation. If there later are concrete needs for supporting all types, both implementation and documentation can be changed.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4222/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4222/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4221","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4221/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4221/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4221/events","html_url":"https://github.com/robotframework/robotframework/issues/4221","id":1128540782,"node_id":"I_kwDOAUSaQ85DRCpu","number":4221,"title":"Argument validation fails in dry-run if arguments contain `&{dict}` variables","user":{"login":"amoxuk","id":26641021,"node_id":"MDQ6VXNlcjI2NjQxMDIx","avatar_url":"https://avatars.githubusercontent.com/u/26641021?v=4","gravatar_id":"","url":"https://api.github.com/users/amoxuk","html_url":"https://github.com/amoxuk","followers_url":"https://api.github.com/users/amoxuk/followers","following_url":"https://api.github.com/users/amoxuk/following{/other_user}","gists_url":"https://api.github.com/users/amoxuk/gists{/gist_id}","starred_url":"https://api.github.com/users/amoxuk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amoxuk/subscriptions","organizations_url":"https://api.github.com/users/amoxuk/orgs","repos_url":"https://api.github.com/users/amoxuk/repos","events_url":"https://api.github.com/users/amoxuk/events{/privacy}","received_events_url":"https://api.github.com/users/amoxuk/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":219378453,"node_id":"MDU6TGFiZWwyMTkzNzg0NTM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%201","name":"beta 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":4,"created_at":"2022-02-09T13:25:02Z","updated_at":"2022-02-11T12:38:55Z","closed_at":"2022-02-10T18:18:30Z","author_association":"NONE","active_lock_reason":null,"body":"a keyword is in a .py file as Variable, like arg.py\nand a keyword is also in a .py file as Library, like xx.py\n\ni want to pass a dict argument to a method.\n\nwhen i use --dryrun, it will be error with `Keyword 'xx.Somkeyword' expected 3 arguments, got 0.\n`.\nwhen i not use --dryrun, it will be success.\n\ni found that when `somkeyword` is in .robot file, this result is also success.\n\narg.py\n```\nsomedict = {\"a\":{\"a1\":{\"a\":\"1\",\"b\":2,\"c\":3}},\"b\":{\"a1\":{\"a\":\"1\",\"b\":2,\"c\":3}},\"c\":{\"a1\":{\"a\":\"1\",\"b\":2,\"c\":3}}}\n\n```\nxx.py\n```\nclass xx:\n def somkeyword(self, a, b, c):\n print(a, b, c)\n```\n\nxx.robot\n```\n*** Settings ***\nSuite Setup some_setup\nLibrary xx.py\nVariables arg.py\n*** Test Cases ***\nsome_case\n log 1\n\n*** Keywords ***\nsome_setup\n FOR ${name} ${val} IN &{somedict}\n somkeyword &{val[\"a1\"]}\n END\n\n```\n\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4221/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4221/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4218","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4218/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4218/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4218/events","html_url":"https://github.com/robotframework/robotframework/issues/4218","id":1125067939,"node_id":"I_kwDOAUSaQ85DDyyj","number":4218,"title":"Libdoc: Include usage information to data types in spec files","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":219378453,"node_id":"MDU6TGFiZWwyMTkzNzg0NTM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%201","name":"beta 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":2,"created_at":"2022-02-06T00:37:45Z","updated_at":"2022-02-11T12:38:54Z","closed_at":"2022-02-06T18:43:27Z","author_association":"MEMBER","active_lock_reason":null,"body":"Libdoc spec files contain information about types used as type hints. Earlier there was only information about enumerations and typed dicts, but RF 5.0 has already added information about custom converters (#4088) and the plan is to add also info about standard converters (#4160). This is handy, but using the information is not so convenient because the information where these data types are actually used isn't directly available.\r\n\r\nLibdoc's HTML output contains somewhat complicated Javascript code to map data types to arguments. Because it does mapping using type names, it doesn't work correctly with extended types. Robot obviously itself knows what arguments map to which types and Libdoc could write this information to spec files. It would both make the information easily available and make sure that the information is correct.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4218/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4218/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4214","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4214/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4214/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4214/events","html_url":"https://github.com/robotframework/robotframework/issues/4214","id":1121615377,"node_id":"I_kwDOAUSaQ85C2n4R","number":4214,"title":"Log: Do not expand `NOT RUN` keywords even if they match `--expandkeywords`","user":{"login":"DirkRichter","id":20930315,"node_id":"MDQ6VXNlcjIwOTMwMzE1","avatar_url":"https://avatars.githubusercontent.com/u/20930315?v=4","gravatar_id":"","url":"https://api.github.com/users/DirkRichter","html_url":"https://github.com/DirkRichter","followers_url":"https://api.github.com/users/DirkRichter/followers","following_url":"https://api.github.com/users/DirkRichter/following{/other_user}","gists_url":"https://api.github.com/users/DirkRichter/gists{/gist_id}","starred_url":"https://api.github.com/users/DirkRichter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DirkRichter/subscriptions","organizations_url":"https://api.github.com/users/DirkRichter/orgs","repos_url":"https://api.github.com/users/DirkRichter/repos","events_url":"https://api.github.com/users/DirkRichter/events{/privacy}","received_events_url":"https://api.github.com/users/DirkRichter/received_events","type":"User","site_admin":false},"labels":[{"id":110013647,"node_id":"MDU6TGFiZWwxMTAwMTM2NDc=","url":"https://api.github.com/repos/robotframework/robotframework/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":219378453,"node_id":"MDU6TGFiZWwyMTkzNzg0NTM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%201","name":"beta 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":8,"created_at":"2022-02-02T07:59:28Z","updated_at":"2022-08-01T08:45:17Z","closed_at":"2022-02-10T23:15:27Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"Using RF 5.0a1 skipped keywords gets expanded. This is a problem for huge logs with many matching skipped keywords and results in browser crash.\r\n\r\n![grafik](https://user-images.githubusercontent.com/20930315/152114894-ef655789-8560-44c5-89a7-89bb2ca1a6c1.png)\r\n","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4214/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4214/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4213","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4213/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4213/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4213/events","html_url":"https://github.com/robotframework/robotframework/issues/4213","id":1119847417,"node_id":"I_kwDOAUSaQ85Cv4P5","number":4213,"title":"`stdout` and `stderr` passed to `robot.run` and `robot.rebot` are ignored if parsing options fails","user":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430514,"node_id":"MDU6TGFiZWwxMTA0MzA1MTQ=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20low","name":"priority: low","color":"41ae76","default":false,"description":""},{"id":219378453,"node_id":"MDU6TGFiZWwyMTkzNzg0NTM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%201","name":"beta 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":1,"created_at":"2022-01-31T19:30:10Z","updated_at":"2022-02-11T12:38:54Z","closed_at":"2022-01-31T19:40:12Z","author_association":"MEMBER","active_lock_reason":null,"body":"For example, using `robot.run(path, loglevel='INVALID', stdout=output, stderr=output)` causes the error to be reported into console, not written into the given custom `output`. In error situations there's no normal output so this in practice only affects `stderr`.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4213/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4213/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4212","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4212/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4212/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4212/events","html_url":"https://github.com/robotframework/robotframework/issues/4212","id":1119770371,"node_id":"I_kwDOAUSaQ85CvlcD","number":4212,"title":"Options passed to `robot.run` and `robot.rebot` are not verified","user":{"login":"oboehmer","id":22439451,"node_id":"MDQ6VXNlcjIyNDM5NDUx","avatar_url":"https://avatars.githubusercontent.com/u/22439451?v=4","gravatar_id":"","url":"https://api.github.com/users/oboehmer","html_url":"https://github.com/oboehmer","followers_url":"https://api.github.com/users/oboehmer/followers","following_url":"https://api.github.com/users/oboehmer/following{/other_user}","gists_url":"https://api.github.com/users/oboehmer/gists{/gist_id}","starred_url":"https://api.github.com/users/oboehmer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oboehmer/subscriptions","organizations_url":"https://api.github.com/users/oboehmer/orgs","repos_url":"https://api.github.com/users/oboehmer/repos","events_url":"https://api.github.com/users/oboehmer/events{/privacy}","received_events_url":"https://api.github.com/users/oboehmer/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":113657783,"node_id":"MDU6TGFiZWwxMTM2NTc3ODM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/backwards%20incompatible","name":"backwards incompatible","color":"fbca04","default":false,"description":""},{"id":219378453,"node_id":"MDU6TGFiZWwyMTkzNzg0NTM=","url":"https://api.github.com/repos/robotframework/robotframework/labels/beta%201","name":"beta 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":3,"created_at":"2022-01-31T18:13:10Z","updated_at":"2022-02-11T12:38:54Z","closed_at":"2022-01-31T19:40:11Z","author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"I noticed that the `run` python API does not verify the optional/extra arguments, it seems to silently ignore them. Is this expected behaviour? \r\n\r\n```\r\n>>> import robot\r\n>>> robot.run('/tmp/test.robot', this_option_is_illegal='bar')\r\n==============================================================================\r\nTest\r\n==============================================================================\r\ntest | PASS |\r\n------------------------------------------------------------------------------\r\nTest | PASS |\r\n1 test, 1 passed, 0 failed\r\n==============================================================================\r\nOutput: /Users/oboehmer/Documents/Test-Automation/robotframework-fork/output.xml\r\nLog: /Users/oboehmer/Documents/Test-Automation/robotframework-fork/log.html\r\nReport: /Users/oboehmer/Documents/Test-Automation/robotframework-fork/report.html\r\n0\r\n>>> robot.run('/tmp/test.robot', this_option_is_illegal='bar', quiet=True)\r\n0\r\n```\r\n\r\nWe have a use case here where we invoke robot runs via a python executable which, after some local initialization stuff, invokes robot via robot.run(...).. So if the user passes extra robot args on the command line, illegal args aren't flagged..","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4212/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4212/timeline","performed_via_github_app":null,"state_reason":"completed","score":1},{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4207","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4207/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4207/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4207/events","html_url":"https://github.com/robotframework/robotframework/issues/4207","id":1117120885,"node_id":"I_kwDOAUSaQ85Clel1","number":4207,"title":"Library keywords accepting embedded arguments cannot be called with `@{list}` and `&{dict}` variables","user":{"login":"yggdr","id":3187282,"node_id":"MDQ6VXNlcjMxODcyODI=","avatar_url":"https://avatars.githubusercontent.com/u/3187282?v=4","gravatar_id":"","url":"https://api.github.com/users/yggdr","html_url":"https://github.com/yggdr","followers_url":"https://api.github.com/users/yggdr/followers","following_url":"https://api.github.com/users/yggdr/following{/other_user}","gists_url":"https://api.github.com/users/yggdr/gists{/gist_id}","starred_url":"https://api.github.com/users/yggdr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yggdr/subscriptions","organizations_url":"https://api.github.com/users/yggdr/orgs","repos_url":"https://api.github.com/users/yggdr/repos","events_url":"https://api.github.com/users/yggdr/events{/privacy}","received_events_url":"https://api.github.com/users/yggdr/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""},{"id":229188865,"node_id":"MDU6TGFiZWwyMjkxODg4NjU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/rc%201","name":"rc 1","color":"ffffff","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/52","html_url":"https://github.com/robotframework/robotframework/milestone/52","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/52/labels","id":5081658,"node_id":"MDk6TWlsZXN0b25lNTA4MTY1OA==","number":52,"title":"v5.0","description":"New major release concentrating on adding new syntax to Robot Framework language: `TRY/EXCEPT` (#3075), `WHILE` (#4084), inline `IF` (#4093), `RETURN` (#4078) as well as `BREAK` and `CONTINUE` (#4079). Another big new enhancement is support for custom argument converters in libraries (#4088). This release will support only Python 3.6 and newer (#3457).\r\n\r\nIssues were prioritized based on the [results of a community survey](https://github.com/pekkaklarck/rf5survey).","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":76,"state":"closed","created_at":"2020-02-07T11:43:19Z","updated_at":"2022-03-23T16:02:27Z","due_on":"2022-03-23T07:00:00Z","closed_at":"2022-03-23T16:02:27Z"},"comments":2,"created_at":"2022-01-28T08:21:24Z","updated_at":"2022-03-22T09:24:26Z","closed_at":"2022-02-15T17:00:55Z","author_association":"NONE","active_lock_reason":null,"body":"As reported here: https://forum.robotframework.org/t/embedded-arguments-with-dictionary-variable-not-working/3145\r\n\r\nIf I define a keyword with embedded variables in python like so:\r\n```\r\n@keyword(name='Some Test \"${var1:[^\"]+}\" Bla \"${var2}\"')\r\ndef some_test(self, var1: str, var2: dict):\r\n ...\r\n```\r\n\r\nThey cannot be called with the syntax `Some Test \"${SOME_VAR}[test][etc]\" Bla \"&{data}\"`. The error it throws is `Keyword 'Some Test […]' expected 2 arguments, got 1.`\r\n\r\nIn the old form where the arguments where not embedded it worked when called with `&{data}`.","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4207/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4207/timeline","performed_via_github_app":null,"state_reason":"completed","score":1}]}},{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/62","html_url":"https://github.com/robotframework/robotframework/milestone/62","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/62/labels","id":7273771,"node_id":"MI_kwDOAUSaQ84Abv0r","number":62,"title":"v4.1.3","description":"Patch release containing fixes for regressions in earlier versions.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":1,"state":"closed","created_at":"2021-10-20T22:18:52Z","updated_at":"2021-12-15T20:15:29Z","due_on":"2021-12-15T08:00:00Z","closed_at":"2021-12-15T20:15:10Z","issues":{"total_count":1,"incomplete_results":false,"items":[{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4124","repository_url":"https://api.github.com/repos/robotframework/robotframework","labels_url":"https://api.github.com/repos/robotframework/robotframework/issues/4124/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/robotframework/issues/4124/comments","events_url":"https://api.github.com/repos/robotframework/robotframework/issues/4124/events","html_url":"https://github.com/robotframework/robotframework/issues/4124","id":1031858922,"node_id":"I_kwDOAUSaQ849gOrq","number":4124,"title":"Errors emitted for unrecognized reST directives outside the robotframework code block, introduced in v4.1.2","user":{"login":"alangefe","id":29665480,"node_id":"MDQ6VXNlcjI5NjY1NDgw","avatar_url":"https://avatars.githubusercontent.com/u/29665480?v=4","gravatar_id":"","url":"https://api.github.com/users/alangefe","html_url":"https://github.com/alangefe","followers_url":"https://api.github.com/users/alangefe/followers","following_url":"https://api.github.com/users/alangefe/following{/other_user}","gists_url":"https://api.github.com/users/alangefe/gists{/gist_id}","starred_url":"https://api.github.com/users/alangefe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alangefe/subscriptions","organizations_url":"https://api.github.com/users/alangefe/orgs","repos_url":"https://api.github.com/users/alangefe/repos","events_url":"https://api.github.com/users/alangefe/events{/privacy}","received_events_url":"https://api.github.com/users/alangefe/received_events","type":"User","site_admin":false},"labels":[{"id":110013645,"node_id":"MDU6TGFiZWwxMTAwMTM2NDU=","url":"https://api.github.com/repos/robotframework/robotframework/labels/bug","name":"bug","color":"d73a4a","default":true,"description":""},{"id":110430378,"node_id":"MDU6TGFiZWwxMTA0MzAzNzg=","url":"https://api.github.com/repos/robotframework/robotframework/labels/priority:%20medium","name":"priority: medium","color":"238b45","default":false,"description":""}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/robotframework/robotframework/milestones/62","html_url":"https://github.com/robotframework/robotframework/milestone/62","labels_url":"https://api.github.com/repos/robotframework/robotframework/milestones/62/labels","id":7273771,"node_id":"MI_kwDOAUSaQ84Abv0r","number":62,"title":"v4.1.3","description":"Patch release containing fixes for regressions in earlier versions.","creator":{"login":"pekkaklarck","id":114985,"node_id":"MDQ6VXNlcjExNDk4NQ==","avatar_url":"https://avatars.githubusercontent.com/u/114985?v=4","gravatar_id":"","url":"https://api.github.com/users/pekkaklarck","html_url":"https://github.com/pekkaklarck","followers_url":"https://api.github.com/users/pekkaklarck/followers","following_url":"https://api.github.com/users/pekkaklarck/following{/other_user}","gists_url":"https://api.github.com/users/pekkaklarck/gists{/gist_id}","starred_url":"https://api.github.com/users/pekkaklarck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pekkaklarck/subscriptions","organizations_url":"https://api.github.com/users/pekkaklarck/orgs","repos_url":"https://api.github.com/users/pekkaklarck/repos","events_url":"https://api.github.com/users/pekkaklarck/events{/privacy}","received_events_url":"https://api.github.com/users/pekkaklarck/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":1,"state":"closed","created_at":"2021-10-20T22:18:52Z","updated_at":"2021-12-15T20:15:29Z","due_on":"2021-12-15T08:00:00Z","closed_at":"2021-12-15T20:15:10Z"},"comments":6,"created_at":"2021-10-20T21:49:14Z","updated_at":"2021-12-15T18:37:24Z","closed_at":"2021-12-15T18:37:24Z","author_association":"NONE","active_lock_reason":null,"body":"# Bug description\r\n\r\n`robot` is now emitting errors for unrecognized reST directives beginning in v4.1.2, even though the directives are not inside the `robotframework` code block. The errors do not cause the `robot` process to fail, but they do clutter up the console.\r\n\r\nThis issue was introduced by the changes in #4085 . In v4.1.1, these errors did not appear.\r\n\r\n# Reproduction\r\n\r\nUse the following sample reST file:\r\n\r\n```\r\n.. highlight:: robotframework\r\n\r\n===========\r\nSample Test\r\n===========\r\n\r\n.. contents::\r\n :local:\r\n\r\nOverview\r\n========\r\n\r\nThis is a sample test case.\r\n\r\nTests\r\n=====\r\n\r\n.. code:: robotframework\r\n\r\n *** Test Cases ***\r\n Sample Test Case\r\n No Operation\r\n```\r\n\r\nRun it using `robot sample.rst`.\r\n\r\n## Expected output\r\n\r\n```\r\n==============================================================================\r\nSample \r\n==============================================================================\r\nSample Test Case | PASS |\r\n------------------------------------------------------------------------------\r\nSample | PASS |\r\n1 test, 1 passed, 0 failed\r\n==============================================================================\r\nOutput: /output.xml\r\nLog: /log.html\r\nReport: /report.html\r\n```\r\n\r\n## Actual output\r\n\r\n```\r\n/sample.rst:1: (ERROR/3) Error in \"highlight\" directive:\r\nno content permitted.\r\n\r\n.. highlight:: robotframework\r\n\r\n/sample.rst:7: (ERROR/3) Error in \"contents\" directive:\r\nno content permitted.\r\n\r\n.. contents::\r\n :local:\r\n\r\n==============================================================================\r\nSample \r\n==============================================================================\r\nSample Test Case | PASS |\r\n------------------------------------------------------------------------------\r\nSample | PASS |\r\n1 test, 1 passed, 0 failed\r\n==============================================================================\r\nOutput: /output.xml\r\nLog: /log.html\r\nReport: /report.html\r\n```\r\n\r\n# Version tested\r\nRobot Framework 4.1.2 (Python 3.7.10 on linux)\r\ndocutils 0.17.1","reactions":{"url":"https://api.github.com/repos/robotframework/robotframework/issues/4124/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/robotframework/robotframework/issues/4124/timeline","performed_via_github_app":null,"state_reason":"completed","score":1}]}}] \ No newline at end of file diff --git a/docs/livedata/stars.js b/docs/livedata/stars.js index 8197a5c2e..0f74a2c8d 100644 --- a/docs/livedata/stars.js +++ b/docs/livedata/stars.js @@ -1 +1 @@ -[{"name":"serhatbolsu/robotframework-appiumlibrary","stars":369},{"name":"MarketSquare/robotframework-archivelibrary","stars":22},{"name":"nokia/robotframework-autoitlibrary","stars":32},{"name":"sebastianciupinski/robotframework-autorecorder","stars":6},{"name":"MarketSquare/robotframework-browser","stars":425},{"name":"eficode/robotframework-cnclibrary","stars":12},{"name":"robooo/robotframework-ConfluentKafkaLibrary","stars":28},{"name":"Openwide-Ingenierie/robotframework-can-uds-library","stars":32},{"name":"MarketSquare/robotframework-dblibrary","stars":11},{"name":"MarketSquare/Robotframework-Database-Library","stars":141},{"name":"Snooz82/robotframework-datadriver","stars":113},{"name":"xyb/robotframework-debuglibrary","stars":99},{"name":"mentalisttraceur/robotframework-dependencylibrary","stars":11},{"name":"MarketSquare/robotframework-difflibrary","stars":23},{"name":"kitconcept/robotframework-djangolibrary","stars":37},{"name":"manykarim/robotframework-doctestlibrary","stars":39},{"name":"sebastianciupinski/robotframework-doesislibrary","stars":1},{"name":"lcarbonn/robotframework-eclipselibrary","stars":8},{"name":"kowalpy/Robot-Framework-FTP-Library","stars":7},{"name":"MarketSquare/robotframework-requests","stars":454},{"name":"MarketSquare/robotframework-httprequestlibrary","stars":21},{"name":"eficode/robotframework-imagehorizonlibrary","stars":71},{"name":"eficode/JavaFXLibrary","stars":21},{"name":"madworx/robotframework-kicadlibrary","stars":7},{"name":"sebastianciupinski/robotframework-listenerlibrary","stars":3},{"name":"Altran-PT-GDC/Robot-Framework-Mainframe-3270-Library","stars":39},{"name":"randomsync/robotframework-mqttlibrary","stars":23},{"name":"qahive/robotframework-puppeteer","stars":51},{"name":"qentinelqi/qweb","stars":35},{"name":"robotframework/Rammbock","stars":60},{"name":"robotframework/remoteswinglibrary","stars":31},{"name":"asyrjasalo/RESTinstance","stars":192},{"name":"guykisel/robotframework-faker","stars":62},{"name":"GDATASoftwareAG/robotframework-flaui","stars":47},{"name":"robocorp/rpaframework","stars":901},{"name":"frankvanderkuur/robotframework-sapguilibrary","stars":46},{"name":"rticau/ScreenCapLibrary","stars":37},{"name":"MarketSquare/robotframework-seleniumscreenshots","stars":11},{"name":"robotframework/SeleniumLibrary","stars":1288},{"name":"MarketSquare/robotframework-seleniumlibrary-java","stars":23},{"name":"rainmanwy/robotframework-SikuliLibrary","stars":136},{"name":"Altran-PT-GDC/Robot-Framework-SOAP-Library","stars":18},{"name":"robotframework/SSHLibrary","stars":142},{"name":"robotframework/SwingLibrary","stars":109},{"name":"Altran-PT-GDC/Robot-Framework-Test-FX-Library","stars":19},{"name":"kowalpy/Robot-Framework-TFTP-Library","stars":3},{"name":"Adwisit/WADLibrary","stars":18},{"name":"Accruent/robotframework-zoomba","stars":137},{"name":"robotframework/PythonLibCore","stars":55},{"name":"robotframework/JavalibCore","stars":42},{"name":"robotframework/RemoteApplications","stars":12},{"name":"plone/plone.app.robotframework","stars":11},{"name":"Tesena-smart-testing/WatchUI","stars":51},{"name":"robotframework/RIDE","stars":908},{"name":"wingyplus/language-robot-framework","stars":26},{"name":"boakley/brackets-robotframework","stars":20},{"name":"d-biehl/robotcode","stars":74},{"name":"sakari/robot-mode","stars":30},{"name":"vkosuri/gedit-robot","stars":0},{"name":"vkosuri/npp-robot","stars":31},{"name":"nokia/RED","stars":341},{"name":"andriyko/sublime-robot-framework-assistant","stars":110},{"name":"shellderp/sublime-robot-plugin","stars":26},{"name":"mfukar/robotframework-vim","stars":89},{"name":"jenkinsci/robot-plugin","stars":59},{"name":"robotframework/MavenPlugin","stars":24},{"name":"lcarbonn/robotframework-ant","stars":3},{"name":"robotframework/DbBot","stars":58},{"name":"rajeevnaikte/distbot","stars":21},{"name":"robotframework/mabot","stars":12},{"name":"eficode/robotframework-oxygen","stars":21},{"name":"mkorpela/pabot","stars":442},{"name":"robocorp/rcc","stars":388},{"name":"robotframework/rfdoc","stars":14},{"name":"damies13/rfswarm","stars":84},{"name":"sohwendy/Robotcorder","stars":83},{"name":"boakley/robotframework-hub","stars":167},{"name":"MarketSquare/robotframework-robocop","stars":161},{"name":"elabit/robotmk","stars":51},{"name":"robotframework/statuschecker","stars":24},{"name":"jg8481/leon","stars":2},{"name":"damies13/TestDataTable","stars":7}] \ No newline at end of file +[{"name":"serhatbolsu/robotframework-appiumlibrary","stars":314},{"name":"MarketSquare/robotframework-archivelibrary","stars":21},{"name":"nokia/robotframework-autoitlibrary","stars":25},{"name":"sebastianciupinski/robotframework-autorecorder","stars":4},{"name":"MarketSquare/robotframework-browser","stars":307},{"name":"eficode/robotframework-cnclibrary","stars":10},{"name":"robooo/robotframework-ConfluentKafkaLibrary","stars":18},{"name":"Openwide-Ingenierie/robotframework-can-uds-library","stars":25},{"name":"MarketSquare/robotframework-dblibrary","stars":9},{"name":"franz-see/Robotframework-Database-Library","stars":123},{"name":"Snooz82/robotframework-datadriver","stars":84},{"name":"xyb/robotframework-debuglibrary","stars":94},{"name":"mentalisttraceur/robotframework-dependencylibrary","stars":7},{"name":"MarketSquare/robotframework-difflibrary","stars":23},{"name":"kitconcept/robotframework-djangolibrary","stars":35},{"name":"manykarim/robotframework-doctestlibrary","stars":25},{"name":"sebastianciupinski/robotframework-doesislibrary","stars":0},{"name":"lcarbonn/robotframework-eclipselibrary","stars":6},{"name":"kowalpy/Robot-Framework-FTP-Library","stars":6},{"name":"MarketSquare/robotframework-requests","stars":407},{"name":"MarketSquare/robotframework-httprequestlibrary","stars":19},{"name":"eficode/robotframework-imagehorizonlibrary","stars":69},{"name":"eficode/JavaFXLibrary","stars":19},{"name":"madworx/robotframework-kicadlibrary","stars":5},{"name":"sebastianciupinski/robotframework-listenerlibrary","stars":1},{"name":"Altran-PT-GDC/Robot-Framework-Mainframe-3270-Library","stars":32},{"name":"randomsync/robotframework-mqttlibrary","stars":18},{"name":"qahive/robotframework-puppeteer","stars":37},{"name":"qentinelqi/qweb","stars":29},{"name":"robotframework/Rammbock","stars":55},{"name":"robotframework/remoteswinglibrary","stars":26},{"name":"asyrjasalo/RESTinstance","stars":176},{"name":"guykisel/robotframework-faker","stars":51},{"name":"GDATASoftwareAG/robotframework-flaui","stars":31},{"name":"frankvanderkuur/robotframework-sapguilibrary","stars":33},{"name":"rticau/ScreenCapLibrary","stars":33},{"name":"MarketSquare/robotframework-seleniumscreenshots","stars":9},{"name":"robotframework/SeleniumLibrary","stars":1145},{"name":"MarketSquare/robotframework-seleniumlibrary-java","stars":22},{"name":"rainmanwy/robotframework-SikuliLibrary","stars":119},{"name":"Altran-PT-GDC/Robot-Framework-SOAP-Library","stars":12},{"name":"robotframework/SSHLibrary","stars":118},{"name":"robotframework/SwingLibrary","stars":96},{"name":"Altran-PT-GDC/Robot-Framework-Test-FX-Library","stars":18},{"name":"kowalpy/Robot-Framework-TFTP-Library","stars":2},{"name":"Adwisit/WADLibrary","stars":16},{"name":"Accruent/robotframework-zoomba","stars":118},{"name":"robotframework/PythonLibCore","stars":39},{"name":"robotframework/JavalibCore","stars":43},{"name":"robotframework/RemoteApplications","stars":11},{"name":"plone/plone.app.robotframework","stars":9},{"name":"Tesena-smart-testing/WatchUI","stars":30},{"name":"robotframework/RIDE","stars":825},{"name":"wingyplus/language-robot-framework","stars":26},{"name":"boakley/brackets-robotframework","stars":20},{"name":"NitorCreations/RobotFramework-EclipseIDE","stars":68},{"name":"d-biehl/robotcode","stars":33},{"name":"sakari/robot-mode","stars":28},{"name":"vkosuri/gedit-robot","stars":0},{"name":"vkosuri/npp-robot","stars":29},{"name":"nokia/RED","stars":332},{"name":"andriyko/sublime-robot-framework-assistant","stars":109},{"name":"shellderp/sublime-robot-plugin","stars":27},{"name":"mfukar/robotframework-vim","stars":87},{"name":"jenkinsci/robot-plugin","stars":56},{"name":"robotframework/MavenPlugin","stars":23},{"name":"lcarbonn/robotframework-ant","stars":3},{"name":"robotframework/DbBot","stars":54},{"name":"rajeevnaikte/distbot","stars":14},{"name":"robotframework/mabot","stars":8},{"name":"eficode/robotframework-oxygen","stars":17},{"name":"mkorpela/pabot","stars":395},{"name":"robocorp/rcc","stars":277},{"name":"robotframework/rfdoc","stars":13},{"name":"damies13/rfswarm","stars":68},{"name":"sohwendy/Robotcorder","stars":80},{"name":"boakley/robotframework-hub","stars":160},{"name":"MarketSquare/robotframework-robocop","stars":121},{"name":"simonmeggle/robotmk","stars":46},{"name":"robotframework/statuschecker","stars":23},{"name":"jg8481/leon","stars":2},{"name":"damies13/TestDataTable","stars":7}] \ No newline at end of file diff --git a/src/views/Foundation.vue b/src/views/Foundation.vue index 7a7e013a8..146406f81 100644 --- a/src/views/Foundation.vue +++ b/src/views/Foundation.vue @@ -2,14 +2,6 @@
-
-
- - - - Robot Framework Foundation is going to TestCon - come say hi! -
-