Thoughts? On Mon, Dec 5, 2016 at 4:56 PM, Dave NotTelling <dmp250...@gmail.com> wrote:
> Marcus & Martin: > > I tried the dict_keys() method of checking, but even that can fail. > Here is an example: > > [code] > > import pmt > > d = pmt.make_dict() > d = pmt.dict_add(d, pmt.intern('a'), pmt.intern('a')) > d = pmt.dict_add(d, pmt.intern('b'), pmt.intern('b')) > d = pmt.dict_add(d, pmt.intern('c'), pmt.intern('c')) > > a = pmt.cons(d, pmt.make_u8vector(10, 10)) > > print pmt.dict_keys(a) > > [/code] > > You end up with: ((c . c)) > > The dict_keys() method will bomb if there are no elements in the > dictionary: > > print pmt.dict_keys(pmt.cons(pmt.make_dict(), pmt.make_u8vector(10, 10))) > > > On Tue, Nov 22, 2016 at 5:55 PM, Dave NotTelling <dmp250...@gmail.com> > wrote: > >> Thanks for the explanation! >> >> On Tue, Nov 22, 2016 at 5:29 PM, Marcus Müller <marcus.muel...@ettus.com> >> wrote: >> >>> That's a long story. Essentially, a list is a pair of the first element >>> and a pair of a second element and a pair of the third element and a pair >>> of … >>> >>> Cheers, >>> Marcus >>> >>> On 22.11.2016 23:18, Dave NotTelling wrote: >>> >>> I ask because it feels like a bug. Things like ((a . b), (c . d), (e . >>> f)) are definitely not pairs (assuming a pair is 2 elements) and (in my >>> opinion) should not return true for pmt.is_pair(). >>> >>> On Tue, Nov 22, 2016 at 5:12 PM, Dave NotTelling <dmp250...@gmail.com> >>> wrote: >>> >>>> Martin, >>>> >>>> Was that done on purpose? >>>> >>>> Thank you for the link! I hadn't thought about checking that way. >>>> >>>> Thanks! >>>> >>>> -Dave >>>> >>>> On Tue, Nov 22, 2016 at 5:08 PM, Martin Braun <martin.br...@ettus.com> >>>> wrote: >>>> >>>>> Dave, >>>>> >>>>> pairs pass is_dict(), which is possibly the root cause here. See also: >>>>> https://github.com/gnuradio/gnuradio/blob/31b28f0cf4694378b2 >>>>> 6617616d08b4082668962f/gr-uhd/lib/usrp_block_impl.cc#L487-L494 >>>>> >>>>> Cheers, >>>>> M >>>>> >>>>> On 11/22/2016 01:47 PM, Dave NotTelling wrote: >>>>> > I noticed today that the is_dict and is_pair checks are not >>>>> appearing to >>>>> > work properly. Here is an example that shows the issue: >>>>> > >>>>> > [code] >>>>> > >>>>> > #!/usr/bin/python >>>>> > >>>>> > import pmt >>>>> > >>>>> > def print_pmt(dictVar): >>>>> > print 'isPair:%05s, isDict:%05s, isTuple:%05s => %s' % >>>>> > (pmt.is_pair(dictVar), pmt.is_dict(dictVar), pmt.is_tuple(dictVar), >>>>> dictVar) >>>>> > >>>>> > print 'DICT' >>>>> > >>>>> > d = pmt.make_dict() >>>>> > print_pmt(d) >>>>> > >>>>> > d = pmt.dict_add(d, pmt.intern('a'), pmt.intern('b')) >>>>> > print_pmt(d) >>>>> > >>>>> > d = pmt.dict_add(d, pmt.intern('c'), pmt.intern('d')) >>>>> > print_pmt(d) >>>>> > >>>>> > d = pmt.dict_add(d, pmt.intern('e'), pmt.intern('f')) >>>>> > print_pmt(d) >>>>> > >>>>> > print '\nCONS' >>>>> > >>>>> > p = pmt.cons(pmt.make_dict(), pmt.make_u8vector(0,0)) >>>>> > print_pmt(p) >>>>> > >>>>> > [/code] >>>>> > >>>>> > Run that and you'll see what I consider strange behavior. The >>>>> values of >>>>> > is_pair and is_dict to not match what is expected. Is that by >>>>> design? >>>>> > If so, why? >>>>> > >>>>> > ((a . b)) is not a pair... It's a single element dictionary >>>>> > ((c . d) (a . b)) i can sorta see this being a pair, but it wasn't >>>>> > created that way >>>>> > ((e . f) (c . d) (a . b)) definitely not a pair as it's 3 elements >>>>> > >>>>> > (() . #[]) don't dictionaries have to be nested? >>>>> > >>>>> > >>>>> > Thanks! >>>>> > >>>>> > >>>>> > _______________________________________________ >>>>> > Discuss-gnuradio mailing list >>>>> > Discuss-gnuradio@gnu.org >>>>> > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio >>>>> > >>>>> >>>>> >>>>> _______________________________________________ >>>>> Discuss-gnuradio mailing list >>>>> Discuss-gnuradio@gnu.org >>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio >>>>> >>>> >>>> >>> >>> >>> _______________________________________________ >>> Discuss-gnuradio mailing >>> listDiscuss-gnuradio@gnu.orghttps://lists.gnu.org/mailman/listinfo/discuss-gnuradio >>> >>> >>> >>> _______________________________________________ >>> Discuss-gnuradio mailing list >>> Discuss-gnuradio@gnu.org >>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio >>> >>> >> >
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio