Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp1243228pxb; Fri, 21 Jan 2022 13:11:24 -0800 (PST) X-Google-Smtp-Source: ABdhPJxefGP2ySZ3QpYmlRQO95e+4U23/ox1rQE99GQmRAlkyqZvXBrdiOTqsJEQww9o4IDJ028R X-Received: by 2002:a63:33cd:: with SMTP id z196mr4104513pgz.78.1642799484336; Fri, 21 Jan 2022 13:11:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1642799484; cv=none; d=google.com; s=arc-20160816; b=GiL2T7kMZkwZ8tP99bE1CwQvTr6k7xSGG1MqvritHEFhUT/hlJgwbwch+otjEZG8bt uvHvm75vkU9mW1OZVy3rb3+h4wyCsL3oLgUDp8g7ZvbJTr1NHAL7D834f8FBtddzwtQE frwA/5UDczG5dSwV1a6reKuTUWuw+Tqo5TcKmsMlnqo9BdpAeNgcZYwGu77zWlWLxLCL MyHhoNuCgUhNpP9eQFmxaIuuKe8Ndo7caQn+bAqzY1/eZoZVhowYxSmBjiQj24E9zbRR +OzWKzwU1gMd2DbONIyPm9HUN852SQNEyjwdz1yyl6toe+LOHe8pkK+8a6m4CuzHBkAX //Lg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=f598GxBX3eYMMeExQx/Xgejk6SKcvZUYFtg4erPpbmA=; b=miVQwdQ5oPnYV3jE28n8Az/Ii+P4b0MhWWXxQslcbBEC/Hpgcu8/WApwRosutcYWKT RCsruKo6BIzeG/M8kpPtp4MUDmC8fMfegmDg8Be4PgDQIrBI7SVSRHAz+gz62hCaTeBg IwsV/CtMznwTvGKxgmh+9FS25KCcNxlaL/uJTknb0lFNfJMniw08cipoYig9ir7W8QBv qFV4e3HQAtbRNtqbO9I2jgJhDsgeEyYpZ7PRXZjLziJetHdtoRVaBki86UyzSOUxzVDE fKoX+tnfSsIQR+RWJ7vToF0uGHS7d5P9zlwCdJ6RDpsu2HGcOnKKkJjrqJ7EIB1f13AF yWKQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=AYhSOili; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id p20si6801420plq.541.2022.01.21.13.11.12; Fri, 21 Jan 2022 13:11:24 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=AYhSOili; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1359265AbiATIa4 (ORCPT + 99 others); Thu, 20 Jan 2022 03:30:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33746 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1359269AbiATIaM (ORCPT ); Thu, 20 Jan 2022 03:30:12 -0500 Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com [IPv6:2a00:1450:4864:20::335]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EF1A2C061753 for ; Thu, 20 Jan 2022 00:30:11 -0800 (PST) Received: by mail-wm1-x335.google.com with SMTP id v123so10356103wme.2 for ; Thu, 20 Jan 2022 00:30:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=f598GxBX3eYMMeExQx/Xgejk6SKcvZUYFtg4erPpbmA=; b=AYhSOilisYtm5Kva53WYknZU/cP0nBLrKX+D5I5wa60go1JcqjfG8boGZx7MEqCG4n H1AIzJNsNFhkvcg0e+v0rIbxV0bskcFjv6KOCcbshPSdC7Ihq1JnTnsEIL+Bgmw1UcpQ uiM3A6/GFcOMq0lUwFIhluvY64B1n1khk8pw2h5P/jXNjCiqhfwjARf+zF5ibOQgLK/j SLM6S4eCuBTOCdBRRM63jLCRXDyBX5dN0XASh7COboD4KOCpJgZ3oqxjO+63IdrWzILZ YluFiNt7Fo453BO2lkxMdzKejEe7sfE01xg8/t7tuj/gGhhBJzPtkLKOR2qV93/YRRA+ D3cA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=f598GxBX3eYMMeExQx/Xgejk6SKcvZUYFtg4erPpbmA=; b=lJ7y5WVu8eKXJNvLOks5RmaoMwb6IHQjai4trfQA/ef7ng7grYTX7+q8hkpfbS/4gx +sCZktFlgqs3eN7ggztfKQDUw71l9p1r4gAltf1S7V9GQwRCmO1T2O2sIJPYn5j4kmr1 YZbketWx8JXJfM8X5Q4yLvWS6n9+rDFLDfS17tJML7CizBavL0MerbMd6D79mDrIGltB 36ElA68/GU3rJpSg3m3iXw/KNoEtROOiF8JiRnhMSiHOM8KZE9q4VaInBXWoACiW56sE Zcx7zve4o863uY0OuKKWaXfr5WzALPcUPAhUBolALtdNi+6zJBPGue2lh4cSwaRsKsNQ VuwQ== X-Gm-Message-State: AOAM530E/o9AAERyizRE0SADVAOdw826T7SPNQIh0vlS+oCHA6lB2ISr pHv0JJQZITdClCyU24crDVVZeUQuaoVKtck5jCdLKg== X-Received: by 2002:a05:600c:28cc:: with SMTP id h12mr7749968wmd.18.1642667410465; Thu, 20 Jan 2022 00:30:10 -0800 (PST) MIME-Version: 1.0 References: <20220118190922.1557074-1-dlatypov@google.com> <20220118190922.1557074-4-dlatypov@google.com> In-Reply-To: <20220118190922.1557074-4-dlatypov@google.com> From: David Gow Date: Thu, 20 Jan 2022 16:29:59 +0800 Message-ID: Subject: Re: [PATCH 4/5] kunit: tool: drop last uses of collections.namedtuple To: Daniel Latypov Cc: Brendan Higgins , Linux Kernel Mailing List , KUnit Development , "open list:KERNEL SELFTEST FRAMEWORK" , Shuah Khan Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jan 19, 2022 at 3:09 AM Daniel Latypov wrote: > > Since we formally require python3.7+ since commit df4b0807ca1a > ("kunit: tool: Assert the version requirement"), we can just use > @dataclasses.dataclass instead. > > In kunit_config.py, we used namedtuple to create a hashable type that > had `name` and `value` fields and had to subclass it to define a custom > `__str__()`. > @datalcass lets us just define one type instead. > > In qemu_config.py, we use namedtuple to allow modules to define various > parameters. Using @dataclass, we can add type-annotations for all these > fields, making our code more typesafe and making it easier for users to > figure out how to define new configs. > > Signed-off-by: Daniel Latypov > --- This seems sensible, and the type-annotations are definitely a good thing. I guess I'm going to have to learn how to use @dataclass, though... Reviewed-by: David Gow -- David > tools/testing/kunit/kunit_config.py | 9 +++++---- > tools/testing/kunit/qemu_config.py | 17 ++++++++++------- > 2 files changed, 15 insertions(+), 11 deletions(-) > > diff --git a/tools/testing/kunit/kunit_config.py b/tools/testing/kunit/kunit_config.py > index 677354546156..ca33e4b7bcc5 100644 > --- a/tools/testing/kunit/kunit_config.py > +++ b/tools/testing/kunit/kunit_config.py > @@ -6,16 +6,17 @@ > # Author: Felix Guo > # Author: Brendan Higgins > > -import collections > +from dataclasses import dataclass > import re > from typing import List, Set > > CONFIG_IS_NOT_SET_PATTERN = r'^# CONFIG_(\w+) is not set$' > CONFIG_PATTERN = r'^CONFIG_(\w+)=(\S+|".*")$' > > -KconfigEntryBase = collections.namedtuple('KconfigEntryBase', ['name', 'value']) > - > -class KconfigEntry(KconfigEntryBase): > +@dataclass(frozen=True) > +class KconfigEntry: > + name: str > + value: str > > def __str__(self) -> str: > if self.value == 'n': > diff --git a/tools/testing/kunit/qemu_config.py b/tools/testing/kunit/qemu_config.py > index 1672f6184e95..0b6a80398ccc 100644 > --- a/tools/testing/kunit/qemu_config.py > +++ b/tools/testing/kunit/qemu_config.py > @@ -5,12 +5,15 @@ > # Copyright (C) 2021, Google LLC. > # Author: Brendan Higgins > > -from collections import namedtuple > +from dataclasses import dataclass > +from typing import List > > > -QemuArchParams = namedtuple('QemuArchParams', ['linux_arch', > - 'kconfig', > - 'qemu_arch', > - 'kernel_path', > - 'kernel_command_line', > - 'extra_qemu_params']) > +@dataclass(frozen=True) > +class QemuArchParams: > + linux_arch: str > + kconfig: str > + qemu_arch: str > + kernel_path: str > + kernel_command_line: str > + extra_qemu_params: List[str] > -- > 2.34.1.703.g22d0c6ccf7-goog >