66import os
77from pathlib import Path
88import subprocess
9- import logging
109from time import sleep
1110import tomlkit
1211from utils import is_package_published
@@ -43,7 +42,7 @@ def patch_version_with_retries(version: str, retries: int = 30):
4342 sleep (10 )
4443
4544
46- def wait_for_package_publish (package : str , version : str ) -> None :
45+ def wait_for_pypi_publish (package : str , version : str ) -> None :
4746 seconds = 0
4847 increment = 5
4948 while seconds < 600 : # Wait for 10 minutes
@@ -58,6 +57,24 @@ def wait_for_package_publish(package: str, version: str) -> None:
5857 raise TimeoutError (f"Package { package } with version { version } is not published after 10 minutes" )
5958
6059
60+ def wait_for_poetry_available (package : str , version : str ) -> None :
61+ seconds = 0
62+ increment = 5
63+ while seconds < 600 : # Wait for 10 minutes
64+ try :
65+ pacver = subprocess .check_output (["poetry" , "search" , f"{ package } @{ version } " , "|" , "grep" , package ], encoding = "utf-8" )
66+ if version in pacver :
67+ logger .info (f"{ package } with version { version } is available with poetry." )
68+ break
69+ except subprocess .CalledProcessError :
70+ sleep (increment )
71+ seconds += increment
72+ logger .info (f"Waiting for poetry to be available for { seconds } seconds" )
73+
74+ if seconds == 600 :
75+ raise TimeoutError (f"Package { package } with version { version } is not available on poetry after 10 minutes" )
76+
77+
6178def publish_package (package : str , version : str ) -> None :
6279 if is_package_published (package , version ):
6380 logger .warning (f"Skip publish: Package { package } with version { version } is already published" )
@@ -71,7 +88,8 @@ def publish_package(package: str, version: str) -> None:
7188 except subprocess .CalledProcessError :
7289 logger .error (f"Failed to publish { package } " )
7390
74- wait_for_package_publish (package , version )
91+ wait_for_pypi_publish (package , version )
92+ wait_for_poetry_available (package , version )
7593
7694
7795if __name__ == "__main__" :
0 commit comments