From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id uj34HyXDqmkKwxgAWB0awg (envelope-from ) for ; Fri, 06 Mar 2026 07:05:57 -0500 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=O0RqERI2; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=O0RqERI2; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 6A6B41E0DD; Fri, 06 Mar 2026 07:05:57 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,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 vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (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 9369F1E08D for ; Fri, 06 Mar 2026 07:05:56 -0500 (EST) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 53F164BA23F1 for ; Fri, 6 Mar 2026 12:05:55 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 53F164BA23F1 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=O0RqERI2; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=O0RqERI2 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013035.outbound.protection.outlook.com [52.101.83.35]) by sourceware.org (Postfix) with ESMTPS id B152C4BA23E8 for ; Fri, 6 Mar 2026 12:04:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B152C4BA23E8 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org B152C4BA23E8 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=52.101.83.35 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1772798696; cv=pass; b=vB66yaHc5PNPuf1nq+i+Mgqjbr0TJ5wmB3baA9pksMhQmBjRJB/XNURJ+rsSQE/VyqhrrZKdOsSjYPzs9UBIAXH1SfEFqsmMMHk31f7miXSzHnrpcXhrsQL6fEi0+9PbmFxy9eYYeBHeJWX1Pi3QRH4ZA89oFI6gZecx3+Zfq3c= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1772798696; c=relaxed/simple; bh=drKkSm/5X1SdNn83nLGas9fTVBJtsUlMRI93ZrbNxo4=; h=DKIM-Signature:DKIM-Signature:Message-ID:Date:Subject:To:From: MIME-Version; b=NsU76FpXoZEuFBgwO4IwPfOA+dj/VNYxbes2Qt0L4opK+KMJAgiPRXtiai3VSF3/dN+hUX+i5qg8MYNusCEC8iG4ov36bPFuYrK2tLt6Zt+oRLK9qfEMgfqb25JRQNel2JcCMjivrx/FcO8MI6JLy2OfEeTiOFgWJSCQibemqRQ= ARC-Authentication-Results: i=3; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B152C4BA23E8 ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=mlzwS3AjanhbMHlMPCtdCVvYCjUw4h5/Xgsrd2wcbywTxyxgv+dnR4SEXbfoIPsriaYZYGcCAzDEqGgms/SLedHcgKt+SHW9r8a8VDWaDMUq34spFQk4jJdrbtTDqUnyQeELokiBAJvu3kRhJEy98c9XzCMivgegzB798hGetYUe26rZjtMQ91DFkoaD5mmFMc4kuhSPD7MOXUh5VUMOHieDFQqPKMPEWi8JRNCC51mOEm7ISf07Rs4Ck2IYe/Vu8h2GsadjxlzVnHb5BXSfeZDrxRTBzM2ZpsUcxMGjvyVT1QAftjjSd+Jfo99nkMIU5lGVv6bG/xC/JRKC/nsNKg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ClRfcX5SZ394aUp9eTIOXHj8Vx3jCxhZtBwJkyp/xF4=; b=AIasLYH8YVUvZ4/lcQZqHUkpQK6WI93NGEIKqxqrRGz5Tym2XOKYfdpxhlVgsowOphTSFWCL/VJPcdjqq5jQcgkbPwU7QlUz5CaLORj+IQfFv2rMc8kFFg0/jF/exSicJ+5ISTnMT4Rs4lvU8uJ5UCJHEW/r8FTpjEYX5JwV8llpNPPvRjSsLJFjl39hxqJWyVoJ22fFuelJg1PXwyi3u08odIUcvwttSE2pi9YFTbHIP8WjmaltKquMo/7GgA6HeO30eK2ds0OX2OXmjTSo5DHhl00GYFZvtPzzMw6xTEVSJblF28Mq9rc6ZBNci1kIoK8KF5HsrhgnsizdblP8ag== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=tromey.com smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ClRfcX5SZ394aUp9eTIOXHj8Vx3jCxhZtBwJkyp/xF4=; b=O0RqERI2ixo2I5zXJRU3y+LxZWIYz9qN4w9zk08v+FPH+EBVK5LY5szg1To24AscYtteiwdP2f5IrxHpFk6VIO8uvc3J+63KG+ofycoErJ3PStseIeRznVuQIUu2J3TOjNY2gN7Knc1WyHG7mXWCrEPRMc2C2qLV111Q2MxZLa0= Received: from AS4P251CA0015.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:5d2::17) by AMBPR08MB11617.eurprd08.prod.outlook.com (2603:10a6:20b:736::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9678.17; Fri, 6 Mar 2026 12:04:42 +0000 Received: from AMS0EPF000001AC.eurprd05.prod.outlook.com (2603:10a6:20b:5d2:cafe::e9) by AS4P251CA0015.outlook.office365.com (2603:10a6:20b:5d2::17) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9678.19 via Frontend Transport; Fri, 6 Mar 2026 12:04:42 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by AMS0EPF000001AC.mail.protection.outlook.com (10.167.16.152) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9678.18 via Frontend Transport; Fri, 6 Mar 2026 12:04:41 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=sstL5dUVaMr2ygNRwgZq6ngXac4abYhzs/mP0+mJeY3bi53EMQgevHeeSwBEd2UX0yATSWTd0cUkk2KTId/3kNy3Xsvwf2hvLFmXogNUbBcXNVxw7p0xHuYmAkdV2u5SF3Nt9tdU9p5OnMv+pf1XJ5XVbqPwHB3NlACjlDuWhUIIwfp6Gnphbdd/7tZOo5YRXKExqZkReISje8wYITlPBCXT+KAjHU/gbmAtj3aVM5utI3Fxc7Yqngf3ihWr+LGNTv/V+qjvXC5h8u4VXqAnP3YMFswfRM/eRPynAUo7DLPklbBl7TR6nFf64QIMaVb+hQiBcZNl+wOMIq9oFXSTWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ClRfcX5SZ394aUp9eTIOXHj8Vx3jCxhZtBwJkyp/xF4=; b=c851+usIEy0RmMsVkYS0+k0cb0SOJ5xeg80+1+JPezcs0b0DtO2uabzLc69MXt0IAFtr2bp+Fscu53KmTYJNqnRMmutdwKFmH1/qmb1BXuw5XdXBPjZRwLGaRf/ooAvHRTzqhDzz21Ds01f4A1wUBqdWesxlsbgFsomqoTSBV5O2RXEfd0PQif3DrL5Ok9sigHSau5HbvzBVmjvSK3NqBHMVAXxqESQPYD6+ZsAPvZ+UeqyI3HHxVujQny2Q+cg3vcTl7uOkma3bU2RROwNQI494O1N3pHgUGXJa3OrRpVuythL6ZYLUiJQ/S8dXthSDvDpAwaaa0lC3d8Y+VQJclw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ClRfcX5SZ394aUp9eTIOXHj8Vx3jCxhZtBwJkyp/xF4=; b=O0RqERI2ixo2I5zXJRU3y+LxZWIYz9qN4w9zk08v+FPH+EBVK5LY5szg1To24AscYtteiwdP2f5IrxHpFk6VIO8uvc3J+63KG+ofycoErJ3PStseIeRznVuQIUu2J3TOjNY2gN7Knc1WyHG7mXWCrEPRMc2C2qLV111Q2MxZLa0= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from DB3PR08MB9010.eurprd08.prod.outlook.com (2603:10a6:10:42b::8) by VI0PR08MB11479.eurprd08.prod.outlook.com (2603:10a6:800:2ff::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.22; Fri, 6 Mar 2026 12:03:39 +0000 Received: from DB3PR08MB9010.eurprd08.prod.outlook.com ([fe80::f37c:c9c2:6d9a:9543]) by DB3PR08MB9010.eurprd08.prod.outlook.com ([fe80::f37c:c9c2:6d9a:9543%5]) with mapi id 15.20.9678.017; Fri, 6 Mar 2026 12:03:39 +0000 Message-ID: <45f50ab7-c1c8-4626-ba90-08b6f854ba6d@arm.com> Date: Fri, 6 Mar 2026 12:03:38 +0000 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 8/9] gdb/python: add gdbpy_dict_wrapper:allocate_dict helper To: Tom Tromey Cc: gdb-patches@sourceware.org References: <20260303161659.397427-1-matthieu.longo@arm.com> <20260303161659.397427-9-matthieu.longo@arm.com> <87bjh4rcja.fsf@tromey.com> Content-Language: en-US From: Matthieu Longo In-Reply-To: <87bjh4rcja.fsf@tromey.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LO4P123CA0403.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:189::12) To DB3PR08MB9010.eurprd08.prod.outlook.com (2603:10a6:10:42b::8) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: DB3PR08MB9010:EE_|VI0PR08MB11479:EE_|AMS0EPF000001AC:EE_|AMBPR08MB11617:EE_ X-MS-Office365-Filtering-Correlation-Id: b7aa5d7f-f826-4187-18f3-08de7b788ca4 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info-Original: g/SM0YH1HiNBM9zoFMz227gFiHDFcx3iCVyw+Tdd8Vuf6rB17Ah7u9p02Z+YNOGAiF4CIPfXPM8xNYWDugxi6nAT6bvAnYyhiQzBxvu4eqL7sV5gZNFbgglXondmX/j1MBva1TE2NYkUKLz3Nd8/sgRcaTbpYBwYXrnYrjmJPlB9fSP6vxVdrC2urPRC5VKsujTgBna3jxuvEOibcqrPmiXnF6G5JsPfhYxV8i0Jq+7LcG7F6xfzlXpBba7KhkLwK/bEYrFn4fV0XaP4//ZsFiQg5E1ZVxhXX2+W9Qsc2nC71wpWjffPb/e0ccWNgntfn7qb6DwuDmb03a7cimC0SjTbgRNBqw909RiEHRvy+xtqb9jM9a/jYSI6Pxi47qRC3MnS78hqHirUblOvu98UAgn/DUEcLfJSXg/O66hzleWCjeItfnzB9P4yaUoxAwAXVlQMpp94vXAJeundmjj/nZKqriEkCSe0myTcLHnDF2qOSxUKnIjC6gPGk6U35Fv8TZA8M+K7VntbtNWb9m26jf6FulaDsQym2HBiYTiGzlK81YOLerpWEhZlHsvl3VS165sG9JucwBhbeygeom1jj/ugTFGZ+i+o7o9JJSubja8V+JRGe7wCYus0+yFw1qaMAbd6ROt+kjdv33Oq4RLX+8+yMCMVsQsWZERjmh824qbtDE2Y8galyoCzoyKkr5TRvKsVHzKOgmxdGQzoqkNfQRPEiqOruL2Arfkm650X5v8= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB3PR08MB9010.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB11479 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS0EPF000001AC.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 5dce1890-2a9b-4ccf-94ff-08de7b78673d X-Microsoft-Antispam: BCL:0; ARA:13230040|35042699022|1800799024|14060799003|82310400026|36860700016|376014; X-Microsoft-Antispam-Message-Info: Bcgsw55dJUS1fFERjUbNmd4V/womYymnaX/MZW9Ukx9F8doE019lbxmbrzCihoweXiVn4ogkUMVqFvEC2PeG+UbkBqi+sVJ1nXZlSYCthCwo14HSxrYciE5G4DJwgqZ5WaUcGwOz+yyCHMv7znFF+ja/QKicRxPDSzTUMB3YI3lv66zvH7hUumbAjtnebs++sy6A0EG4d6BTrJe/JNbfGqnJTIMj4njJHI110r+za0kkZpMmcQVu3HYFaNeeV2fXNTvBMsvDcGNPs7e+ikDQ9fH47rkzGN44hcZx0OyczoU5hHeaB04W+RK9Wi0RQEpUnkuWTch7OyiKYUk5KeHOx9qjMiaFBd0m7asNRvpgg0EPjLKwlTtsQlSPRfSFWibIrAQMywn2AaDJMylNtNYSC1EMhHVXPOF4ig6uSb4a8qtsHjH960gWsv/ri6WzTgwOr50F1dh7Ml/yQHh87QpOdNOlkmIQ+kL74VpzkfFJ4AFoBc5+gX7rZv6j1lwGwpmm2eN6C+KOMsH1mGGPdogIaUg8zKR2FQDiZQ+QYjgiNwobQw5/c8XL+m94AcTG0jUiC95g4YFCZt9v9iR0SSr2XZEiYX1iFP+kCcQOIYyV9vqYoEbOdDZvGGWERRGqTmq9n8B+j2fJFz9QiOvDQ6IZupdy/ntbKhOPTGOXPaWpBKDlOFQwMMWnHUhN2rtNqdegGUH4tNaQoFZIEt00z6IrPS1lsUCSrdSw1kDYOXTgeCxn0+sB4nJ5JhNjj3YsDZe5Nk+/bBVhxaf2WBKeq9pQCA== X-Forefront-Antispam-Report: CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(35042699022)(1800799024)(14060799003)(82310400026)(36860700016)(376014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: nFEzzWxXLSVLBMFZF74CI+22ZyJ7ZIG4HNmyZvnkjWtT4Wt1SuF0rEjMCZD+iN/ad7DHlIxxKz5xiWZbb44fzwbhmvRiM+NG4n1DqThkuiFp0X3ps4r5kBJd4SPukgZegjg8pmGt9T5To2Wm8/1wlGMyn8TB+N1GVbptlMRLqOWALdsXAtco/Zj9uQsW75QqBE5ZcOAMQJ9dM1X7Lozy0V2+2Ecs+4K6FlNl7AyPqHoXPzVuo2DaPoRobSKueC6EBBSYKQRdiaXq6pKDx94SNbquQVzaWT+JlSGtMDNbZ7wEB2Xnqfcq1MQPGbJjK5iBOyCeb8duTshFxzzCcVG7MNKfvEn9rkuA3i7J5zC7ll131MfK4kMnzwvq7Q37i+EIq9JqBtFNBKy77Rauo2qSs4PBjypkpfCYjqxWJdtpCCqDhRm6Tv+fanBgzvYvpV2n X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Mar 2026 12:04:41.8583 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b7aa5d7f-f826-4187-18f3-08de7b788ca4 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129]; Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: AMS0EPF000001AC.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMBPR08MB11617 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 On 03/03/2026 18:30, Tom Tromey wrote: >>>>>> Matthieu Longo writes: > >> Python extension objects that support __dict__ must inherit from >> gdbpy_dict_wrapper, a wrapper class that stores the PyObject >> corresponding to the __dict__ attribute. > >> Currently, management of this dictionary is not centralized, and >> each Python extension object implements its own logic to create, >> access, and destroy it. > >> This patch focuses on the allocation of the dictionary, introduces >> a new helper function, gdbpy_dict_wrapper::allocate_dict(), and >> adapts the existing code to use the helper. > >> + if (! gdbpy_dict_wrapper::allocate_dict (object)) >> return nullptr; > > gdb style doesn't put a space after '!' in an expression. > There's a few instances of this. > Fixed. >> + >> + template >> + static bool >> + allocate_dict (gdbpy_ref& self) > > Space before "&" > >> + { >> + static_assert (std::is_base_of_v >> + || std::is_same_v); >> + auto *obj = static_cast (self.get ()); >> + obj->dict = PyDict_New (); >> + return obj->dict != nullptr; > > It seems to me that if this were a non-static method, then it also would > not have to be a template method, like > > bool allocate_dict () > { > // maybe? gdb_assert (dict == nullptr); > dict = PyDict_New (); > return dict != nullptr; > } > > The idea being that inheritance takes care of the details, so this > works: > > gdbpy_ref blah; > if (blah->allocate_dict ()) ... > > Unless we have a case where this is needed for plain gdbpy_ref<>? > But based on an earlier patch I would think that's not possible. > > Tom You are right, I needlessly overcomplicated things. There is no case where this is needed for plain gdbpy_ref<>. The approach with the inheritance is simpler and cleaner. Regarding the assertion "gdb_assert (dict == nullptr);", it seems that PyObject_New() does not zero the memory so the assertion can be randomly triggered by garbage. I won't keep it. Fixed in the next revision. Matthieu