Files
Guido.Tech/ai_intelligence_layer/utils/__pycache__/validators.cpython-313.pyc

60 lines
5.7 KiB
Plaintext
Raw Normal View History

2025-10-18 22:36:20 -05:00
<EFBFBD>
<00><><EFBFBD>h<EFBFBD><00><00><><00>SrSSKJrJr SSKrSSKJrJrJr \R"\
2025-10-18 22:36:20 -05:00
5r "SS5r "SS5r g) z<
Validators for strategy validation and telemetry analysis.
<EFBFBD>)<02>List<73>TupleN)<03>Strategy<67> RaceContext<78>EnrichedTelemetryWebhookc <00>n<00>\rSrSrSr\S\S\S\\ \
44Sj5r \S\ \S\S\ \4Sj5r S rg
) <0B>StrategyValidator<6F> z;Validates race strategies against F1 rules and constraints.<2E>strategy<67> race_context<78>returnc<00><><00>URRnURRnURH'nXB::a SSUSUS34s $XC:<3A>dMSSUSUS34s $ [ UR5S:<3A>a$UR[ UR5:wag[ UR5UR :wa(SSUR S [ UR5S34$UR S-n[ UR5U:waSS
[ UR5S 34$[UR5n[ U5S :ag g)z<>
Validate a single strategy.
Args:
strategy: Strategy to validate
race_context: Current race context
Returns:
Tuple of (is_valid, error_message)
FzPit lap z is in the past (current lap: <20>)z! is beyond race end (total laps: <20>)Fz#Pit laps must be in ascending orderz Stop count (z) doesn't match pit laps (zTire sequence length (z) doesn't match stops + 1<>)Fz6Must use at least 2 different tire compounds (F1 rule))T<>) <09> race_info<66> current_lap<61>
total_laps<EFBFBD>pit_laps<70>len<65>sorted<65>
stop_count<EFBFBD> tire_sequence<63>set)r r rr<00>pit_lap<61>expected_tire_count<6E>unique_compoundss <20>K/Users/adipu/Documents/HPCSimSite/ai_intelligence_layer/utils/validators.py<70>validate_strategy<67>#StrategyValidator.validate_strategysl<00><00>#<23>,<2C>,<2C>8<>8<> <0B>!<21>+<2B>+<2B>6<>6<>
2025-10-18 22:36:20 -05:00
<EFBFBD> <20>(<28>(<28>G<EFBFBD><16>%<25><1C><08><17> <09>1O<31>P[<5B>}<7D>\]<5D>^<5E>^<5E>^<5E><16>$<24><1C><08><17> <09>1R<31>S]<5D>R^<5E>^_<>`<60>`<60>`<60> )<29> <0F>x<EFBFBD> <20> <20> !<21>A<EFBFBD> %<25><17> <20> <20>F<EFBFBD>8<EFBFBD>+<<3C>+<<3C>$=<3D>=<3D>C<> <0F>x<EFBFBD> <20> <20> !<21>X<EFBFBD>%8<>%8<> 8<><18>L<EFBFBD><18>)<<3C>)<<3C>(=<3D>=W<>X[<5B>\d<>\m<>\m<>Xn<58>Wo<57>op<6F>q<>q<> q<>'<27>1<>1<>A<EFBFBD>5<><1B> <0E>x<EFBFBD>%<25>%<25> &<26>*=<3D> =<3D><18>2<>3<EFBFBD>x<EFBFBD>7M<37>7M<37>3N<33>2O<32>Oh<4F>i<>i<> i<><1F>x<EFBFBD>5<>5<>6<><18> <0E><1F> <20>1<EFBFBD> $<24>R<><17><00>
strategiesc<00>$<00>/nUHYn[RX15upEU(aURU5 M4[R SUR
SU35 M[ [R S[U5S[U5S35 U$)z<>
Validate all strategies and filter out invalid ones.
Args:
strategies: List of strategies to validate
race_context: Current race context
Returns:
List of valid strategies
z Strategy z
invalid: z
Validated <20>/z strategies)r r <00>append<6E>logger<65>warning<6E> strategy_id<69>infor)r#r <00>valid_strategiesr <00>is_valid<69>errors r<00>validate_strategies<65>%StrategyValidator.validate_strategies9s<><00><00><1E><18>"<22>H<EFBFBD>/<2F>A<>A<>(<28>Y<>O<EFBFBD>H<EFBFBD><17> <20>'<27>'<27><08>1<><16><0E><0E><19>8<EFBFBD>+?<3F>+?<3F>*@<40>
<EFBFBD>5<EFBFBD>'<27>R<>S<> #<23> <0F> <0B> <0B>j<EFBFBD><13>%5<>!6<> 7<>q<EFBFBD><13>Z<EFBFBD><1F>8I<38><1B>U<>V<><1F>r"<00>N)<0F>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__firstlineno__<5F>__doc__<5F> staticmethodrrr<00>bool<6F>strr rr.<00>__static_attributes__r0r"rr r sm<00><00>E<><11>(<18>H<EFBFBD>(<18>K<EFBFBD>(<18>E<EFBFBD>RV<52>X[<5B>R[<5B>L\<5C>(<18><12>(<18>T<12> <20><04>X<EFBFBD><0E> <20>k<EFBFBD> <20>VZ<56>[c<>Vd<56> <20><12> r"r c<00>`<00>\rSrSrSr\S\\S\4Sj5r \S\\S\
S\
4Sj5r Sr g )
<EFBFBD>TelemetryAnalyzer<65>RzJAnalyzes enriched lap-level telemetry data to extract trends and insights.<2E> telemetryr c<00>@<00>U(dg[USS9nUR$)z<>
Calculate tire degradation rate per lap (using lap-level data).
2025-10-18 22:36:20 -05:00
Args:
telemetry: List of enriched telemetry records
Returns:
Latest tire degradation rate (0.0 to 1.0)
gc<00><00>UR$<00>N<><01>lap<61><01>xs r<00><lambda><3E>CTelemetryAnalyzer.calculate_tire_degradation_rate.<locals>.<lambda>d<00><00><00>a<EFBFBD>e<EFBFBD>er"<00><01>key)<02>max<61>tire_degradation_rate)r=<00>latests r<00>calculate_tire_degradation_rate<74>1TelemetryAnalyzer.calculate_tire_degradation_rateUs$<00><00><19><16><15>Y<EFBFBD>O<EFBFBD>4<><06><15>+<2B>+<2B>+r"rc<00><><00>U(dUS-$[USS9nURnUS:<3A>aUS-$US:<3A>aUS-$URnU(aUS$US -$)
z<EFBFBD>
Project when tire cliff will be reached (using lap-level data).
2025-10-18 22:36:20 -05:00
Args:
telemetry: List of enriched telemetry records
current_lap: Current lap number
Returns:
Estimated lap number when cliff will be reached
<EFBFBD>c<00><00>UR$r@rArCs rrE<00>6TelemetryAnalyzer.project_tire_cliff.<locals>.<lambda>zrGr"rHgffffff<66>?rg<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>r<00>)rJ<00>tire_cliff_risk<73>optimal_pit_window)r=rrL<00>
cliff_risk<EFBFBD>
pit_windows r<00>project_tire_cliff<66>$TelemetryAnalyzer.project_tire_cliffgsr<00><00><19><1E><12>#<23> #<23><15>Y<EFBFBD>O<EFBFBD>4<><06><1B>+<2B>+<2B>
<EFBFBD> <15><13> <1C><1E><11>?<3F> "<22> <17>3<EFBFBD> <1E><1E><11>?<3F> "<22> <20>2<>2<>J<EFBFBD>$.<2E>:<3A>a<EFBFBD>=<3D> D<>K<EFBFBD>"<22>4D<34> Dr"r0N) r1r2r3r4r5r6rr<00>floatrM<00>intrYr9r0r"rr;r;Rse<00><00>T<><11>,<2C>4<EFBFBD>8P<38>3Q<33>,<2C>V[<5B>,<2C><12>,<2C>"<12>E<01><17>0<>1<>E<01><18>E<01>
<0A>E<01><12>Er"r;)r5<00>typingrr<00>logging<6E>models.input_modelsrrr<00> getLoggerr1r'r r;r0r"r<00><module>rasA<00><01><04><1F><0E>O<>O<> <10> <1A> <1A>8<EFBFBD> $<24><06>D <20>D <20>N2E<01>2Er"