JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr 0i<ddlmZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlmZmZddlmZddlmZmZddlZddlmZmZddlmZdd lmZmZm Z dd l!m"Z"m#Z#m$Z$dd lm%Z%d d ddddddZ&e'jQe&dZ)ejTde&Z+d1dZ,d2d3dZ- d4 d5dZ.ej^j`dz Z1e1dkrdZ1ee jdde1Z3ddd6dZ4d7d Z5d8d9d!Z6d:d"Z7 d;d#Z8 d< d=d$Z9 d>d%Z:ejvd?d&Z dA dBd)Z?dCd*Z@dDdEd+ZAd1d,ZBeCd-k(reAe jddd.d/d0gZEy)F) annotationsN)IteratorSequence)partial)NoReturnTextIO)ProjectBuilder_ctx)env)BuildBackendExceptionBuildExceptionFailedProcessError)ConfigSettings DistributionStrPath)DefaultIsolatedEnvzzzzzzz)redgreenyellowbolddim underlinereset_styles)defaultcBdtjvrCdtjvrtjddtj t n1dtjvstjjrytj t y)NNO_COLOR FORCE_COLORzLBoth NO_COLOR and FORCE_COLOR environment variables are set, disabling color) stacklevel) osenvironwarningswarnrset _NO_COLORSsysstdoutisatty=/opt/hc_python/lib/python3.12/site-packages/build/__main__.py _init_colorsr//s`RZZ BJJ & MMhuv w J "** $ (9(9(; KK r-cft|j|fitj|dy)NT)fileflush)printformatrget)fmtmsgr1s r._cprintr89s$ *#**S *GKKM *TBr-c.tdt|y)Nz{yellow}WARNING{reset} {})r8str)messagecategoryfilenamelinenor1lines r. _showwarningr@=s 'W6r-r!N )subsequent_indentwidth)origincP|G|j^}}tdt|d|D]}tt|dy|ddk(rU|ddk(rd nd }|dd k(rtj nd}|jD]}td t||| yy)Nz{bold}{}{reset}z* )initial_indentrBr subprocessr cmdz> z< stderrz{dim}{}{reset})r1) splitlinesr8_fillr3r)rJ)r;rEfirstrestr?rGr1s r._logrOPs ~ ++-!5t#DED %T2 3 l "!'e!3#AY(2szz&&(D $eD&PW[ \) #r-c0tt_tjdk(r ddl}|j ttjjttjj|y#t$rYXwxYw)NWindowsr)r@r% showwarningplatformsystemcoloramainitModuleNotFoundErrorr/r LOGGERr'rO VERBOSITY) verbosityrUs r. _setup_clir[^sg'HI%   MMONKKOODNNy! #   sB BBc0td|t|)z Print an error message and exit. Will color the output when writing to a TTY. :param msg: Error message :param code: Error code z{red}ERROR{reset} {})r8 SystemExit)r7codes r._errorr_os "C( T r-c2djd|DS)Nz -> c3`K|]&}|jddj(yw);rN) partitionstrip).0deps r. z$_format_dep_chain..{s(J s}}S)!,224 s,.)join) dep_chains r._format_dep_chainrjzs ;;J J JJr-c t|5}tj||}|j|j|j|j ||xsi|j |||xsicdddS#1swYyxYw)N) installer)rr from_isolated_envinstallbuild_system_requiresget_requires_for_buildbuild)srcdiroutdir distributionconfig_settingsrlr builders r._build_in_isolated_envrw~sr i 0C 223? G112 G22<AVTVWX}}\6?3HbI 1 0 0s A-BB ct|}|sH|j||xsi}|r0djd|D}tt d||j |||xsiS)Nrc3\K|]$}|dt|ddfD] }|sd|z&yw)rr Nz )rj)redepsrfs r.rgz(_build_in_current_env..s="}GDPTUVPWYjkopqprksYtOuy|6C?|jd@dAdBdCD|S)Ez$ Construct the main parser. )rD)T)colora A simple, correct Python build frontend. By default, a source distribution (sdist) is built from {srcdir} and a binary distribution (wheel) is built from the sdist. This is recommended as it will ensure the sdist can be used to build wheels. Pass -s/--sdist and/or -w/--wheel to build a specific distribution. If you do this, the default behavior will be disabled, and all artifacts will be built from {srcdir} (even if you combine -w/--wheel with -s/--sdist, the wheel will be built from {srcdir}). z ) descriptionformatter_class)suggest_on_errorrrr?z0source directory (defaults to current directory))typenargsrhelpz --versionz-Vversionzbuild z (,))actionrz --verbosez-vrZcountrzincrease verbosity)destrrrz--sdistz-sr append_constrz;build a source distribution (disables the default behavior))rrconstrz--wheelz-wwheelz-build a wheel (disables the default behavior)z--outdirz-oz&output directory (defaults to {srcdir}zdist)PATH)rrmetavarz--skip-dependency-checkz-x store_truez2do not check that build dependencies are installed)rrz--no-isolationz-nzdisable building the project in an isolated virtual environment. Build dependencies must be installed separately when this option is usedz --installerz1Python package installer to use (defaults to pip))choicesrz--config-settingz-Crurzsettings to pass to the backend. Multiple settings can be provided. Settings beginning with a hyphen will erroneously be interpreted as options to build if separated by a space character; use ``--config-setting=--my-setting -C--my-other-setting``z KEY[=VALUE])rrrrz --config-json config_jsonzsettings to pass to the backend as a JSON object. This is an alternative to --config-setting that allows complex nested structures. Cannot be used together with --config-setting JSON_STRING)rrr)rargparseRawDescriptionHelpFormattermin_max_terminal_widthr) version_infoArgumentParsertextwrapindentdedentrd add_argumentr:r#getcwdrq __version__rh__path__sepadd_mutually_exclusive_group_env INSTALLERS)r make_parserparser env_group config_groups r. main_parserr!shBB#NacfJghO 7"!/>OO OO  eg ! ((-K0 7"kDM ]F   ?   **+2chhu~~.F-GqI     !    J    <   7xu E  !  A  335I  S  @ 668L [  8  Mr-c Ht}|r||_|j|}t|ji}|j r< t j|j }t|ts tdnl|jr`|jD]Q}|jd\}}} ||vr| ||<"t||ts ||g||<||j| S|j *t"j$j'|j(dn |j } |j*} | rt,} n t.} dg} t15| |j(| | ||j2 |j4|j6} t9| Dcgc]'}dj:|fit<j?)c}}tAd |dddy#t j$r}td|Yd}~d}~wwxYwcc}w#1swYyxYw) z Parse the CLI arguments and invoke the build process. :param cli_args: CLI arguments :param prog: Program name to show in help text )rZzN--config-json must contain a JSON object (dict), not a list or primitive valuezInvalid JSON in --config-json: N=distrz!{underline}{}{reset}{bold}{green}z){bold}{green}Successfully built {}{reset})!rprog parse_argsr[rZrjsonloadsrdictr_JSONDecodeErrorrurclistrrsr#rrhrrrrrr no_isolationr|rlrr4rr5r8)cli_argsrrargsrurargsetting_valuersr build_callrartifact artifact_lists r.mainrs]F    X &D(O  :"jj)9)9:Oot4gh   ''C # c 2 GQo-+0(!/'":DA0?0H/IOG,(//6(37++2ERWW\\$++v .4;;F(,(:(:M" ,    KK   !! !  & & NN /ch ichW_ 7 0 7 7 RGKKM Rch i  ;]K  3## : 4QC8 9 9 :H j  s7 :G$AH,H H$H7H  HHH!c<ttjddy)Nr )rr)argvr,r-r. entrypointrs!"r-__main__zpython -m buildrr)returnNone)rrN)r6r:r7r:r1 TextIO | Nonerr)NN)r;z Warning | strr<z type[Warning]r=r:r>intr1rr? str | Nonerr)r;r:rEztuple[str, ...] | Nonerr)rZrrr)r )r7r:r^rrr)ri Sequence[str]rr:) rrrrsrrtrruConfigSettings | Nonerl_env.Installerrr:)F) rrrrsrrtrrurr|boolrr:)rrrrrrsrrtrrurr|rrlrrr:)rzIterator[None])rrrr:)NTFpip)rrrrsrrzSequence[Distribution]rurrrr|rrlrrr)rzargparse.ArgumentParserr)rrrrrr)F __future__rr contextlib contextvarsrr#rSrrHr)rrrr%collections.abcrr functoolsrtypingrrrqrr r r r _exceptionsr rr_typesrrrr_COLORSrfromkeysr( ContextVarrr/r8r@get_terminal_sizecolumnsrfillrLrOr[r_rjrwrrcontextmanagerrrrrrrr__name__r__all__r,r-r.rsU#   .# "RR99#      ]]7B '  !+ G <C 7 777  7  7  7 7/f..0881<!  =PQ<@ ]""K J  J  J J+ J  J  J*#( F F FF+ F  F  F& k k  k  k k + k  k k  k 8  ".2"' %  *+     <.2"' %* * * ** + *  *  * * * Zxv<L~ z!"()  r-