From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id 85q/AiiXyWgb2wYAWB0awg (envelope-from ) for ; Tue, 16 Sep 2025 12:58:16 -0400 Authentication-Results: simark.ca; dkim=fail reason="signature verification failed" (768-bit key; unprotected) header.d=tromey.com header.i=@tromey.com header.a=rsa-sha256 header.s=default header.b=EPkvMGRB; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id EC87C1E0BA; Tue, 16 Sep 2025 12:58:15 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_INVALID,DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 06B731E04C for ; Tue, 16 Sep 2025 12:58:15 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id BA2E93857359 for ; Tue, 16 Sep 2025 16:58:13 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org BA2E93857359 Authentication-Results: sourceware.org; dkim=fail reason="signature verification failed" (768-bit key, unprotected) header.d=tromey.com header.i=@tromey.com header.a=rsa-sha256 header.s=default header.b=EPkvMGRB Received: from omta36.uswest2.a.cloudfilter.net (omta36.uswest2.a.cloudfilter.net [35.89.44.35]) by sourceware.org (Postfix) with ESMTPS id A10343857400 for ; Tue, 16 Sep 2025 16:56:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A10343857400 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=tromey.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=tromey.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org A10343857400 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=35.89.44.35 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1758041795; cv=none; b=gkiGjgvkR29aOgbiLcn0af79MSsoJBxAadX1IE17A6JQMqEpZXOq7ms4sh7Y4VcLj2A0ob0mvnMT198gsy9dGX6pjPa1ERYet//yjdN6Q4H08LBYxIgxbnv6CIVFtG+I7Yqa9HnHVfdM2PtqDbr/VtHNSKFHU97o2bF+Goqph0I= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1758041795; c=relaxed/simple; bh=rmk+c1RGOP3bHiQ03UbhgTjXo7DOdte96HRaqoi72Rs=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=ctTQJ8R2rnAFq3OdLFGxNjAElmSnw6v9JsJTQbbNufFBeezHH9VCDMqHuk6gd1fbl0/M2+ptH7Z2n4CzRiu1rHZpRhylPrWExy2KQZ8Vj510ygpqqJkCzQaSBBvKjMbr8njP1YrUdkHYILtvQ3AGCRfYJF3jqH3+/VHzPrtevYs= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A10343857400 Received: from eig-obgw-6006b.ext.cloudfilter.net ([10.0.30.211]) by cmsmtp with ESMTPS id yWh3uO7tTjzfwyYyouJuAU; Tue, 16 Sep 2025 16:56:34 +0000 Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with ESMTPS id yYyou2zTzvVWHyYyouw1sM; Tue, 16 Sep 2025 16:56:34 +0000 X-Authority-Analysis: v=2.4 cv=erTfzppX c=1 sm=1 tr=0 ts=68c996c2 a=ApxJNpeYhEAb1aAlGBBbmA==:117 a=ApxJNpeYhEAb1aAlGBBbmA==:17 a=yJojWOMRYYMA:10 a=ItBw4LHWJt0A:10 a=20KFwNOVAAAA:8 a=Q3pg3Ac4SxxdMuxGcL0A:9 a=VS4QxaUSPT0UtbFnIvSC:22 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To :Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=si3n0n83K4bZPLkYUkmVS0yAhanX/5hpsvMP0EJ/0BI=; b=EPkvMGRBjzHXX0MIEQtQUMeI6K IvuHV3kYvK68Nw5+q529fO+BZUCjADkvY8wyz2s00VEGzHMatDP0VueveleWYyhAZ1uBicmjfKZ8W fvls6wnbQ36RU5GJVmlLaX4Mc; Received: from 97-122-110-68.hlrn.qwest.net ([97.122.110.68]:47558 helo=bapiya) by box5379.bluehost.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.1) (envelope-from ) id 1uyYyn-00000001LE3-2ql4; Tue, 16 Sep 2025 10:56:33 -0600 From: Tom Tromey To: Andrew Burgess Cc: gdb-patches@sourceware.org, Eli Zaretskii Subject: Re: [PATCHv8 3/3] gdb/python: extend gdb.write to support styled output In-Reply-To: <31de42bf45326efa2c5a58bdb96c831923971ab1.1756294307.git.aburgess@redhat.com> (Andrew Burgess's message of "Wed, 27 Aug 2025 12:34:12 +0100") References: <31de42bf45326efa2c5a58bdb96c831923971ab1.1756294307.git.aburgess@redhat.com> X-Attribution: Tom Date: Tue, 16 Sep 2025 10:56:33 -0600 Message-ID: <87ikhil4ji.fsf@tromey.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - box5379.bluehost.com X-AntiAbuse: Original Domain - sourceware.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - tromey.com X-BWhitelist: no X-Source-IP: 97.122.110.68 X-Source-L: No X-Exim-ID: 1uyYyn-00000001LE3-2ql4 X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: 97-122-110-68.hlrn.qwest.net (bapiya) [97.122.110.68]:47558 X-Source-Auth: tom+tromey.com X-Email-Count: 11 X-Org: HG=bhshared;ORG=bluehost; X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes X-CMAE-Envelope: MS4xfCjPkN9ZEt5MXGhs8D6dVSFiBjeaE2FxQ+Wxr0Y0WYqiA4ksTU5vlhX/6lOGILIAwTuXEr2xdnSE1VIbp22tRanhnevwXa2OItYJtuI5q100NLZir1G9 7Keb61hxJlHR4SK60mp34e1lR27RgVHc8gslpjZJhnDRH/3m4O6eqOnTghqD2UleYS0CEYdgc630f1wHeZJcahbHkNvdctNhRpI= X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org >>>>> "Andrew" == Andrew Burgess writes: Andrew> Using gdb.write with a style object more closely matches how GDB Andrew> handles styling internally, and has the benefit that the user doesn't Andrew> need to remember to restore the default style when they are done. I'm mildly meh on this one since I tend to think users should use print and that gdb.write is an implementation detail. But since it exists... Andrew> + return PyObject_TypeCheck (obj, &style_object_type); Andrew> +/* See python-internal.h. */ Andrew> + Andrew> +std::optional Andrew> +gdbpy_style_object_to_ui_file_style (PyObject *obj) Andrew> +{ Andrew> + gdb_assert (obj != nullptr); Andrew> + if (!gdbpy_is_style (obj)) Andrew> + { Andrew> + PyErr_Format Andrew> + (PyExc_TypeError, _("argument must be a gdb.Style object, not %s."), Andrew> + Py_TYPE (obj)->tp_name); Andrew> + return {}; Andrew> + } Andrew> + Andrew> + style_object *style_obj = (style_object *) obj; Andrew> + return stylepy_to_style (style_obj); Andrew> + if (!gdb_PyArg_ParseTupleAndKeywords (args, kw, "s|iO", keywords, &arg, Andrew> + &stream_type, &style_obj)) Andrew> + return nullptr; Andrew> + Andrew> + if (style_obj != Py_None && !gdbpy_is_style (style_obj)) Andrew> + { Andrew> + PyErr_Format Andrew> + (PyExc_TypeError, Andrew> + _("'style' argument must be gdb.Style or None, not %s."), Andrew> + Py_TYPE (style_obj)->tp_name); Andrew> + return nullptr; FWIW if the type object is available there's a way to get Python to do this bit when parsing the arguments. This explicit check is fine too, but it seems to me that this is redundant with the check that gdbpy_style_object_to_ui_file_style does and so this could just delegate to that. Tom