~L iLdddlmZ ddlZddlZddlZddlZddlZddlZddlm Z m Z ddl m Z ddl mZddlmZmZmZmZddlmZmZmZmZddlZddlmZd d lmZd d lmZerddl Z dd lm!Z!d d l"m#Z#d dl$m%Z%d dl m&Z&d~dZ'ejPe)Z*ejVjYe)dZ-Gdde.Z/Gdde/Z0Gdde/Z1Gdde/Z2Gdde2Z3Gdde2Z4Gdde2Z5Gd d!e2Z6Gd"d#e/Z7Gd$d%e/Z8Gd&d'e/Z9Gd(d)e/Z:Gd*d+e/Z;Gd,d-e;Z<Gd.d/e/Z=Gd0d1e=Z>Gd2d3e/Z?Gd4d5e=Z@Gd6d7e=ZAGd8d9e=ZBGd:d;e=ZCGd<d=e@ZDGd>d?e ZEGd@dAe=ZFGdBdCe/ZGGdDdEe=ZHGdFdGe/ZIGdHdIe/ZJGdJdKeKZLGdLdMeKZMGdNdOe/ZNGdPdQe/ZOGdRdSeOZPGdTdUeOZQGdVdWeQZRGdXdYeQZSGdZd[eOZTGd\d]eOZUGd^d_eOZVGd`daeOZWGdbdceOZXeYePeZeQe[eRe\eTe]eSe^eUe.eVe_eWe`eXi ZadddZbddde ddfZcddgZdejjjejjjejjjejjjejjjfZl ddhZmenZoeoddi ddjZp ddkZq ddlZre d mddnZsddoZteodpdq ddrZuGdsdtZvddduZw ddvZxddwZy d ddxZzddyZ{ddzZ|dd{Z} d dd|Z~ d dd}Zy)) annotationsN)autoEnum) lru_cache)Path) extract_stack format_exc format_list StackSummary)AnyNoReturnOptional TYPE_CHECKING)get_file_path_2)config)counters) CompileId)DynamoTracerOutput)InstructionTranslatorBase)DynamoFrameTypec,d|jddzS)NzhFor more information about this error, see: https://pytorch.org/docs/main/generated/exportdb/index.html#_-)replace case_names W/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/torch/_dynamo/exc.pyexportdb_error_messager:s" I   C % & graph_breaksc eZdZdfd ZxZS)TorchDynamoExceptionc2t||i|d|_yN)super__init___torch_dynamo_tracer_outputselfargskwargs __class__s rr'zTorchDynamoException.__init__Gs $)&)IM(r r+r r,r returnNone__name__ __module__ __qualname__r' __classcell__r-s@rr#r#FsNNr r#c eZdZy)InternalTorchDynamoErrorNr2r3r4r rr8r8Lr r8c eZdZy)ResumePrologueTracingErrorNr9r:r rr=r=Pr;r r=c2eZdZUded<dddfdZxZS)RestartAnalysis Optional[str]restart_reasonN)rAc,||_t||yr%)rAr&r')r*rAr+r-s rr'zRestartAnalysis.__init__Ws, $r )r+r rAr@r/r0r2r3r4__annotations__r'r5r6s@rr?r?Ts!!CG  r r?c eZdZy)SpeculationRestartAnalysisNr9r:r rrFrF\r;r rFc eZdZy)UnspecializeRestartAnalysisNr9r:r rrHrH`r;r rHc eZdZy) CompileCollectiveRestartAnalysisNr9r:r rrJrJdr;r rJc eZdZy)TensorifyScalarRestartAnalysisNr9r:r rrLrLhr;r rLc eZdZy) SkipFrameNr9r:r rrNrNlr;r rNc eZdZy)TorchRuntimeErrorNr9r:r rrPrPpr;r rPc eZdZdfd ZxZS)InvalidBackendc,t|d|dy)NzInvalid backend: z=, see `torch._dynamo.list_backends()` for available backends.r&r')r*namer-s rr'zInvalidBackend.__init__us x'd e r )rUstrr/r0r1r6s@rrRrRts   r rRc eZdZdfd ZxZS) ResetRequiredcJt|tjdy)Nz Must call `torch._dynamo.reset()` before changing backends. Detected two calls to `torch.compile()` with a different backend compiler arguments. )r&r'textwrapdedent)r*r-s rr'zResetRequired.__init__|s!  OO  r r/r0r1r6s@rrXrX{s   r rXc8eZdZ dfd ZddZxZS)ShortenTracebackc2t||i|||_yr%)r&r'first_useful_frame)r*r`r+r,r-s rr'zShortenTraceback.__init__s $)&)"4r c|j}|j|tjr|S|j|jur.|j }|Jd|j|jur.|j |S)Nz#internal error, please report a bug) __traceback__r`rverbosetb_frametb_nextwith_traceback)r*tbs rremove_dynamo_framesz%ShortenTraceback.remove_dynamo_framessz     " " *bjFNNKkk!8!88B> H#H H>kk!8!88""2&&r )r+r r`Optional[types.FrameType]r,r r/r0)r/z typing.Self)r2r3r4r'rhr5r6s@rr^r^s-55.G5SV5 5 'r r^c0eZdZ dfd ZxZS)BackendCompilerFailedct|dd|_||_d|jdt|jd|}t |||y)Nr2?zbackend=z raised: z: )r`)getattr backend_nameinner_exceptiontyper2r&r')r* backend_fnrpr`msgr-s rr'zBackendCompilerFailed.__init__s_ $J C@.**-Z_8M8V8V7WWYZiYjk 1CDr )rrr rp Exceptionr`rir/r0r1r6s@rrkrks9 E E# E6 E  E Er rkc8eZdZdddfdZddZdd dZxZS) UnsupportedNrct||tjjj |_||_d|_|j||_ yr%) r&r'torch_guardsTracingContextr real_stackrscategory add_to_statsr)r*rsrr-s rr'zUnsupported.__init__sK --66DDF'+  (1r c|jJt|j|jxxdzcc<t|j|jdkrt|j|j=yy)Nrrr|rrsr*s rremove_from_statszUnsupported.remove_from_statssc}}((()Q.) DMM "488 , 1'1 2r cN||_t||jxxdz cc<y)Nrr)r*r|s rr}zUnsupported.add_to_statss"  488$)$r )rsrVrr@r/r0r\) unimplemented)r|rVr/r0)r2r3r4r'rr}r5r6s@rrvrvs?C22 **r rvc eZdZy)$UnknownPropertiesDuringBackwardTraceNr9r:r rrrr;r rc eZdZy)RecompileErrorNr9r:r rrrr;r rc eZdZdfd ZxZS)ArgsMismatchErrorc$t||yr%rTr*rsr-s rr'zArgsMismatchError.__init__ r rsrVr/r0r1r6s@rrr r rc eZdZdfd ZxZS)AttributeMutationErrorc$t||yr%rTrs rr'zAttributeMutationError.__init__rr rr1r6s@rrrrr rc eZdZdfd ZxZS)InfiniteGeneratorErrorc$t||yr%rTrs rr'zInfiniteGeneratorError.__init__rr rr1r6s@rrrs r rc eZdZdfd ZxZS)SideEffectsErrorc$t||yr%rTrs rr'zSideEffectsError.__init__rr rr1r6s@rrrrr rc$eZdZdZdfd ZxZS)CondOpArgsMismatchErrorz? Internal error from cond() due to arguments mismatch. c$t||yr%rTrs rr'z CondOpArgsMismatchError.__init__rr r)r2r3r4__doc__r'r5r6s@rrrsr rc|eZdZeZeZeZeZeZeZ eZ eZ y) UserErrorTypeN) r2r3r4rDYNAMIC_CONTROL_FLOW ANTI_PATTERNSTANDARD_LIBRARYCONSTRAINT_VIOLATION DYNAMIC_DIM INVALID_INPUTINVALID_OUTPUT*UNSUPPORTED_ALIASED_MUTATED_DYNAMIC_INPUTSr:r rrrs>66Lv6&KFMVN15.r rc2eZdZ d dfd ZxZS) UserErrorc|K r rc eZdZy)SkipCodeRecursiveExceptionNr9r:r rrrr;r rc eZdZy)RecompileLimitExceededNr9r:r rrrr;r rc eZdZy)UnsafeScriptObjectErrorNr9r:r rrr r;r rc"eZdZddfd ZxZS)UncapturedHigherOrderOpErrorct||||_|||_ytjj j |_yr%)r&r'rsrxryrzrr{)r*rsr{r-s rr'z%UncapturedHigherOrderOpError.__init__sJ %  --;;= r r%)rsrVr{Optional[StackSummary]r/r0r1r6s@rrrs   r rc eZdZy)IncorrectUsageNr9r:r rrrr;r rc eZdZy)FailOnRecompileLimitHitNr9r:r rrr r;r rc eZdZy) PackageErrorNr9r:r rrr$r;r rc eZdZy)ObservedExceptionNr9r:r rrr(r rc,eZdZUded<dfd ZxZS)ObservedUserStopIterationz Optional[Any]valuecdt|dt|dkDr |d|_yd|_y)Nzunhandled `raise StopIteration`r)r&r'lenrr)s rr'z"ObservedUserStopIteration.__init__3s. :; t9q=aDJDJr r.rCr6s@rrr-s r rc eZdZy)ObservedLookupErrorNr9r:r rrr;rr rc eZdZy)ObservedIndexErrorNr9r:r rrr@rr rc eZdZy)ObservedKeyErrorNr9r:r rrrErr rc eZdZy)ObservedGeneratorExitNr9r:r rrrJr;r rc eZdZy)ObservedAttributeErrorNr9r:r rrrNrr rc eZdZy)ObservedRuntimeErrorNr9r:r rrrSrr rc eZdZy)ObservedNotImplementedErrorNr9r:r rrrXr;r rc eZdZy)ObservedTypeErrorNr9r:r rrr\rr rc|tvr3t|dt|}td|dtfit|<t|S)Nr2ObservedError)observed_exception_maprnrVrqr)exc_typerUs rget_dynamo_observed_exceptionrnsN--xS];+/tfE "%6$8", x( "( ++r )r+r,cddlm}||j||xsg|xsi}|jj |t |)Nr)BuiltinVariable) variablesr call_function exn_vt_stackset_current_exceptionr)rtxr+r,r exception_vts rraise_observed_exceptionrwsH+#8,::2tzr6z,unimplemented_with_warning../  r cSr%r:graph_break_msgsrrz,unimplemented_with_warning..?r  metadata_fn payload_fn%s)from_exc) format_error_msg_verboserx_loggingtrace_structuredgraph_breaks_logdebuglogwarningr)ecodersrs @runimplemented_with_warningrs]/q$7O NN## + $41KK#"r )rrc|tjjddk7sJ|turt |||t ||)NBREAKFr)osenvironget_NOTHINGrv)rsrrs rrrsE "**..%0 00 0x#3A cY //r ct||tjjddfdtj dt |||||dy)Nrc dddSrr:r:r rrz/unimplemented_v2_with_warning..rr cSr%r:rsrrz/unimplemented_v2_with_warning..rr rrTr log_warning)rrxrrrrunimplemented_v2)rrgb_typecontext explanationhintsrs @runimplemented_v2_with_warningrsZ/q$7O NN## + $41Wg{EASWXr ctj|dj}djd|D}tj|dj}|d|d|d|d}|S)N rc3jK|]+}dtj|djz-yw)z Hint: rN)rZindentlstrip).0hints r z-format_graph_break_message..s.@D X__T6299;;s13z Explanation: z Developer debug context: )rZrrjoin)rrrr hints_strrss rformat_graph_break_messager!s //+v6==?K HMIoogv.557G  }  #9%  C Jr )maxsizec ttjj}t dt |d}t |5}tj|}dddi}jD]\}}|D] }|||d< |S#1swY4xYw#t$r"}tjd|i}Yd}~]d}~wwxYw)z Loads the gb_type to gb_id map from the graph break registry from JSON file with caching. Includes historical gb_type (mapping behavior of duplicate gb_types with different gb_ids is undefined). zgraph_break_registry.jsonNz%Error accessing the registry file: %sGb_type) r__file__resolveparentrrVopenjsonloadrtrerroritems) script_dir registry_pathfregistryrmappingkventrys r_load_gb_type_to_gb_id_mapr6s (^++-44 ' J!< -  $Ayy|H $ G *1 *E()GE)$ % ** N $ $  91=s0AB B BBB C (CC cXd}t}||vr|d||jddSy)z Retrieves the GBID documentation link for a given graph break type. Args: gb_type: The graph break type to look up. Returns: A string containing the documentation URL if found, otherwise None. z;https://meta-pytorch.github.io/compile-graph-break-site/gb/gbGBz.htmlN)r6r)rGRAPH_BREAK_SITE_URLgb_type_to_gb_id_maps rget_gbid_documentation_linkr<sO F67&&#$B';G'D'K'KD'Q&RRW X  r Frct||||}t|}|r|d|z }|rtj||tur t ||t |)a Called within dynamo to cause a graph break. Args: gb_type: Context-free graph break type. It should be a short string without any information specific to the tracing context (i.e. no dynamically-generated strings) context: Developer context for the graph break. It can contain tracing context/dynamic strings. explanation: User-facing context-dependent explanation for the graph break. Can be dynamic. hints: List of user-facing hints for the graph break. z9 For more details about this graph break, please visit: )r!r<rrr rv)rrrrrrrsdocumentation_links rrr6se& %Wg{E JC4W= KL^K_`` Cx#H, c r c$eZdZddZddZddZy) KeyErrorMsgc||_yr%)r)r*rs rr'zKeyErrorMsg.__init__Zs  r c,t|jSr%)rVrrs r__str__zKeyErrorMsg.__str__]s4::r c"|jSr%)rCrs r__repr__zKeyErrorMsg.__repr__`s||~r N)rr r/r0)r/rV)r2r3r4r'rCrEr:r rr@r@Ysr r@cddl}d|_t|}|>t|dkDr0|d|_|ddj |j |z }t jr,t|dr |d|jd|jdz }t jst|d r|d z }t|d r~t|jd rht|jd r5|d|jjd|jjdz }n|d|jjdz }t|jdk(rdnt|jd}t!|t"r%t%||zf|jddz|_y||z}|f|jddz|_y)Nrz from user code: r$record_filenamez! Last frame execution written to zD. To run only this frame while debugging, run torch._dynamo.replay('z'). r{z Set TORCHDYNAMO_VERBOSE=1 for the internal stack trace (please do this especially if you're reporting a bug to PyTorch). For even more developer context, set TORCH_LOGS="+dynamo" rp minifier_path buck_commandz Minifier script written to zW. Run this buck command to find the smallest traced graph which reproduces this error: rzQ. Run this script to find the smallest traced graph which reproduces this error. r) tracebackinnermost_user_frame_summaryget_real_stackrrr rreplay_record_enabledhasattrrHrcrprIrJr+rVrKeyErrorr@)excrsexportrKr{old_msgnew_msgs raugment_exc_messagerUds'+C$$J#j/A"5+5b>( %bggi.C.CJ.O&P%QRR ##5F(G 01D1D0EF++,E 3  >>gc<8  J  s%&7 _, 3&& 7 /0C0C0Q0Q/RS0030C0C0P0P/QQSU C /0C0C0Q0Q/RS__ C MQ&bC ,> !  enn ,   5>> ) JJ4 B %  ! r chddlm}tj|d|}|r|j dSy)Nr)TORCH_DYNAMO_RESUME_IN_PREFIXz _(\w+)_at_\d+)resume_executionrjrematchgroup)rUrjrms rremove_resume_prefixros2? HH56oF ME {{1~ r ct}|D]X}|jt|j}|r!|r|dj|k(r ||d<||_H|j |Z|S)a1 When we graph break, we create a resume function and make a regular Python call to it, which gets intercepted by Dynamo. This behavior is normally shown in the traceback, which can be confusing to a user. So we can filter out resume frames for better traceback clarity. Example: File "..." line 3, in f File "..." line 5, in torch_dynamo_resume_in_f_at_80 File "..." line 10, in torch_dynamo_resume_in_f_at_120 becomes File "..." line 10, in f rG)r rWrorUrf)rg new_stackr`rUs rcollapse_resume_framesrrsq(I$ >> ! #EJJ/ )B-"4"4"<!IbMEJ   U #$ r cd|jd|jd|jd}|dz }|tz }t ||}|,|dz }|dj t |z }|dz }|dz }|S) NWON'T CONVERT r line rz.========== TorchDynamo Stack Trace ========== zY ========== The above exception occurred while processing the following code ========== r$z ==========)co_name co_filenameco_firstlinenor rMrr )rQrrHr`rsr{s rrrs a(8(8'9@S@S?TTVW CCC:<CU+J    rww{:.// t  x Jr c tjrt||||Sd|jd|jd|j dt S)Nrtrruz due to: )rrcrrvrwrxr )rQrrHr`s rformat_error_msgrzsW ~~'T?EJJ DLL>4+;+;*<= = 88r )rrVr/rV)rtype[Exception]r/ztype[ObservedException]) rr{rrr+zOptional[list[Any]]r,zOptional[dict[str, Any]]r/r )rr r/r0)rrtrtypes.CodeTypersrVr/r )rsrVrr rr@r/r )rrtrr|rrVrrVrrVr list[str]r/r ) rrVrrVrrVrr}r/rV)r/zdict[str, Any])rrVr/r@)rrVrrVrrVrr}rr rboolr/r )rF)rQrtrsrVrRr~r/r0)rrtrYrr/z#tuple[Optional[str], Optional[int]])r/r r%)rQrtr`Optional[DynamoFrameType]r/r)rgr r/r )rUrVr/r@)NN) rQrtrr|rHr@r`rr/rV) __future__rr*loggingrrlrZtypingenumrr functoolsrpathlibrrKrr r r r r rr torch._guardsrxtorch._utils_internalrr$rutilsrtypesr output_graphrsymbolic_convertrrr getLoggerr2rrgetArtifactLoggerr RuntimeErrorr#r8r=r?rFrHrJrLrNrPrRrXr^rkrvrrrrrrrrrrrrrrtrrrrrrrrrrrrr StopIteration LookupError IndexError GeneratorExitrPAttributeErrorNotImplementedError TypeErrorrrrr _subclasses fake_tensorDataDependentOutputExceptionDynamicOutputShapeExceptionUnsupportedOperatorExceptionUnsupportedFakeTensorException$UnsupportedMutationAliasingException!exceptions_allowed_to_be_fallbackrobjectr rrr!r6r<rr@rUrZr]rMr\rorrrrzr:r rrs"2   JJ991'0;&g!>>33HnMN<N  3  !5  *    /    _  $  ,  )   (  '+'" E, E*&*( ;  )   [ [ { /8D8 0 !5  [  2  #7  Y  i  '  ,  1  +  ,  *  -  .  ,  "3  ) ,$"( *&4   ,!%'+ 2 2! 2  2 % 2  2 .< !!>> !!== !!>> !!@@ !!FF %!##&#-0# #0 8"*d0 006C0 0YY YY Y  Y  YY8      , 12>      F,-^  ' ( ) 8<C C4CCB  J&*'+   # %   <&*'+ 8  8  8# 8 % 8  8r