Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 21 additions & 3 deletions scripts/publish_packages.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import os
from pathlib import Path
import subprocess
import logging
from time import sleep
import tomlkit
from utils import is_package_published
Expand Down Expand Up @@ -43,7 +42,7 @@ def patch_version_with_retries(version: str, retries: int = 30):
sleep(10)


def wait_for_package_publish(package: str, version: str) -> None:
def wait_for_pypi_publish(package: str, version: str) -> None:
seconds = 0
increment = 5
while seconds < 600: # Wait for 10 minutes
Expand All @@ -58,6 +57,24 @@ def wait_for_package_publish(package: str, version: str) -> None:
raise TimeoutError(f"Package {package} with version {version} is not published after 10 minutes")


def wait_for_poetry_available(package: str, version: str) -> None:
seconds = 0
increment = 5
while seconds < 600: # Wait for 10 minutes
try:
pacver = subprocess.check_output(["poetry", "search", f"{package}@{version}", "|", "grep", package], encoding="utf-8")
if version in pacver:
logger.info(f"{package} with version {version} is available with poetry.")
break
except subprocess.CalledProcessError:
sleep(increment)
seconds += increment
logger.info(f"Waiting for poetry to be available for {seconds} seconds")

if seconds == 600:
raise TimeoutError(f"Package {package} with version {version} is not available on poetry after 10 minutes")


def publish_package(package: str, version: str) -> None:
if is_package_published(package, version):
logger.warning(f"Skip publish: Package {package} with version {version} is already published")
Expand All @@ -71,7 +88,8 @@ def publish_package(package: str, version: str) -> None:
except subprocess.CalledProcessError:
logger.error(f"Failed to publish {package}")

wait_for_package_publish(package, version)
wait_for_pypi_publish(package, version)
wait_for_poetry_available(package, version)


if __name__ == "__main__":
Expand Down