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

113 lines
11 KiB
Plaintext
Raw Normal View History

2025-10-18 22:36:20 -05:00
<EFBFBD>
Y<>h<EFBFBD>$<00><00><><00>SrSSKJrJr SSKrSSKJrJrJr \R"\
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>Y/Users/rishubmadhav/Documents/GitHub/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<>
<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\4Sj5r
\S\\S\ 4Sj5r \S\\S\ 4Sj5r\S\\S\ 4S j5r\S\\S
\S\4S j5r\S\\S\ 4S j5rS rg)<0F>TelemetryAnalyzer<65>Rz@Analyzes enriched telemetry data to extract trends and insights.<2E> telemetryr c<00><><00>[U5S:ag[USS9nUSnUSnURUR-
nUS:XagURUR-
nXT- n[ SU5$)z<>
Calculate tire degradation rate per lap.
Args:
telemetry: List of enriched telemetry records
Returns:
Rate of tire degradation per lap (0.0 to 1.0)
r<00>c<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>1<EFBFBD>5<EFBFBD>5r"<00><01>keyr<00><><EFBFBD><EFBFBD><EFBFBD>)rrrC<00>tire_degradation_index<65>max)r=<00>sorted_telemetry<72>first<73>last<73>lap_diff<66>deg_diff<66>rates r<00>calculate_tire_degradation_rate<74>1TelemetryAnalyzer.calculate_tire_degradation_rateUs~<00><00> <0F>y<EFBFBD>><3E>A<EFBFBD> <1D><16>"<22>)<29><1F>A<><18>!<21><11>#<23><05><1F><02>#<23><04><17>8<EFBFBD>8<EFBFBD>e<EFBFBD>i<EFBFBD>i<EFBFBD>'<27><08> <13>q<EFBFBD>=<3D><16><17>.<2E>.<2E><15>1M<31>1M<31>M<><08><17>"<22><04><12>3<EFBFBD><04>~<7E>r"c<00>R<00>U(dg[SU55nU[U5- $)z<>
Calculate average aero efficiency.
Args:
telemetry: List of enriched telemetry records
Returns:
Average aero efficiency (0.0 to 1.0)
r?c3<00>8# <00>UHoRv<00> M g7frA)<01>aero_efficiency<63><02>.0<EFBFBD>ts r<00> <genexpr><3E>BTelemetryAnalyzer.calculate_aero_efficiency_avg.<locals>.<genexpr><3E>s<00><00><00>9<>y<EFBFBD>!<21>%<25>%<25>y<EFBFBD><79><00><01><02>sumr)r=<00>totals r<00>calculate_aero_efficiency_avg<76>/TelemetryAnalyzer.calculate_aero_efficiency_avgss)<00><00><19><16><13>9<>y<EFBFBD>9<>9<><05><14>s<EFBFBD>9<EFBFBD>~<7E>%<25>%r"c<00>F<00>[U5S:ag[USS9n[U5S:<3A>aUSSOUn[U5S:agSn[S [U55H&nX2URX$S -
R-
- nM( U[U5S -
- nUS
:<3A>ag US :ag g)z<>
Analyze ERS charge pattern.
Args:
telemetry: List of enriched telemetry records
Returns:
Pattern description: "charging", "stable", "depleting"
r<00>stablec<00><00>UR$rArBrDs rrF<00>7TelemetryAnalyzer.analyze_ers_pattern.<locals>.<lambda><3E>rHr"rI<00><00><><EFBFBD><EFBFBD><EFBFBD>Nr?rg<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>chargingg<67><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> depleting)rr<00>range<67>
ers_charge)r=rN<00>recent<6E> total_change<67>i<>
avg_changes r<00>analyze_ers_pattern<72>%TelemetryAnalyzer.analyze_ers_pattern<72>s<><00><00> <0F>y<EFBFBD>><3E>A<EFBFBD> <1D><1B>"<22>)<29><1F>A<><18>+.<2E>.><3E>*?<3F>1<EFBFBD>*D<>!<21>"<22>#<23>&<26>JZ<4A><06> <0E>v<EFBFBD>;<3B><11>?<3F><1B><1B> <0C><16>q<EFBFBD>#<23>f<EFBFBD>+<2B>&<26>A<EFBFBD> <18>1<EFBFBD>I<EFBFBD>0<>0<>6<EFBFBD>A<EFBFBD>#<23>;<3B>3I<33>3I<33>I<> I<>L<EFBFBD>'<27>"<22>S<EFBFBD><16>[<5B>1<EFBFBD>_<EFBFBD>5<>
<EFBFBD> <15><04> <1C><1D> <17>%<25> <1F><1E>r"c<00>F<00>U(dg[USS9nURS:$)z<>
Check if fuel situation is critical.
Args:
telemetry: List of enriched telemetry records
Returns:
True if fuel optimization score is below 0.7
Fc<00><00>UR$rArBrDs rrF<00>4TelemetryAnalyzer.is_fuel_critical.<locals>.<lambda><3E><00><00><00>a<EFBFBD>e<EFBFBD>er"rIgffffff<66>?)rM<00>fuel_optimization_score)r=<00>latests r<00>is_fuel_critical<61>"TelemetryAnalyzer.is_fuel_critical<61>s)<00><00><19><18><15>Y<EFBFBD>O<EFBFBD>4<><06><15>-<2D>-<2D><03>3<>3r"c<00>l<00>U(dg[SU55[U5- nUS:<3A>agUS:<3A>agg)z<>
Assess driver consistency form.
Args:
telemetry: List of enriched telemetry records
Returns:
Form description: "excellent", "good", "inconsistent"
<EFBFBD>goodc3<00>8# <00>UHoRv<00> M g7frA)<01>driver_consistencyrYs rr\<00>7TelemetryAnalyzer.assess_driver_form.<locals>.<genexpr><3E>s<00><00><00>F<>I<EFBFBD>q<EFBFBD>2<>2<>I<EFBFBD>r^<00>333333<33>?<3F> excellentg<00>?<3F> inconsistentr_)r=<00>avg_consistencys r<00>assess_driver_form<72>$TelemetryAnalyzer.assess_driver_form<72>s><00><00><19><19><1E>F<>I<EFBFBD>F<>F<><13>Y<EFBFBD><1E>W<><0F> <1A>d<EFBFBD> "<22><1E> <1C><04> $<24><19>!r"rc<00><><00>U(dUS-$[USS9nURnUS:<3A>aU$[RU5nUS::aUS-$SU-
U- nU[ U5-nU$)z<>
Project when tire degradation will hit 0.85 (performance cliff).
Args:
telemetry: List of enriched telemetry records
current_lap: Current lap number
Returns:
Projected lap number when cliff will be reached
<EFBFBD>c<00><00>UR$rArBrDs rrF<00>6TelemetryAnalyzer.project_tire_cliff.<locals>.<lambda><3E>rwr"rIr<>r<00>2)rMrLr;rT<00>int)r=rry<00> current_degrS<00>laps_until_cliff<66> projected_laps r<00>project_tire_cliff<66>$TelemetryAnalyzer.project_tire_cliff<66>s<><00><00><19><1E><12>#<23> #<23><15>Y<EFBFBD>O<EFBFBD>4<><06><1C>3<>3<> <0B> <16>$<24> <1E><1E> <1E>!<21>@<40>@<40><19>K<><04> <0F>1<EFBFBD>9<EFBFBD><1E><12>#<23> #<23>!<21>;<3B>.<2E>$<24>6<><18>#<23>c<EFBFBD>*:<3A>&;<3B>;<3B> <0A><1C>r"c<00><><00>U(dg[RU5n[RU5n[RU5n[R U5n[R U5n[ USS9nS[U5SURSSUSS USS
URSS US URSS U(aSOSSUSURSSUR3nU$)z<>
Generate human-readable summary of telemetry trends.
Args:
telemetry: List of enriched telemetry records
Returns:
Summary string
zNo telemetry data available.c<00><00>UR$rArBrDs rrF<00>>TelemetryAnalyzer.generate_telemetry_summary.<locals>.<lambda> rwr"rIzTelemetry Analysis (Last z laps):
- Tire degradation: z.2fz index, increasing at z.3fz/lap
- Aero efficiency: z average
- ERS: z charge, z
- Fuel: z score, <20>CRITICAL<41>OKz
- Driver form: z (z consistency)
- Weather impact: ) r;rTrbrrrzr<>rMrrLrmrxr<00>weather_impact)r=<00> tire_rate<74>aero_avg<76> ers_pattern<72> fuel_critical<61> driver_formry<00>summarys r<00>generate_telemetry_summary<72>,TelemetryAnalyzer.generate_telemetry_summary<72>s<00><00><19>1<>%<25>E<>E<>i<EFBFBD>P<> <09>$<24>B<>B<>9<EFBFBD>M<><08>'<27>;<3B>;<3B>I<EFBFBD>F<> <0B>)<29>:<3A>:<3A>9<EFBFBD>E<> <0A>'<27>:<3A>:<3A>9<EFBFBD>E<> <0B><14>Y<EFBFBD>O<EFBFBD>4<><06>/<2F><03>I<EFBFBD><0E>/?<3F>@<15><1B>2<>2<>3<EFBFBD>7<>7M<37>i<EFBFBD>X[<5B>_<EFBFBD>]<14><1C>S<EFBFBD>><3E>"<08><0E><19><19>#<23><1E>i<EFBFBD> <0B>}<7D>5 <09> <0F> '<27> '<27><03>,<2C>H<EFBFBD>=<3D>Z<EFBFBD>VZ<56>4[<5B>\<10><1B>}<7D>B<EFBFBD>v<EFBFBD>8<>8<><13>=<3D>><13><19>(<28>(<28>)<29> -<2D><07><17>r"r0N)r1r2r3r4r5r6rr<00>floatrTrbr8rrr7rzr<>r<>r<>r<>r9r0r"rr;r;Rs,<00><00>J<><11><1E>4<EFBFBD>8P<38>3Q<33><1E>V[<5B><1E><12><1E>:<12>&<26><14>6N<36>1O<31>&<26>TY<54>&<26><12>&<26> <12>"<1C>t<EFBFBD>,D<>'E<>"<1C>#<23>"<1C><12>"<1C>H<12>4<>D<EFBFBD>)A<>$B<>4<>t<EFBFBD>4<><12>4<>"<12>"<22>d<EFBFBD>+C<>&D<>"<22><13>"<22><12>"<22>.<12>"<1D><17>0<>1<>"<1D><18>"<1D>
<0A>"<1D><12>"<1D>H<12><17>d<EFBFBD>3K<33>.L<><17>QT<51><17><12>r"r;)r5<00>typingrr<00>logging<6E>models.input_modelsrrr<00> getLoggerr1r'r r;r0r"r<00><module>r<>sA<00><01><04><1F><0E>O<>O<> <10> <1A> <1A>8<EFBFBD> $<24><06>D <20>D <20>ND<17>Dr"