From 79cb5b229bd370ae0bbd83bd6a07a5c10069c9ff Mon Sep 17 00:00:00 2001 From: Karl Preisner Date: Thu, 2 Jan 2025 19:03:38 +0000 Subject: [PATCH 1/3] fix python version in github action for pypi build --- .github/workflows/build-publish-pypi.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-publish-pypi.yml b/.github/workflows/build-publish-pypi.yml index b86bbdb..10cdd4c 100644 --- a/.github/workflows/build-publish-pypi.yml +++ b/.github/workflows/build-publish-pypi.yml @@ -22,7 +22,7 @@ jobs: - name: Set Up Python uses: actions/setup-python@v5 with: - python-version: '3.8.1' + python-version: 3.10.6 - name: Extract Version from Tag run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV From dffaa9a3d180ad03155aba0c426fabdefda5a68e Mon Sep 17 00:00:00 2001 From: Karl Preisner Date: Thu, 2 Jan 2025 21:36:01 +0000 Subject: [PATCH 2/3] check finished_processing boolean instead of status string when polling for completion --- src/sindri/sindri.py | 42 ++++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/src/sindri/sindri.py b/src/sindri/sindri.py index e0cbd18..2019507 100644 --- a/src/sindri/sindri.py +++ b/src/sindri/sindri.py @@ -161,10 +161,12 @@ def _get_circuit(self, circuit_id: str, include_verification_key: bool = False) raise Sindri.APIError("Received unexpected type for circuit detail response.") return response_json - def _get_circuit_status( - self, - circuit_id: str, - ) -> str: + def _get_circuit_status(self, circuit_id: str) -> str: + """Hit the circuit_status API endpoint and validate the response. Do not print anything. + This may raise `Sindri.APIError` if the response is invalid.""" + return self._get_circuit_finished_status(circuit_id)[1] + + def _get_circuit_finished_status(self, circuit_id: str) -> Tuple[bool, str]: """Hit the circuit_status API endpoint and validate the response. Do not print anything. This may raise `Sindri.APIError` if the response is invalid.""" response_status_code, response_json = self._hit_api( @@ -178,10 +180,11 @@ def _get_circuit_status( ) if not isinstance(response_json, dict): raise Sindri.APIError("Received unexpected type for circuit status response.") + finished_processing = response_json.get("finished_processing", False) status = response_json.get("status", "") if status == "": raise Sindri.APIError("Received unexpected type for circuit status response.") - return status + return finished_processing, status def _get_proof( self, @@ -212,10 +215,12 @@ def _get_proof( raise Sindri.APIError("Received unexpected type for proof detail response.") return response_json - def _get_proof_status( - self, - proof_id: str, - ) -> str: + def _get_proof_status(self, proof_id: str) -> str: + """Hit the proof_status API endpoint and validate the response. Do not print anything. + This may raise `Sindri.APIError` if the response is invalid.""" + return self._get_proof_finished_status(proof_id)[1] + + def _get_proof_finished_status(self, proof_id: str) -> Tuple[bool, str]: """Hit the proof_status API endpoint and validate the response. Do not print anything. This may raise `Sindri.APIError` if the response is invalid.""" response_status_code, response_json = self._hit_api( @@ -229,10 +234,11 @@ def _get_proof_status( ) if not isinstance(response_json, dict): raise Sindri.APIError("Received unexpected type for proof status response.") + finished_processing = response_json.get("finished_processing", False) status = response_json.get("status", "") if status == "": raise Sindri.APIError("Received unexpected type for proof status response.") - return status + return finished_processing, status def _get_verbose_1_circuit_detail(self, circuit_detail: dict) -> dict: """Return a slim circuit detail object for printing.""" @@ -437,12 +443,12 @@ def create_circuit( print(f" circuit_id: {circuit_id}") if wait: - # 2. Poll circuit detail until it has a status of Ready/Failed + # 2. Poll circuit detail until it is finished processing if self.verbose_level > 0: - print("Circuit: Poll until Ready/Failed") + print("Circuit: Poll until Finished") for _ in range(self.max_polling_iterations): - circuit_status = self._get_circuit_status(circuit_id) - if circuit_status in ["Ready", "Failed"]: + finished_processing, _ = self._get_circuit_finished_status(circuit_id) + if finished_processing: break time.sleep(self.polling_interval_sec) else: @@ -820,12 +826,12 @@ def prove_circuit( print(f" proof_id: {proof_id}") if wait: - # 2. Poll proof detail until it has a status of Ready/Failed + # 2. Poll proof detail until it is finished processing if self.verbose_level > 0: - print("Proof: Poll until Ready/Failed") + print("Proof: Poll until Finished") for _ in range(self.max_polling_iterations): - proof_status = self._get_proof_status(proof_id) - if proof_status in ["Ready", "Failed"]: + finished_processing, _ = self._get_proof_finished_status(proof_id) + if finished_processing: break time.sleep(self.polling_interval_sec) else: From 5e135d6e4bc518de7d4860775061ca7a8ec069aa Mon Sep 17 00:00:00 2001 From: Karl Preisner <107863522+KPreisner@users.noreply.github.com> Date: Thu, 2 Jan 2025 14:46:09 -0700 Subject: [PATCH 3/3] Revert accidental change --- .github/workflows/build-publish-pypi.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-publish-pypi.yml b/.github/workflows/build-publish-pypi.yml index 10cdd4c..b86bbdb 100644 --- a/.github/workflows/build-publish-pypi.yml +++ b/.github/workflows/build-publish-pypi.yml @@ -22,7 +22,7 @@ jobs: - name: Set Up Python uses: actions/setup-python@v5 with: - python-version: 3.10.6 + python-version: '3.8.1' - name: Extract Version from Tag run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV