From nobody Sun Feb 8 20:35:53 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1623097333; cv=none; d=zohomail.com; s=zohoarc; b=fB+pU3FDF898A8cz4YowwLZiu12WFn6hsJiOQNY7KruSppdpqDg1+xwgqBytwNw08duf5FIrRldOO9IXu8crcCZf8emWdlma+ngbuMSxy1PJagbHibpasDP9/3fENBMWAmXQ6a2lqsfvZffkrszIXpjUgJv0qe82ZiaaUhIoQbM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623097333; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=6I1ffH67Oby/X5z1JMtzleyrDhl2w0HdTScRKZu2wHk=; b=AwAdknuV9nX2a98SpShA1bruZbTXwjan7hSTqCSDJ24OgJECceYdEc/krAnrd7KpxEsKh9eLKQoSzdvyvrq288RMQFGEAe4z4ccFle4L0tcy+1cCmVi+yfHvtQpD0lqK8RM+M7es4rFWUDOupAN5sU0o+eN9StVroTDenuGvANA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623097333466967.1125764140068; Mon, 7 Jun 2021 13:22:13 -0700 (PDT) Received: from localhost ([::1]:52824 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lqLlE-0000bZ-85 for importer@patchew.org; Mon, 07 Jun 2021 16:22:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37794) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lqLXE-0004SR-FA for qemu-devel@nongnu.org; Mon, 07 Jun 2021 16:07:44 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:39062) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lqLWy-0006YF-OM for qemu-devel@nongnu.org; Mon, 07 Jun 2021 16:07:43 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-481-hpqAkDckMUWLXq2LGbK_EA-1; Mon, 07 Jun 2021 16:07:24 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 0A6FB19251CE; Mon, 7 Jun 2021 20:07:17 +0000 (UTC) Received: from scv.redhat.com (ovpn-116-137.rdu2.redhat.com [10.10.116.137]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4EC055C1C2; Mon, 7 Jun 2021 20:07:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1623096448; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6I1ffH67Oby/X5z1JMtzleyrDhl2w0HdTScRKZu2wHk=; b=ctLrRs7lfquP7Pg5MLS7Ng5i/KlzHJ9ZLKj1ghuLhvfZepTk0H82HMo9S7BwDwDjOoEeuT yNxPTdcS5I+GS56p4DaBoCZKViZ6MzRrccW4OBQAAkYst/2S2lmsituoE1uVsnrcCw09Nj 2MrANXUivtu4lqizDVKUTDvG+cDJ+5Y= X-MC-Unique: hpqAkDckMUWLXq2LGbK_EA-1 From: John Snow To: qemu-devel@nongnu.org Subject: [PATCH 23/42] scripts/qmp-shell: Fix "FuzzyJSON" parser Date: Mon, 7 Jun 2021 16:06:30 -0400 Message-Id: <20210607200649.1840382-24-jsnow@redhat.com> In-Reply-To: <20210607200649.1840382-1-jsnow@redhat.com> References: <20210607200649.1840382-1-jsnow@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jsnow@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -29 X-Spam_score: -3.0 X-Spam_bar: --- X-Spam_report: (-3.0 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.2, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Niteesh G . S ." , Cleber Rosa , John Snow , Markus Armbruster , Eduardo Habkost Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" I'm not sure when this regressed (Or maybe if it was ever working right to begin with?), but the Python AST requires you to change "Names" to "Constants" in order to truly convert `false` to `False`. Signed-off-by: John Snow --- scripts/qmp/qmp-shell | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/scripts/qmp/qmp-shell b/scripts/qmp/qmp-shell index aa148517a8..847d34890f 100755 --- a/scripts/qmp/qmp-shell +++ b/scripts/qmp/qmp-shell @@ -95,18 +95,19 @@ class QMPShellError(Exception): class FuzzyJSON(ast.NodeTransformer): """ This extension of ast.NodeTransformer filters literal "true/false/null" - values in an AST and replaces them by proper "True/False/None" values = that - Python can properly evaluate. + values in a Python AST and replaces them by proper "True/False/None" v= alues + that Python can properly evaluate. """ =20 @classmethod - def visit_Name(cls, node): # pylint: disable=3Dinvalid-name + def visit_Name(cls, # pylint: disable=3Dinvalid-name + node: ast.Name) -> ast.AST: if node.id =3D=3D 'true': - node.id =3D 'True' + return ast.Constant(value=3DTrue) if node.id =3D=3D 'false': - node.id =3D 'False' + return ast.Constant(value=3DFalse) if node.id =3D=3D 'null': - node.id =3D 'None' + return ast.Constant(value=3DNone) return node =20 =20 @@ -174,10 +175,9 @@ class QMPShell(qmp.QEMUMonitorProtocol): # Try once again as FuzzyJSON: try: tree =3D ast.parse(val, mode=3D'eval') - return ast.literal_eval(FuzzyJSON().visit(tree)) - except SyntaxError: - pass - except ValueError: + transformed =3D FuzzyJSON().visit(tree) + return ast.literal_eval(transformed) + except (SyntaxError, ValueError): pass return val =20 --=20 2.31.1