§ À•¿jîãó—ddlmZddlmZddlmZddlZddlZddlmZddl Z ddl mZ ddl m ZddlmZddlmZddlZejd ej¦«ZGd „d e¦«ZGd „d e¦«ZGd„de¦«ZdS)é)Úprint_function)Údivision)Úabsolute_importN)Úclient)Ú configparser)ÚSafeConfigParser)Ú ExpatErrorz"^(?P.+) \((?P.+)\)$có"‡—eZdZdZˆfd„ZˆxZS)ÚPyPIRpcApiErrorze Generic error class that means that we cannot properly get information from xml rpc api có^•—tt|¦« d|z¦«dS)NzÜWe are having issues with PyPI RPC api. You can check https://status.python.org/ to see of there are any problems with PyPI or contact CloudLinux support if you see this message for a long time.Original message was: '%s')Úsuperr Ú__init__)ÚselfÚmessageÚ __class__s €ú]/opt/cloudlinux/venv/lib64/python3.11/site-packages/clselect/clselectpythonuser/extensions.pyrzPyPIRpcApiError.__init__!s>ø€Ý �o˜tÑ$Ô$×-Ò-ð )ð,3ñ  3ñ 4ô 4ð 4ð 4ð 4ó©Ú__name__Ú __module__Ú __qualname__Ú__doc__rÚ __classcell__©rs@rr r sBø€€€€€ððð4ð4ð4ð4ð4ð4ð4ð4ð4rr có"‡—eZdZdZˆfd„ZˆxZS)ÚPyPIMaintenanceExceptionz‚ Raised when PyPY returns 503 error, which means that service is unavailable temporary and we should try again later. cóX•—tt|¦« d¦«dS)NzáLooks like PyPI is down for maintenance and we are not able to use it. You can check https://status.python.org/ to see of there are any problems with PyPI or contact CloudLinux support if you see this message for a long time.)r rr)rrs €rrz!PyPIMaintenanceException.__init__/s5ø€Ý Õ&¨Ñ-Ô-×6Ò6ð ?ñ ô ð ð ð rrrs@rrr*sBø€€€€€ððð ð ð ð ð ð ð ð ð rrcó˜—eZdZdZd„Zd„Zd„Zd„Zed„¦«Z ed„¦«Z ed„¦«Z ed „¦«Z ed „¦«Z d S) Ú ExtensionInfozhttps://pypi.python.org/pypicóB—tj|j¦«|_dS©N)Ú xmlrpclibÚ ServerProxyÚurlÚ_rpc)rs rrzExtensionInfo.__init__=s€ÝÔ)¨$¬(Ñ3Ô3ˆŒ ˆ ˆ rcóò— |j |¦«|i|¤ŽS#tjtf$r!}t t |¦«¦«‚d}~wtj$rD}|j tj krt¦«‚t t |¦«¦«‚d}~wtj $r}t |j¦«‚d}~wtj$r}t |j¦«‚d}~wwxYwr!)r%Ú __getattr__ÚsocketÚgaierrorr r Ústrr"Ú ProtocolErrorÚerrcodeÚhttplibÚSERVICE_UNAVAILABLErÚFaultÚ faultStringÚsslÚSSLErrorÚstrerror)rÚmethodÚargsÚkwargsÚerrs rÚ __get_rpczExtensionInfo.__get_rpc@sÿ€ð 0Ø0�4”9×(Ò(¨Ñ0Ô0°$ÐA¸&ÐAÐAÐ AøÝ”¥Ð,ð ,ð ,ð ,Ý!¥# c¡(¤(Ñ+Ô+Ð +øøøøÝÔ&ð ,ð ,ð ,ØŒ{�gÔ9Ò9Ð9Ý.Ñ0Ô0Ð0Ý!¥# c¡(¤(Ñ+Ô+Ð +øøøøÝŒð 3ð 3ð 3Ý! #¤/Ñ2Ô2Ð 2øøøøÝŒ|ð 0ð 0ð 0Ý! #¤,Ñ/Ô/Ð /øøøøð 0øøøs8‚"¢C6¸AÁC6Á&?B%Â%C6Â7C à C6ÃC1Ã1C6có`—| d¦«}t |¦«S)NÚ list_packages)Ú_ExtensionInfo__get_rpcrÚextensions_docs©rÚ extensionss rÚlist_extensionszExtensionInfo.list_extensionsNs'€Ø—^’^ OÑ4Ô4ˆ Ý×,Ò,¨ZÑ8Ô8Ð8rcó:‡—tˆfd„|D¦«¦«S)Nc3óN•K—|]}|d‰ d|d¦«ifV—Œ dS)ÚversionsÚpackage_releasesTN)r;)Ú.0Ú extensionrs €rú z8ExtensionInfo.list_extensions_version..UsTøèè€ð1ð1Ø!ð ¨T¯^ª^Ð.^sDèè€ð-ð-Øõ×+Ò+¨IÑ6Ô6ð-ð-ð-ð-ð-ð-rc3ó(K—|] \}}|d|ifV—ŒdS)ÚdocN©)rDrErPs rrFz0ExtensionInfo.extensions_docs..`sKèè€ðAðAÙ&˜  3ð ¨  Ð-ðAðAðAðAðAðAr)rGÚzip)r>Údocss rr<zExtensionInfo.extensions_docs\s`€ð-ð-Ø!+ð-ñ-ô-ˆåðAðAÝ*-¨j¸$Ñ*?Ô*?ðAñAôAñAôAð ArcóÔ—t|t¦«s|S| ¦« ¦«}| dd¦« dd¦«}|S)u¸ Normalise a PyPI package name for the locked-extensions lookup. Per PEP 503, package names are case-insensitive and `-`/`_`/`.` are equivalent — `Requests`, `requests`, `re_quests`, `re-quests` all refer to the same distribution. Strip whitespace, lower-case, and collapse separators so the dict-key check below cannot be bypassed by a benign-looking variant of a locked package. Ú_ú-ú.)Ú isinstancer*ÚstripÚlowerÚreplace)ÚnameÚ normaliseds rÚ_canonicalise_extension_namez*ExtensionInfo._canonicalise_extension_namecs_€õ˜$¥Ñ$Ô$ð ØˆKØ—Z’Z‘\”\×'Ò'Ñ)Ô)ˆ Ø×'Ò'¨¨SÑ1Ô1×9Ò9¸#¸sÑCÔCˆ ØÐrcó—| dd¦«}tj d|dd¦«}tj |¦«sCtj tj t ¦«dd¦«}tdd¬¦«}| |¦« |  |¦«}n#tj $rd }YnwxYwtd „|D¦«¦«S) NrWÚz/opt/altÚetczlocked_extensions.iniz..F)Ú interpolationÚstrictrQc3óŽK—|]@\}}t |¦«d„| d¦«D¦«fV—ŒAdS)có:—g|]}|¯| ¦«‘ŒSrQ)rY)rDÚvs rú zAExtensionInfo.get_locked_extensions...Šs%€Ð :Ð :Ð :˜A¸Ð :ˆa�gŠg‰iŒiÐ :Ð :Ð :rú,N)rr^Úsplit)rDrErBs rrFz6ExtensionInfo.get_locked_extensions..ˆslèè€ð ð ñ$� ˜8õ× 7Ò 7¸ Ñ BÔ BØ :Ð : §¢°Ñ!4Ô!4Ð :Ñ :Ô :ð <ð ð ð ð ð ð r) r[ÚosÚpathrKÚexistsÚdirnameÚ__file__rÚreadÚitemsÚ ConfigParserÚNoSectionErrorrG)Ú interpreterÚalt_verÚ file_pathÚparserrps rÚget_locked_extensionsz#ExtensionInfo.get_locked_extensionsxs€à×%Ò% c¨"Ñ-Ô-ˆÝ”G—L’L ¨W°eÐ=TÑUÔUˆ ÝŒw�~Š~˜iÑ(Ô(ð _ÝœŸ š ¥R¤W§_¢_µXÑ%>Ô%>ÀÐF]Ñ^Ô^ˆIÝ!°¸UÐCÑCÔCˆØ� Š �IÑÔÐð Ø—L’L Ñ-Ô-ˆEˆEøÝÔ*ð ð ð ØˆEˆEˆEð øøøõ ð ð ð(-ð ñ ô ñ ô ð sÃCÃC,Ã+C,có*‡—t |¦«}| |¦«pg}||vo]tt ˆfd„‰ d¦«D¦«¦«t |¦«z¦«pt |¦«dkS)Ncó^•—g|])}t‰¦«dk¯| ¦«‘Œ*S)r)ÚlenrY)rDrfÚversions €rrgz6ExtensionInfo.is_extensions_locked..šs1ø€ÐPÐPÐP A½sÀ7¹|¼|ÈaÒ?OÐ?O�a—g’g‘i”iÐ?OÐ?OÐ?Orrhr)rr^ÚgetÚlistÚsetrirz)Úlocked_extensionsrEr{Úlocked_versionss ` rÚis_extensions_lockedz"ExtensionInfo.is_extensions_lockedŽs¢ø€õ "×>Ò>¸yÑIÔIˆ ð,×/Ò/° Ñ:Ô:Ð@¸bˆØÐ.Ð.ð Ý •ÐPÐPÐPÐP¨¯ª°sÑ);Ô);ÐPÑPÔPÑQÔQÝ�oÑ&Ô&ñ'ñ (ô (ð &å �Ñ Ô  AÒ %ð rN)rrrr$rr;r?rHÚ staticmethodrLr<r^rwr�rQrrrr9s߀€€€€à (€Cð4ð4ð4ð 0ð 0ð 0ð9ð9ð9ð1ð1ð1ð ð=ð=ñ„\ð=ððAðAñ„\ðAð ððñ„\ðð(ð ð ñ„\ð ð*ð ð ñ„\ð ð ð rr)Ú __future__rrrrjÚreÚfuture.moves.httprr-r(Úfuture.moves.xmlrpcr"Ú future.movesrrqÚfuture.moves.configparserrÚpyexpatr r1ÚcompileÚ MULTILINEÚEXTENSION_PATTERNÚ Exceptionr rÚobjectrrQrrúr�skðð&Ð%Ð%Ð%Ð%Ð%ØÐÐÐÐÐØ&Ð&Ð&Ð&Ð&Ð&Ø € € € Ø € € € Ø/Ð/Ð/Ð/Ð/Ð/Ø € € € Ø3Ð3Ð3Ð3Ð3Ð3Ø5Ð5Ð5Ð5Ð5Ð5Ø6Ð6Ð6Ð6Ð6Ð6ðÐÐÐÐÐà € € € à�B”JÐCØ!œ|ñ-ô-Ðð 4ð 4ð 4ð 4ð 4�iñ 4ô 4ð 4ð  ð  ð  ð  ð  ˜ñ  ô  ð  ðd ðd ðd ðd ðd �Fñd ôd ðd ðd ðd r