On 10Sep2018 10:23, Chip Wachob <wach...@gmail.com> wrote:
So, without all the fluff associated with wiggling lines, my function
now looks like this:

def RSI_size_the_loop():
  results = []
  all_together = []   # not certain if I need this, put it in in an
attempt to fix the incompatibility if it existed

You don't need this. all_together doesn't need to be mentioned until you initiate it with your bytearray.join.

  for x in range (0, MAX_LOOP_COUNT, slice_size):
     results.append(my_transfer(disp, data_out, slice_size)

     print " results ", x, " = ", results  # show how results grows
on each iteration

  all_together = bytearray().join(results)

  print " all together ", all_together

I can observe results increasing in size and the last time through the loop:

results  48  =
[[bytearray(b'\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')],
[bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')],
[bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')],
[bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')]]

Peter has pointed out that you have a list of list-of-bytearray instead of a flat list-of-bytearray.

The inference here is that your my_transfer function is returning a single element list-of-bytearray.

So, now when I hit the line:
all_together = bytearray().join(results)

I'm getting the Traceback :
[...]
Traceback (most recent call last):
 File "SW8T_5.py", line 101, in <module>      # this is my main script
   loop_size = RSI_size_the_loop(Print)
 File "/home/temp/Python_Scratch/examples/RSI.py", line 359, in
RSI_size_the_loop
   all_together = bytearray().join(results)
TypeError: can only join an iterable of bytes (item 0 has type 'list')

So because you have a list-of-list, item[0] is indeed a list, not a bytearray.

If you change this:

 results.append(my_transfer(disp, data_out, slice_size)

into:

 result = my_transfer(disp, data_out, slice_size)
 print("result =", repr(result))
 results.append(result)

this should be apparent. So this issue lies with your my_transfer function; the main loop above now looks correct.

I've even added in print statements for the types, so I could double
check, and I get:

results returns <type 'list'>
all_together returns <type 'list'>

So both are type 'list' which is referred to here :

https://infohost.nmt.edu/tcc/help/pubs/python/web/sequence-types.html

as a valid sequence type but apparently there's a detail I'm still missing...

Yeah. bytearray().join wants bytes or bytearrays in the list/iterable you hand it. You've got lists, with the bytearrays further in.

Cheers,
Cameron Simpson <c...@cskk.id.au>
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to