From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Sun, 16 Feb 2025 09:18:39 +0100 X-Sieve: CMU Sieve 2.4 Received: from mail-lj1-f185.google.com (mail-lj1-f185.google.com [209.85.208.185]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 51G8IcLb014046 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Sun, 16 Feb 2025 09:18:38 +0100 Received: by mail-lj1-f185.google.com with SMTP id 38308e7fff4ca-30925cb0253sf6752101fa.3 for ; Sun, 16 Feb 2025 00:18:38 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1739693913; cv=pass; d=google.com; s=arc-20240605; b=aPDKhN+CwaNchWrbd7tz/QoOSWXVe9odkW97PsHhwS4M8Ws3gVLpvyrdvMY1tWgly5 sBczH1MVl1FT0Rtbi+twqnSGDT681ddtIOI3TgL4R9iuCcnLsjdNV/AupMy7KVlO5E/u 2TCXG7UxQkFFwvi8n4/g2n93LVxa3feFXSGZsQYiEWa5dlOcEQF6ju1N4bmtMIG31cil rdryoLlreQFD5ap7lOgJ42xKyc9vZplc+1R74pelFI1uwJqgueRPN3iYpLRpY/yYFrvA EBt+kxhuIbqeCHGokquFlim843zejIUkQa0PWQagOXI2eEnCzoJ8bbjMVmvUz3n6No++ y1qQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:mime-version:user-agent :content-transfer-encoding:autocrypt:references:in-reply-to:date:to :from:subject:message-id:sender:dkim-signature; bh=sMh8mDC90mNnKQafQ/W4pYqhbnAdW/0ekrsfS+zPOyg=; fh=trxlSWLA3rO1PW/4YXHgXKR6bSviZj0kIPWxEHazkHw=; b=EwDpPMPZdS9cGnui1uHvIpkBfUmD7s1ILvayV/HkQJnkIueNqiQN/EZp/z2aAt931A J/Q0V9INn5RihOeRknbzVD+u81R7Xd4l9RtLAPMX9PT40dQah10OHlNm0IrSBpQIbTSx PYTTMiPpZ+tUNcKDqwR0384NyFyca/nUEnriv7b7BM0olr22W89KsDO6Q84tNXZSUuhx t9OGcbE4Y7PyduReC3JBgKPgHFMlA/T5oNASoxxLMTfE3LtbaK4RX7b5X9Ma3/Wsu3H8 S1YAx9jHgKx5FSzUBUrc3PKHq9Hqct92Xzh6aWnOQ52ip1rtJCNORXUd4PEgCcfy9int OX4Q==; darn=ilbers.de ARC-Authentication-Results: i=2; gmr-mx.google.com; spf=pass (google.com: domain of ubely@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=ubely@ilbers.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20230601; t=1739693913; x=1740298713; darn=ilbers.de; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:user-agent:content-transfer-encoding :autocrypt:references:in-reply-to:date:to:from:subject:message-id :sender:from:to:cc:subject:date:message-id:reply-to; bh=sMh8mDC90mNnKQafQ/W4pYqhbnAdW/0ekrsfS+zPOyg=; b=KzVk0ENxKS/TzuPMZ3y/kXZvoYSBtUi2MyDKHnU2TaZjUguW30PVEKVl1Rt7uxlJ+P 20gpg3wDue8pRNNwmcA8t5g7CDhlQJ2ugF8Ck7/Hk+ei1hGbwjTrh2OUx68XUvKjZ4jX wy/GhcjEpIhawa7K3tbA8I7LTLb9unbgSWV3fwQF4hRWrQ3PC9giYYzaJUdWZhjUryLF nNqOmCe0YbEpAV7b2XoKe+HN2e5up7AbONE/vnzp6JUiXummmeHWT6YVPd5ixjMiPLpx 8a0xxiphNG4SCDCJYZ5LxlWx/7cJM+dNozfZ57CWxVdoyW5Q7zbGBdun8PU9qiKRSVyv Qvpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739693913; x=1740298713; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :user-agent:content-transfer-encoding:autocrypt:references :in-reply-to:date:to:from:subject:message-id:x-beenthere :x-gm-message-state:sender:from:to:cc:subject:date:message-id :reply-to; bh=sMh8mDC90mNnKQafQ/W4pYqhbnAdW/0ekrsfS+zPOyg=; b=a80JTogcnuD3SqAvjLGEWH5Bmn3tKDu25budDVCZ0VtsN8MhesKvDY+kVHmlBhVvQw gTGuwjktby18bexJGKJA5qWlSfqBpPpRAK4GXkEGnU8fGFMxW2uLJrv3hl9orrskJ4dC ZFg2rlvJxf5uRyopN/Qp2ZTjv38aa2HgqGDV4BUs6o3MDXahY4FHrNq7+BzsFD8FIQ49 5XwwAsv7khOgW+xyugoPKzfl6H7HOyajYxoLlTDIHSwAgMhu96nEi5fyMasLjSe0/+E4 PlYkPGyKY7vmnspN7xoSZBHkN2/LZuO5hPifbYdbFo4OdTLNdnKejXoSjjBBp35q+h7i 9qjQ== Sender: isar-users@googlegroups.com X-Forwarded-Encrypted: i=2; AJvYcCWSL1rGhxWRlDiUePaeF9uXf0zFt1dOTb83dFE77JzToEMMtXCfTAujCIWI3zDT69KSUmbn@ilbers.de X-Gm-Message-State: AOJu0Yx0X2gD/SzFih8Ow9MZx75mV0gCI1XaXvQiHh1BP3fQ63dn+yZS fGBiqrGeYTNfXIFWlOwTKOv4pPlu3wMmvilFzm8sYsw42o7vUuST X-Google-Smtp-Source: AGHT+IG6A90ZBrE+vCFJZw4hx4a474IPZvznvU1Yk/2D/TERdT6xwTqRXbdc/g/vntxPB0V6QpMpTg== X-Received: by 2002:a2e:9084:0:b0:308:ef73:523a with SMTP id 38308e7fff4ca-30927b01a1cmr13065201fa.36.1739693912242; Sun, 16 Feb 2025 00:18:32 -0800 (PST) X-BeenThere: isar-users@googlegroups.com; h=Adn5yVEDjIzf+utrWOn+f1yZMJOq4Fmg6mLIzl1e3tVLSHkpEg== Received: by 2002:a2e:a589:0:b0:308:fa0a:7083 with SMTP id 38308e7fff4ca-3090e141da3ls3073671fa.1.-pod-prod-01-eu; Sun, 16 Feb 2025 00:18:29 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCUW9NnyrEbVpygTyENY94x7tU1uHWcOlPVXBcCkUBg+0n7yp6+kDHhQ6XRRdJKdeW9Bp+xA3NAXhuze@googlegroups.com X-Received: by 2002:a2e:9b8d:0:b0:308:eb34:1037 with SMTP id 38308e7fff4ca-30927ad667cmr15071221fa.23.1739693909341; Sun, 16 Feb 2025 00:18:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1739693909; cv=none; d=google.com; s=arc-20240605; b=afrXYGKI7LaBCjTp45fU+1YRTMYWsIbAG7gI1WHjuvaJhUrz2L2TSdAtijgnbEzTu4 h8c+l12GzUzDtvq5Y+tr45oYUFkKnsxyT87L5v6cAQ1eZPD+ZLBIjKY0lLR9menq5G09 fPHU8mtLic1oLnqZVZYsCJkYRNw8C+v3CgmCc9zeHUTZqIA9+Pli111QQSFoGBMgdWPh WDFf/HG8WS8Sz+CksftTOHv6Roa3Km133a9Un7udkNTo4AnFIylVOQawSqCtMs44FjEc KTiuMf7rtbgVg5opnd4E2DF9XGdy/Iw14n08EYxS4IXt0xQdH5B/1V1usfWrHkuOlQNK PnnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=mime-version:user-agent:content-transfer-encoding:autocrypt :references:in-reply-to:date:to:from:subject:message-id; bh=illtrVB70Cexlf4VTlLvn8s441cPnb/Ly51dtNNkz8c=; fh=jbYBnisNYSJvRlbHg/ujTMhygJ4x63rwn8SYi3Sx8Qw=; b=cemrawAQx0pfo6P7MPUCv5M23oCaDLJnxRxIGNanccbTDjsVbdS/bJ3BJsmjR5dfFF 7sXOfpfPioh7RW9uUQ9ZTG1zCvj4uTMIAzwdvofVU0g7cr0FytmfGSRnGRmwJ6PpQ/sG K0UftQ0i4Kx5oD2wTMlUUT+gncSdtESr0V7me9BuqOdbYf2qUGfuK0Z0usErArn1W9R1 cY8ELUJkIhG9zWc0UMeAlwJPEKyiarp6rz3uxgdtLCztPrLTydgUx/yf/ZRg+Ae7eqZT CYIWR+FFuWqp5eNZ1a0Kbzod0KlkdvOo36pQWsD8o7+O8nl5wTW1mWcZwNJv6ddSmtQz zeTA==; dara=google.com ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of ubely@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=ubely@ilbers.de Received: from shymkent.ilbers.de (shymkent.ilbers.de. [85.214.156.166]) by gmr-mx.google.com with ESMTPS id 38308e7fff4ca-3092ace042bsi668261fa.0.2025.02.16.00.18.29 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 16 Feb 2025 00:18:29 -0800 (PST) Received-SPF: pass (google.com: domain of ubely@ilbers.de designates 85.214.156.166 as permitted sender) client-ip=85.214.156.166; Received: from [IPv6:::1] (host-80-81-17-52.static.customer.m-online.net [80.81.17.52]) (authenticated bits=0) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPSA id 51G8IQC7014037 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sun, 16 Feb 2025 09:18:27 +0100 Message-ID: Subject: Re: [PATCHv4 1/3] lists.bbclass: add class From: Uladzimir Bely To: chris.larson@siemens.com, isar-users@googlegroups.com Date: Sun, 16 Feb 2025 11:18:26 +0300 In-Reply-To: <20250213214200.296-1-chris.larson@siemens.com> References: <20250213214200.296-1-chris.larson@siemens.com> Autocrypt: addr=ubely@ilbers.de; prefer-encrypt=mutual; keydata=mQENBGO2eUkBCACtT+T3OrPVSExBmqfgXT3lp9XcdxRzjYp26wezkgYjjBXaf36bxtaAf S471VoQtpar0RVeFfW7WDDdfX9ZclSj36zBQe+RVSJzoNoNQfjOXWuSHb5Z+cpAFtqBY4muxK4+ia IlLJd6CN3ejOsLHATtCeHHq8wi0z2T+KdLQO+wQRgo2hjj0Lp9pGTrKJry50HP/o7Vbdu14dOx2xq r8+wPc6SQbBIrcqaa4MqCQC00vQG7eXvo+k2MOw59FDdpMH0KR9mHgp3u/s4I+4YRBArukt9G9xz/ rsEFmxAIBC6N/a6Hzwg4puc91n7ABDsPg8Vp+X3MDraujN0dvR6OKVNtABEBAAG0IFVsYWR6aW1pc iBCZWx5IDx1YmVseUBpbGJlcnMuZGU+iQFOBBMBCAA4FiEEJqPNVhVGyk12Eh+PAUQYBM/2FkoFAm O2eUkCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQAUQYBM/2FkprlAgAmuna8Hm9EyoEtTl DBGDg6Zm4ZLp5ffvZBE946h92jepDrteoxsJ7pSzJVC2HmDLa4iZUao7lLLbDsUj5x45/iLJcqBZK k3YnAxP2r6a+kI+1VVQY1pxdG1nlJAbdNzoojm/qmezNPSrqni61KVMQKsXBCWhIjSXDSM9CsBj21 a+9qaVqfxovJGTn9lgrZO+xzKQNMKZeOouJlscVuFj21P0ww3/YENiU/nMeTSuYypO76mDtAd08Jo nc3yuHa9MJGei5ixN3wT+IrGR2aL2hdw2M6NgH7sYbL2Zi4ugD6RXHJai1Bh2yvFSVqSQ+M6QOInT 4ud7wslm1XRB065dXtA== Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.54.3 (by Flathub.org) MIME-Version: 1.0 X-Spam-Status: No, score=-4.6 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2, RCVD_IN_RP_CERTIFIED,RCVD_IN_RP_RNBL,RCVD_IN_RP_SAFE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shymkent.ilbers.de X-Original-Sender: ubely@ilbers.de X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of ubely@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=ubely@ilbers.de Precedence: list Mailing-list: list isar-users@googlegroups.com; contact isar-users+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: isar-users@googlegroups.com X-Google-Group-Id: 914930254986 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-TUID: SdgvWY+LS/mj On Thu, 2025-02-13 at 14:41 -0700, chris.larson via isar-users wrote: > From: Christopher Larson >=20 > This class provides functions to improve the functionality of bitbake > list variables. >=20 > - Add the ability to remove items from a list variable without using > :remove. > - Add the ability for a list item to imply the addition of other list > items. >=20 > Usage requires either adding the variable name to LIST_VARIABLES, or > manually > adding a :remove and a :prepend to each fully supported list > variable. >=20 > To remove items from a configured list, simply append the item to be > removed > to the variable with a '-' or '~' prefix. For example, to remove > 'alpha' from > a configured variable, append '-alpha' to it. >=20 > To support implied list items, create a mapping of items to be > appended to > the variable when a specific item is present. For example, to append > 'beta' > to ROOTFS_FEATURES when 'alpha' is present, configure ROOTFS_FEATURES > as such, > then set IMPLIED_ROOTFS_FEATURES[alpha] =3D "beta". >=20 > Signed-off-by: Christopher Larson > --- > =C2=A0meta/classes/lists.bbclass | 105 > +++++++++++++++++++++++++++++++++++++ > =C2=A01 file changed, 105 insertions(+) > =C2=A0create mode 100644 meta/classes/lists.bbclass >=20 > diff --git a/meta/classes/lists.bbclass b/meta/classes/lists.bbclass > new file mode 100644 > index 00000000..db8f5837 > --- /dev/null > +++ b/meta/classes/lists.bbclass > @@ -0,0 +1,105 @@ > +# Functions to improve the functionality of bitbake list variables. > +# > +# - Add the ability to remove items from a list variable without > using :remove. > +# - Add the ability for a list item to imply the addition of other > list items. > +# > + > +# Usage requires either adding the variable name to LIST_VARIABLES, > or manually > +# adding a :remove and a :prepend to each fully supported list > variable. > +# > +# To remove items from a configured list, simply append the item to > be removed > +# to the variable with a '-' or '~' prefix. For example, to remove > 'alpha' from > +# ROOTFS_FEATURES, add '-alpha' to ROOTFS_FEATURES. > +# > +# To support implied list items, create a mapping of items to be > appended to > +# the variable when a specific item is present. For example, to > append 'beta' > +# to ROOTFS_FEATURES when 'alpha' is present, configure > ROOTFS_FEATURES as such, > +# then set IMPLIED_ROOTFS_FEATURES[alpha] =3D "beta". > +# > +# Boilerplate example: > +# > +#=C2=A0=C2=A0 # Either this: > +#=C2=A0=C2=A0 LIST_VARIABLES +=3D "ROOTFS_FEATURES" > +# > +#=C2=A0=C2=A0 # Or this: > +#=C2=A0=C2=A0 ROOTFS_FEATURES:remove =3D > "${@remove_prefixed_items('ROOTFS_FEATURES', d)}" > +#=C2=A0=C2=A0 ROOTFS_FEATURES:prepend =3D > "${@add_implied_items('ROOTFS_FEATURES', 'IMPLIED_ROOTFS_FEATURES', > d)} " > +# > +# Usage example: > +# > +#=C2=A0=C2=A0 # ROOTFS_FEATURES will be "beta alpha" if the following > configuration is used: > +#=C2=A0=C2=A0 IMPLIED_ROOTFS_FEATURES[alpha] =3D "beta" > +#=C2=A0=C2=A0 ROOTFS_FEATURES +=3D "alpha" > +# > +#=C2=A0=C2=A0 # ROOTFS_FEATURES will be "first" if the following configu= ration > is used: > +#=C2=A0=C2=A0 ROOTFS_FEATURES =3D "first second" > +#=C2=A0=C2=A0 ROOTFS_FEATURES +=3D "-second" > + > +python enable_list_variables() { > +=C2=A0=C2=A0=C2=A0 """Enable list variable functionality.""" > +=C2=A0=C2=A0=C2=A0 for variable in d.getVar("LIST_VARIABLES").split(): > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 d.setVar(variable + ':remove'= , ' > ${@remove_prefixed_items("%s", d)}' % variable) > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 d.setVar(variable + ':prepend= ', '${@add_implied_items("%s", > "IMPLIED_%s", d)} ' % (variable, variable)) > +} > +enable_list_variables[eventmask] =3D "bb.event.ConfigParsed" > +addhandler enable_list_variables > + > +def remove_prefixed_items(var, d): > +=C2=A0=C2=A0=C2=A0 """Return the items to be removed from var with :remo= ve. > + > +=C2=A0=C2=A0=C2=A0 This function is intended to be used in a :remove han= dler to > remove > +=C2=A0=C2=A0=C2=A0 items from a variable. It will interpret items prefix= ed with a > '-' > +=C2=A0=C2=A0=C2=A0 or '~' as items to be removed. > +=C2=A0=C2=A0=C2=A0 """ > +=C2=A0=C2=A0=C2=A0 # Use a flag to avoid infinite recursion. > +=C2=A0=C2=A0=C2=A0 if d.getVarFlag(var, 'remove_prefixed_items_internal'= ) =3D=3D '1': > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return '' > + > +=C2=A0=C2=A0=C2=A0 from collections import Counter > + > +=C2=A0=C2=A0=C2=A0 d.setVarFlag(var, 'remove_prefixed_items_internal', '= 1') > +=C2=A0=C2=A0=C2=A0 try: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 value =3D d.getVar(var) > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 counter =3D Counter() > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 for v in value.split(): > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if v.= startswith('-') or v.startswith('~'): > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 counter[v[1:]] -=3D 1 > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 counter[v] -=3D 1 > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 else: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 counter[v] +=3D 1 > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return ' '.join(v for v, c in= counter.items() if c < 1) > +=C2=A0=C2=A0=C2=A0 finally: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 d.delVarFlag(var, 'remove_pre= fixed_items_internal') > + > + > +def add_implied_items(var, implied_var, d): > +=C2=A0=C2=A0=C2=A0 """Return the items to be appended due to the presenc= e of other > items in var. > + > +=C2=A0=C2=A0=C2=A0 This function is intended to be used in a :append han= dler to > append > +=C2=A0=C2=A0=C2=A0 items from a variable. It will rely on the supplied m= apping of > implied items > +=C2=A0=C2=A0=C2=A0 to append the corresponding items. > +=C2=A0=C2=A0=C2=A0 """ > +=C2=A0=C2=A0=C2=A0 # Use a flag to avoid infinite recursion. > +=C2=A0=C2=A0=C2=A0 if d.getVarFlag(var, 'add_implied_items_internal') = =3D=3D '1': > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return '' > + > +=C2=A0=C2=A0=C2=A0 def implied_items(item, implied_mapping, d, seen=3DNo= ne): > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 """Return the implied items f= or a given item.""" > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if seen is None: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 seen = =3D set() > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if item in seen: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 retur= n '' > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 seen.add(item) > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 implied =3D implied_mapping.g= et(item, '').split() > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return ' '.join(implied + [im= plied_items(f, implied_mapping, > d, seen) for f in implied]) > + > +=C2=A0=C2=A0=C2=A0 d.setVarFlag(var, 'add_implied_items_internal', '1') > +=C2=A0=C2=A0=C2=A0 try: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 value =3D d.getVar(var) > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 implied_mapping =3D d.getVarF= lags(implied_var) > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if implied_mapping is None: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 retur= n '' > + > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return ' '.join(implied_items= (f, implied_mapping, d) for f > in value.split()) > +=C2=A0=C2=A0=C2=A0 finally: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 d.delVarFlag(var, 'add_implie= d_items_internal') > --=20 > 2.47.1 >=20 Applied to next, thanks. --=20 Best regards, Uladzimir. --=20 You received this message because you are subscribed to the Google Groups "= isar-users" group. To unsubscribe from this group and stop receiving emails from it, send an e= mail to isar-users+unsubscribe@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/isar-users/= ae8ec6856188ef8d12531a83013362993b766ee6.camel%40ilbers.de.