Files
SequencerIO/arnold/__pycache__/io_state.cpython-311.pyc

30 lines
6.3 KiB
Plaintext
Raw Normal View History

2026-03-02 17:48:55 -05:00
<EFBFBD>
A<0E>i<EFBFBD><00><01>z<00>dZddlmZddlZddlZddlmZmZeGd<05>d<06><00><00><00>ZGd<07>d<08><00>Z dS) u<>
arnold/io_state.py — Thread-safe shared I/O state store.
The poller writes here after every successful bulk read.
The sequencer and API read from here.
State is keyed by logical signal name (str).
<EFBFBD>)<01> annotationsN)<02> dataclass<73>fieldc<01><<00>eZdZUded<ded<ded<dZded<d S)
<EFBFBD> SignalState<74>str<74>name<6D>bool<6F>value<75>float<61>
updated_atF<EFBFBD>staleN)<05>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__annotations__r<00><00><00>*/home/noise/Code/arnold/arnold/io_state.pyrrsA<00><00><00><00><00><00><00> <0A>I<EFBFBD>I<EFBFBD>I<EFBFBD><0F>K<EFBFBD>K<EFBFBD>K<EFBFBD><15><15><15><15><17>E<EFBFBD><17><17><17><17><17>rrc<01>Z<00>eZdZdZdd<04>Zdd <09>Zdd <0C>Zdd<0F>Zdd<11>Zdd<13>Z dd<14>Z
d d<16>Z d!d<17>Z dS)"<22>IOStatezB
Central thread-safe store for all logical signal states.
<20>return<72>Nonec<01>D<00>tj<00><00>|_i|_dS<00>N)<04> threading<6E>Lock<63>_lock<63>_states<65><01>selfs r<00>__init__zIOState.__init__s<00><00>/8<>~<7E>/?<3F>/?<3F><04>
<EFBFBD>/1<><04> <0C> <0C> r<00> signal_namerr r
c<01><><00>tj<00><00>}|j5t|||d<01><02><00>|j|<ddd<03><00>dS#1swxYwYdS)z0Set a signal's current value. Clears stale flag.F<>r r r rN)<05>time<6D> monotonicrrr)r!r#r <00>nows r<00>updatezIOState.update&s<><00><00><12>n<EFBFBD><1E><1E><03> <11>Z<EFBFBD> <0E> <0E>(3<> <20><1B><1E><1B> )<0E>)<0E>)<0E>D<EFBFBD>L<EFBFBD><1B> %<25> <0E> <0E> <0E> <0E> <0E> <0E> <0E> <0E> <0E> <0E> <0E> <0E><><EFBFBD><EFBFBD> <0E> <0E> <0E> <0E> <0E> s<00>A<03>A<07> A<07>updates<65>dict[str, bool]c<01><><00>tj<00><00>}|j5|<01><00><00>D] \}}t |||d<01><02><00>|j|<<00>! ddd<03><00>dS#1swxYwYdS)z6Update many signals atomically (one lock acquisition).Fr%N)r&r'r<00>itemsrr)r!r*r(r r s r<00> update_bulkzIOState.update_bulk1s<><00><00><12>n<EFBFBD><1E><1E><03> <11>Z<EFBFBD> <12> <12>&<26>}<7D>}<7D><EFBFBD><EFBFBD> <12> <12> <0B><04>e<EFBFBD>%0<><1D><1F>"<22><1F> &<12>&<12>&<12><04> <0C>T<EFBFBD>"<22>"<22> <12> <12> <12> <12> <12> <12> <12> <12> <12> <12> <12> <12> <12><><EFBFBD><EFBFBD> <12> <12> <12> <12> <12> s<00>6A<03>A#<07>&A#<07> signal_names<65> list[str]c<01>2<00>tj<00><00>}|j5|D]_}|j<00>|<03><00>}|r&t ||j|jd<01><02><00>|j|<<00>Dt |d|d<01><02><00>|j|<<00>` ddd<04><00>dS#1swxYwYdS)z5Mark signals as stale (comms error for their device).Tr%FN)r&r'rr<00>getrr r )r!r/r(r <00>existings r<00>
mark_stalezIOState.mark_stale=s<00><00><12>n<EFBFBD><1E><1E><03> <11>Z<EFBFBD> <16> <16>$<24> <16> <16><04><1F><<3C>+<2B>+<2B>D<EFBFBD>1<>1<><08><1B> <16>)4<>!<21>&<26>n<EFBFBD>#+<2B>#6<>"<22> *<16>*<16>*<16>D<EFBFBD>L<EFBFBD><14>&<26>&<26>*5<>!<21>#<23>#&<26>"<22> *<16>*<16>*<16>D<EFBFBD>L<EFBFBD><14>&<26>&<26> <16> <16> <16> <16> <16> <16> <16> <16> <16> <16> <16> <16> <16><><EFBFBD><EFBFBD> <16> <16> <16> <16> <16> s<00>A#B <03> B<07>B<07>SignalState | Nonec<01>x<00>|j5|j<00>|<01><00>cddd<00><00>S#1swxYwYdSr)rrr2)r!r#s rr2z IOState.getVs<><00><00> <11>Z<EFBFBD> 1<> 1<><17><<3C>#<23>#<23>K<EFBFBD>0<>0<> 1<> 1<> 1<> 1<> 1<> 1<> 1<> 1<> 1<> 1<> 1<> 1<><31><EFBFBD><EFBFBD> 1<> 1<> 1<> 1<> 1<> 1s <00>/<03>3<07>3<07> bool | Nonec<01><><00>|j5|j<00>|<01><00>}|<02>|jndcddd<01><00>S#1swxYwYdS)z>Return the current bool value, or None if signal not yet seen.N)rrr2r <00>r!r#<00>ss r<00> get_valuezIOState.get_valueZs<><00><00> <11>Z<EFBFBD> 6<> 6<><14> <0C> <20> <20><1B>-<2D>-<2D>A<EFBFBD><1F>m<EFBFBD>1<EFBFBD>7<EFBFBD>7<EFBFBD><14> 6<> 6<> 6<> 6<> 6<> 6<> 6<> 6<> 6<> 6<> 6<> 6<><36><EFBFBD><EFBFBD> 6<> 6<> 6<> 6<> 6<> 6<> <00>%:<03>><07>>c<01><><00>|j5|j<00>|<01><00>}|<02>|jndcddd<00><00>S#1swxYwYdS)NT)rrr2rr9s r<00>is_stalezIOState.is_stale`s<><00><00> <11>Z<EFBFBD> 6<> 6<><14> <0C> <20> <20><1B>-<2D>-<2D>A<EFBFBD><1F>m<EFBFBD>1<EFBFBD>7<EFBFBD>7<EFBFBD><14> 6<> 6<> 6<> 6<> 6<> 6<> 6<> 6<> 6<> 6<> 6<> 6<><36><EFBFBD><EFBFBD> 6<> 6<> 6<> 6<> 6<> 6r<<00>dict[str, SignalState]c<01>l<00>|j5t|j<00><00>cddd<01><00>S#1swxYwYdS)z-Return a shallow copy of the full state dict.N)r<00>dictrr s r<00>snapshotzIOState.snapshotes{<00><00> <11>Z<EFBFBD> &<26> &<26><17><04> <0C>%<25>%<25> &<26> &<26> &<26> &<26> &<26> &<26> &<26> &<26> &<26> &<26> &<26> &<26><><EFBFBD><EFBFBD> &<26> &<26> &<26> &<26> &<26> &s <00>)<03>-<07>-c<01><><00>|j5d<01>|j<00><00><00>D<00><00>cddd<02><00>S#1swxYwYdS)z:Return {name: value} for all signals (ignores stale flag).c<01>$<00>i|] \}}||j<00><02>Sr)r )<03>.0r r:s r<00>
<dictcomp>z&IOState.all_values.<locals>.<dictcomp>ms <00><00>F<>F<>F<>g<EFBFBD>d<EFBFBD>A<EFBFBD>D<EFBFBD>!<21>'<27>F<>F<>FrN)rrr-r s r<00>
all_valueszIOState.all_valuesjs<><00><00> <11>Z<EFBFBD> G<01> G<01>F<>F<><14><1C>1C<31>1C<31>1E<31>1E<31>F<>F<>F<> G<01> G<01> G<01> G<01> G<01> G<01> G<01> G<01> G<01> G<01> G<01> G<01><><EFBFBD><EFBFBD> G<01> G<01> G<01> G<01> G<01> Gs <00>#8<03><<07><N)rr)r#rr r
rr)r*r+rr)r/r0rr)r#rrr5)r#rrr7)r#rrr
)rr?)rr+) rrr<00>__doc__r"r)r.r4r2r;r>rBrGrrrrrs<><00><00><00><00><00><00><08><08>2<>2<>2<>2<> <0E> <0E> <0E> <0E>
<12>
<12>
<12>
<12><16><16><16><16>21<>1<>1<>1<>6<>6<>6<>6<> 6<>6<>6<>6<>
&<26>&<26>&<26>&<26>
G<01>G<01>G<01>G<01>G<01>Grr)
rH<00>
__future__rrr&<00> dataclassesrrrrrrr<00><module>rKs<><00><01><04><04>#<23>"<22>"<22>"<22>"<22>"<22><10><10><10><10> <0B> <0B> <0B> <0B>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28> <0B><18><18><18><18><18><18><18> <0B><19><18>TG<01>TG<01>TG<01>TG<01>TG<01>TG<01>TG<01>TG<01>TG<01>TGr