[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Discuss-gnuradio] PMT Oddities
From: |
Martin Braun |
Subject: |
Re: [Discuss-gnuradio] PMT Oddities |
Date: |
Tue, 13 Dec 2016 18:09:27 -0800 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 |
I'd agree that your code is not behaving as expected. Don't have
something off the top of my head though :/
M
On 12/13/2016 02:51 PM, Dave NotTelling wrote:
> Assuming that is reproducible, does anyone have suggestions on how to
> get around it?
>
> On Fri, Dec 9, 2016 at 9:16 PM, Dave NotTelling <address@hidden
> <mailto:address@hidden>> wrote:
>
> Here is a full example:
>
> [code]
>
> #!/usr/bin/python
>
> 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 'dict_keys with a populated dictionary'
> print pmt.dict_keys(a)
>
> a = pmt.cons(pmt.make_dict(), pmt.make_u8vector(10, 10))
>
> print 'dict_keys with an empty dictionary'
> print pmt.dict_keys(a)
>
> [/code]
>
> You end up with the following output:
>
> [output]
>
> dict_keys with a populated dictionary
> ((c . c))
> dict_keys with an empty dictionary
> Traceback (most recent call last):
> File "test.py", line 18, in <module>
> print pmt.dict_keys(a)
> File "/usr/local/lib/python2.7/dist-packages/pmt/pmt_swig.py",
> line 3010, in dict_keys
> return _pmt_swig.dict_keys(dict)
> RuntimeError: pmt_car: wrong_type : ()
>
>
> [/output]
>
> The first call to dict_keys(a) returns the last element in the
> dictionary. The second call errors out. Both should error out correct?
>
> On Fri, Dec 9, 2016 at 9:11 PM, Dave NotTelling <address@hidden
> <mailto:address@hidden>> wrote:
>
> I understand that it should bomb, but it doesn't if there are
> elements in the dictionary of the pair generated by cons.
> that's the problem. calling dict_keys should die on both
> tests, but returns just fine on the first test.
>
>
> On Dec 9, 2016 1:35 PM, "Martin Braun" <address@hidden
> <mailto:address@hidden>> wrote:
>
> On 12/05/2016 01:56 PM, Dave NotTelling 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)))
>
> It's supposed to bomb -- pmt.cons() does not return a dict.
> That's
> exactly how you can test for dicts.
>
> See:
>
> https://github.com/gnuradio/gnuradio/blob/1e8562c8d5430667b48fced2d2e50ab5771dfb5e/gr-uhd/lib/usrp_block_impl.cc#L486-L494
>
> <https://github.com/gnuradio/gnuradio/blob/1e8562c8d5430667b48fced2d2e50ab5771dfb5e/gr-uhd/lib/usrp_block_impl.cc#L486-L494>
>
> -- M
>
> _______________________________________________
> Discuss-gnuradio mailing list
> address@hidden <mailto:address@hidden>
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
> <https://lists.gnu.org/mailman/listinfo/discuss-gnuradio>
>
>
>
>