I'm trying to update a counter variable by one each time a certain value stays the same.
The main conditional is this:
streak = 0
entryno_counter = 1
class OtherDataGet:
streak_type = 3
uod_state = 3
@staticmethod
def uod():
global streak
if entryno_counter == 1:
pass
else:
if values[1] > values_cache[1]: # If value went up
if OtherDataGet.uod_state == 1 or 2: # If it was previously down or same
OtherDataGet.uod_state = 0 # Set state to up
streak = 0 # Reset streak
OtherDataGet.streak_type = 0 # Set streak type to up
elif OtherDataGet.uod_state == 0: # If last state was up
streak += 1 # Add one to streak counter
return 0
elif values[1] < values_cache[1]:
if OtherDataGet.uod_state == 0 or 2:
OtherDataGet.uod_state = 1
streak = 0
OtherDataGet.streak_type = 1
elif OtherDataGet.uod_state == 1:
streak += 1
return 1
elif values[1] == values_cache[1]:
if OtherDataGet.uod_state == 0 or 1:
OtherDataGet.uod_state = 2
streak = 0
OtherDataGet.streak_type = 2
elif OtherDataGet.uod_state == 2:
streak += 1
return 2
The variable that is being updated is in the global namespace, and is accessible everywhere so there should be no problem in updating it.
For example, when a 2 is returned the first time, the streak counter is set to 0, the second time a 2 is returned, it should be set to 1, the third time a 2 is returned, it should be a 3, etc.
1,125519,0,182701,4,404,0,1
2,125519,2,182702,4,404,2,1
3,125518,1,182703,4,404,1,1
4,125519,0,182704,4,404,0,1
5,125519,2,182705,4,404,2,1
6,125519,2,182706,4,404,2,1
7,125519,2,182706,4,404,2,1
8,125519,2,182707,4,404,2,1
9,125517,1,182708,4,404,1,1
10,125518,0,182709,4,404,0,1
11,125517,1,182710,4,404,1,1
This is the output data, all you need to look at is the last two columns. The second to last is the returned value from OtherDataGet.uod
, and the last one should be streak
. If you look at lines 5-8, there is a streak of 2s, and the last value on the line should be 1, 2, 3, 4 respectively, but it it's staying as 1 even when it should be reset to 0.