Files
electra-archon/models/__pycache__/state.cpython-312.pyc

123 lines
10 KiB
Plaintext
Raw Normal View History

<EFBFBD>
H<><48>i_<00> <01>p<00>dZddlmZddlZddlZddlmZmZmZddl m Z m
Z
ddl m Z m Z ddlmZmZmZmZddlmZGd <09>d
e <0C>Zed <0B> <0C>Gd <0A>d<0E><00>Zed <0B> <0C>Gd<0F>d<10><00>Zd#d<11>Zedk(r<>ej5eej8<00><00>ej:ddd<15>eddddg<02><1A><00><1B>Zed<1C>eejAd<1D><1E><00>edejC<00><00><00><02>ejEdd d<15><02>Z#ed!e#jH<00><00><02>ed"e#jJ<00><00><02>yy)$z<>
State Model for SEED Architecture
This module defines the State dataclass and related utilities for the
State component of the SEED (State-Event-Entity-Domain) architecture.
<EFBFBD>)<01> annotationsN)<03> dataclass<73>field<6C>asdict)<02>datetime<6D>timezone)<02>Enum<75>auto)<04>Any<6E>Optional<61>Dict<63>List)<01>Pathc<01>$<00>eZdZdZdZdZdZdZdZy)<08> StateTypez!Enumeration of valid state types.<2E>active<76>inactive<76>pending<6E>archived<65>deletedN) <09>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__<5F>ACTIVE<56>INACTIVE<56>PENDING<4E>ARCHIVED<45>DELETED<45><00><00>4/root/wizards/allegro/electra-archon/models/state.pyrrs<00><00>+<2B> <15>F<EFBFBD><19>H<EFBFBD><17>G<EFBFBD><19>H<EFBFBD><17>Gr!rT)<01>frozenc<01>r<00>eZdZUdZdZded<dZded<dZded<ee <09> <09>Z
d
ed <dd <0C>Z e dd <0A><04>Z y)<10> StateMetadataz(Metadata associated with a state record.<2E>unknown<77>str<74>sourceN<65> Optional[str]<5D>
provenance<EFBFBD>
created_by<EFBFBD><01>default_factoryz List[str]<5D>tagsc<01>`<00>|j|j|j|jd<01>S)zConvert metadata to dictionary.<2E>r(r*r+r.r0<00><01>selfs r"<00>to_dictzStateMetadata.to_dict$s*<00><00><1B>k<EFBFBD>k<EFBFBD><1E>/<2F>/<2F><1E>/<2F>/<2F><18>I<EFBFBD>I<EFBFBD> 
<EFBFBD>
r!c <01><><00>||jdd<02>|jd<03>|jd<04>|jdg<00><00><06>S)z Create metadata from dictionary.r(r&r*r+r.r0)<01>get<65><02>cls<6C>datas r"<00> from_dictzStateMetadata.from_dict-sE<00><00><13><17>8<EFBFBD>8<EFBFBD>H<EFBFBD>i<EFBFBD>0<><1B>x<EFBFBD>x<EFBFBD> <0C>-<2D><1B>x<EFBFBD>x<EFBFBD> <0C>-<2D><15><18><18>&<26>"<22>%<25> 
<EFBFBD>
r!<00><02>return<72>Dict[str, Any])r8r<r;r%)rrrrr(<00>__annotations__r*r+r<00>listr.r3<00> classmethodr9r r!r"r%r%sK<00><00>2<><1B>F<EFBFBD>C<EFBFBD><1B> $<24>J<EFBFBD> <0A>$<24> $<24>J<EFBFBD> <0A>$<24><1B>D<EFBFBD>1<>D<EFBFBD>)<29>1<>
<EFBFBD><11>
<EFBFBD><11>
r!r%c<01> <00>eZdZUdZded<ded<ded<ded<d ed
<d ed <ee<06> <0A>Zded<dZded<dZ ded<d<15>Z
dd<16>Z ddd<17>Z e d d!d<18><05>Ze d"d<19><04>Ze d#d<1A><04>Zd$d<1B>Zd%d<1C>Zy)&<26>Statea<65>
Immutable State record for SEED architecture.
Attributes:
id: Unique identifier for this state record (UUID v4)
entity_id: Reference to the entity this state belongs to
state_type: The type/category of this state
payload: Flexible JSON payload containing state-specific data
timestamp: ISO 8601 timestamp when this state was recorded
version: Version number for optimistic locking
metadata: Additional metadata about this state record
previous_state_id: Reference to the previous state (None if first)
ttl: Time-to-live in seconds (None for no expiration)
r'<00>id<69> entity_idr<00>
state_typer<<00>payloadr<00> timestamp<6D>int<6E>versionr,r%<00>metadataNr)<00>previous_state_id<69> Optional[int]<5D>ttlc<01><><00> tj|j<00>tj|j<00>|jrtj|j<00>|j dkr t d<04><00>|j<00>|jdkr t d<06><00>yy#t
$r}t d|<01><00><02><00>d}~wwxYw)z$Validate state after initialization.zInvalid UUID format: N<>zVersion must be >= 1rzTTL must be non-negative)<08>uuid<69>UUIDrBrCrJ<00>
ValueErrorrHrL)r2<00>es r"<00> __post_init__zState.__post_init__Rs<><00><00> :<3A> <10>I<EFBFBD>I<EFBFBD>d<EFBFBD>g<EFBFBD>g<EFBFBD> <1E> <10>I<EFBFBD>I<EFBFBD>d<EFBFBD>n<EFBFBD>n<EFBFBD> %<25><13>%<25>%<25><14> <09> <09>$<24>0<>0<>1<>
<10><<3C><<3C>!<21> <1B><1C>3<>4<> 4<> <10>8<EFBFBD>8<EFBFBD> <1F>D<EFBFBD>H<EFBFBD>H<EFBFBD>q<EFBFBD>L<EFBFBD><1C>7<>8<> 8<>%1<> <1F><><1A> :<3A><1C>4<>Q<EFBFBD>C<EFBFBD>8<>9<> 9<><39> :<3A>s<00>A)B-<00>- C <03>6C<03>C c
<01><00>|j|j|jj|j|j
j <00>|j|jj<00>|j|jd<01> S)z+Convert state to dictionary representation.<2E> rBrCrDrErFrHrIrJrL) rBrCrD<00>valuerErF<00> isoformatrHrIr3rJrLr1s r"r3z State.to_dictesg<00><00><17>'<27>'<27><1D><1E><1E><1E>/<2F>/<2F>/<2F>/<2F><1B>|<7C>|<7C><1D><1E><1E>1<>1<>3<><1B>|<7C>|<7C><1C> <0A> <0A>-<2D>-<2D>/<2F>!%<25>!7<>!7<><17>8<EFBFBD>8<EFBFBD>

<EFBFBD>
r!c<01>V<00>tj|j<00>|t<00><01>S)zSerialize state to JSON string.)<02>indent<6E>default)<04>json<6F>dumpsr3r')r2rYs r"<00>to_jsonz State.to_jsonss<00><00><13>z<EFBFBD>z<EFBFBD>$<24>,<2C>,<2C>.<2E><16><13>E<>Er!c <01><><00>|ttj<00><00>|||tjt
j <00>||xs
t<00>||<07><01> S)a<>
Factory method to create a new State with auto-generated ID and timestamp.
Args:
entity_id: The entity this state belongs to
state_type: Type of state
payload: State data payload
version: Version number (default: 1)
metadata: Optional metadata
previous_state_id: Link to previous state
ttl: Optional time-to-live in seconds
Returns:
New State instance
rU)r'rO<00>uuid4r<00>nowr<00>utcr%)r7rCrDrErHrIrJrLs r"<00>createz State.createwsK<00><00>4<13><12>4<EFBFBD>:<3A>:<3A><<3C> <20><1F>!<21><1B><1E>l<EFBFBD>l<EFBFBD>8<EFBFBD><<3C><<3C>0<><1B><1D>0<><1D><1F>/<2F><13>

<EFBFBD>
r!c<01>"<00>||d|dt|d<00>|dtj|djdd<07><00>|dtj |j d i<00><00>|j d
<EFBFBD>|j d <0B><00> <0C> S) z,Create State from dictionary representation.rBrCrDrErF<00>Zz+00:00rHrIrJrLrU)rr<00> fromisoformat<61>replacer%r9r5r6s r"r9zState.from_dict<63>s<><00><00><13><13>D<EFBFBD>z<EFBFBD><1A>;<3B>'<27> <20><14>l<EFBFBD>!3<>4<><18><19>O<EFBFBD><1E>,<2C>,<2C>T<EFBFBD>+<2B>-><3E>-F<>-F<>s<EFBFBD>H<EFBFBD>-U<>V<><18><19>O<EFBFBD>"<22>,<2C>,<2C>T<EFBFBD>X<EFBFBD>X<EFBFBD>j<EFBFBD>"<22>-E<>F<>"<22>h<EFBFBD>h<EFBFBD>':<3A>;<3B><14><08><08><15><0F>

<EFBFBD>
r!c<01>J<00>|jtj|<01><00>S)z#Deserialize State from JSON string.)r9r[<00>loads)r7<00>json_strs r"<00> from_jsonzState.from_json<6F>s<00><00><13>}<7D>}<7D>T<EFBFBD>Z<EFBFBD>Z<EFBFBD><08>1<>2<>2r!c<01><><00>|j<00>ytjtj<00>|j
z
j <00>}||jkDS)z-Check if this state has expired based on TTL.F)rLrr`rrarF<00> total_seconds)r2<00>ages r"<00>
is_expiredzState.is_expired<65>sA<00><00> <0F>8<EFBFBD>8<EFBFBD> <1B><18><17>|<7C>|<7C>H<EFBFBD>L<EFBFBD>L<EFBFBD>)<29>D<EFBFBD>N<EFBFBD>N<EFBFBD>:<3A>I<>I<>K<><03><12>T<EFBFBD>X<EFBFBD>X<EFBFBD>~<7E>r!c <01><><00>tj|j|j||jdz|j
|j |j<00><02>S)z<>
Create a new State representing the next version of this state.
Args:
new_payload: Updated payload for the new state
Returns:
New State instance with incremented version
rN)rCrDrErHrIrJrL)rArbrCrDrHrIrBrL)r2<00> new_payloads r"<00> next_versionzState.next_version<6F>sL<00><00><15>|<7C>|<7C><1A>n<EFBFBD>n<EFBFBD><1B><EFBFBD><EFBFBD><1F><18>L<EFBFBD>L<EFBFBD>1<EFBFBD>$<24><19>]<5D>]<5D>"<22>g<EFBFBD>g<EFBFBD><14><08><08><1C>
<EFBFBD>
r!r:)N)rYrKr;r')rNNNN)rCr'rDrrEr<rHrGrIzOptional[StateMetadata]rJr)rLrKr;rA)r8r<r;rA)rir'r;rA)r;<00>bool)rpr<r;rA)rrrrr=rr%rIrJrLrSr3r]r?rbr9rjrnrqr r!r"rArA8s<00><00> <08> <0C>G<EFBFBD><12>N<EFBFBD><19><19> <1B><1B><17><17> <10>L<EFBFBD>#<23>M<EFBFBD>B<>H<EFBFBD>m<EFBFBD>B<>'+<2B><15>}<7D>+<2B><1D>C<EFBFBD><1D><1D>9<>& 
<EFBFBD>F<01><11> <19>,0<>+/<2F>!<21>#
<EFBFBD><16>#
<EFBFBD><1E>#
<EFBFBD> <20> #
<EFBFBD>
<15> #
<EFBFBD> *<2A> #
<EFBFBD>)<29>#
<EFBFBD><1B>#
<EFBFBD>
<0F>#
<EFBFBD><11>#
<EFBFBD>J<11> 
<EFBFBD><11> 
<EFBFBD><11>3<><11>3<><1E>
r!rAc<01><><00>tt<00>jjdz dz }t|d<03>5}t j
|<01>cddd<04>S#1swYyxYw)z$Load the JSON schema for validation.<2E>schemasz
state.json<6F>rN)r<00>__file__<5F>parent<6E>openr[<00>load)<02> schema_path<74>fs r"<00> load_schemar|<00>sM<00><00><16>x<EFBFBD>.<2E>'<27>'<27>.<2E>.<2E><19>:<3A>\<5C>I<>K<EFBFBD> <0A>k<EFBFBD>3<EFBFBD> <1F><1C>1<EFBFBD><13>y<EFBFBD>y<EFBFBD><11>|<7C><1C><1C><1C>s <00>A<03>A<07>__main__<5F>running<6E>K)<02>status<75>progresszelectra-archon<6F>electra<72>seed<65>priority)r(r+r.)rCrDrErIzCreated State:<3A>)rYz
Is expired: <20>Zz
Next version: zPrevious state ID: r:)&r<00>
__future__rr[rO<00> dataclassesrrrrr<00>enumr r
<00>typingr r r r<00>pathlibrrr%rAr|rrbr'r_r<00>state<74>printr]rnrq<00>
next_staterHrJr r!r"<00><module>r<>sP<00><01><04>#<23> <0B> <0B>0<>0<>'<27><1B>,<2C>,<2C><18><18><04><18> <0B>$<24><17>
<EFBFBD>
<EFBFBD><18>
<EFBFBD>6 <0B>$<24><17>Q
<EFBFBD>Q
<EFBFBD><18>Q
<EFBFBD>h<1C> <0C>z<EFBFBD><19> <11>L<EFBFBD>L<EFBFBD><15>j<EFBFBD>d<EFBFBD>j<EFBFBD>j<EFBFBD>l<EFBFBD>#<23><1C>#<23>#<23>$<24>"<22>5<><1E>#<23> <20><18>*<2A>%<25>
<EFBFBD> <19> <06>E<EFBFBD>
<EFBFBD>
<1A><1B> <09>%<25>-<2D>-<2D>q<EFBFBD>-<2D>
!<21>"<22> <09>N<EFBFBD>5<EFBFBD>+<2B>+<2B>-<2D>.<2E>
/<2F>0<><17>#<23>#<23>y<EFBFBD>b<EFBFBD>$I<>J<>J<EFBFBD> <09> <1C>Z<EFBFBD>/<2F>/<2F>0<>
1<EFBFBD>2<> <09> <1F>
<EFBFBD> <<3C> <<3C>=<3D>
><3E>?<3F>)r!