param( [Parameter(Mandatory=$true)] [string]$PythonFile, [int]$SpecialExitCode = 42, [int]$MaxAttempts = 20 ) function Run-PythonScript { param($ScriptPath) $process = Start-Process -FilePath "python" -ArgumentList $ScriptPath -PassThru -Wait -NoNewWindow return $process.ExitCode } function Git-Pull { git pull return $LASTEXITCODE -eq 0 } $attempt = 1 $waitTime = 15 while ($attempt -le $MaxAttempts) { Write-Host "Attempt $attempt of $MaxAttempts" $exitCode = Run-PythonScript -ScriptPath $PythonFile if ($exitCode -eq $SpecialExitCode) { Write-Host "Special exit code detected. Attempting git pull..." if (Git-Pull) { Write-Host "Git pull successful. Restarting Python script..." $attempt = 1 $waitTime = 15 continue } else { Write-Host "Git pull failed. Waiting $waitTime seconds before next attempt..." } } else { Write-Host "Python script exited with code $exitCode. Exiting..." exit $exitCode } Start-Sleep -Seconds $waitTime $attempt++ $waitTime *= 2 } Write-Host "Maximum attempts reached. Exiting..." exit 1