oTree Forum >

Shuffling treatment list hoisted from session.config - cannot shuffle after gathering

#1 by AndreL

I have a list of within-subject treatments inside SESSION_CONFIGS that is

     treat_within=('small_low', 'small_high', 'large_low', 'large_high')
     
Then, in the main task app, under creating_session(subsession), I retrieve this list as

def creating_session(subsession: Subsession):
        if subsession.round_number == 1:
            for sbj in subsession.get_players():
                  sbj.participant.within_seq = sbj.session.config['treat_within']
                  

Everything works fine as above, and I get 'paricipant.within_seq' var exported from my data file if I try it. 
However, If I try to then shuffle this order with

    random.shuffle(sbj.participant.within_seq)

... I get the following error message below. Is there anything I am missing here?

--------------------ERROR MESSAGE-----------------------------------------------------
Failed to create session: 'tuple' object does not support item assignment
Traceback (most recent call last):
  File "C:\Users\s13514\Dropbox\otree\SNF3_liquidity\venv\lib\site-packages\otree\session.py", line 447, in create_session_traceback_wrapper
    return create_session(**kwargs)
  File "C:\Users\s13514\Dropbox\otree\SNF3_liquidity\venv\lib\site-packages\otree\session.py", line 418, in create_session
    func(subsession)
  File "C:\Users\s13514\Dropbox\otree\SNF3_liquidity\instruct\__init__.py", line 85, in creating_session
    random.shuffle(sbj.participant.within_seq)
  File "C:\Users\s13514.FIN-70492\AppData\Local\Programs\Python\Python310\lib\random.py", line 394, in shuffle
    x[i], x[j] = x[j], x[i]
TypeError: 'tuple' object does not support item assignment

#2 by Chris_oTree

Change this:

sbj.participant.within_seq = sbj.session.config['treat_within']

To this:

sbj.participant.within_seq = list(sbj.session.config['treat_within'])

Write a reply

Set forum username