Hi Jeff Just to help clarify this a bit, PMT_NIL is a valid PMT object (not to be confused with null)
PMT Dictionary type objects are nested pairs, and empty dictionary type objects (from pmt::make_dict() for example) are literally represented as a single PMT_NIL object under the hood, so this is specifically checked for and passes is_dict(). As dictionary items are added, the base dictionary (or empty dict / PMT_NIL object) gets paired with added key-value pairs. Its not the best possible implementation, but has served GR for some time. PMTs are getting a modernization / overhaul soon. The is_pdu() check should abstract that oddness a bit. Jacob ------- Original Message ------- On Thursday, June 30th, 2022 at 7:12 AM, Jeff S <e070...@hotmail.com> wrote: > Cool. I appreciate the clarification. I had always taken an empty dictionary > as a dictionary object without data, and a NIL as not an object, and the two > were different. This helps my PDU checking. > > And I also found the update I missed which added is_pdu(), which simplifies > some of my checking. So, even better! > > Thanks for the help, > > Jeff > > From: Jeff Long <willco...@gmail.com> > Sent: Thursday, June 30, 2022 8:02 AM > To: Jeff S <e070...@hotmail.com> > Cc: discuss-gnuradio@gnu.org > Subject: Re: Is PMT_NIL a Valid Dictionary? > > Yes, an empty dict is NIL, so that is (confusingly) valid. > > On Thu, Jun 30, 2022 at 7:05 AM Jeff S <e070...@hotmail.com> wrote: > >> GNU Radio Version: v3.9.6.0-23-ge3506b13 >> >> I was writing a QA test and decided to try, >> >> self.assertTrue(pmt.is_dict(pmt.PMT_NIL)) >> >> and it passes. I was just wondering if pmt.PMT_NIL is considered a valid >> dictionary object, as opposed to, >> >> my_dict = pmt.make_dict() >> >> self.assertTrue(pmt.is_dict(my_dict)) >> >> Just trying to get a better understanding and couldn’t find an answer. >> >> Regards, >> >> Jeff