Skip to content
Merged
Show file tree
Hide file tree
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
3 changes: 3 additions & 0 deletions .github/workflows/NewUpdate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,9 @@ jobs:

chmod +x ./client-api_r/patches/list_syntax_fix.sh
./client-api_r/patches/list_syntax_fix.sh

chmod +x ./client-api_r/patches/insert_wait_for_job_completion_in_rsirius_api.sh
./client-api_r/patches/insert_wait_for_job_completion_in_rsirius_api.sh
- name: Remove Sirius Rest Api
run: |
cd .updater/api
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
jobSub.ms_novelist_params.enabled = False

job = api.jobs().start_job(project_id=ps_info.project_id, job_submission=jobSub)
Helper.wait_for_job_completion(ps_info.project_id, job.id, api.jobs())
api.wait_for_job_completion(ps_info.project_id, job.id, 60)

formula_id = api.features().get_aligned_feature(ps_info.project_id, featureId, [AlignedFeatureOptField.TOPANNOTATIONS]
).top_annotations.formula_annotation.formula_id
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@ job_submission$canopusParams$enabled <- FALSE
job_submission$msNovelistParams$enabled <- FALSE

job <- sirius_api$jobs_api$StartJob(project_id, job_submission)
Helper$new()$wait_for_job_completion(project_id, job$id, sirius_api$jobs_api)

api$wait_for_job_completion(project_id, job$id, 60)
aligned_feature_id <- sirius_api$features_api$GetAlignedFeatures(project_id)[[1]]$alignedFeatureId
formula_id <- sirius_api$features_api$GetAlignedFeature(project_id, aligned_feature_id, opt_fields = list("topAnnotations"))$topAnnotations$formulaAnnotation$formulaId
tree <- sirius_api$features_api$GetFragTree(project_id, aligned_feature_id, formula_id)
Expand Down
20 changes: 19 additions & 1 deletion client-api_python/generated/PySirius/pysirius_api.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
# THIS FILE IS NOT AUTO GENERATED AND MIGHT NEED TO BE CHANGED WHEN API ENDPOINTS CHANGE

import PySirius
import logging
import traceback
import time
from PySirius import Job, ProjectInfo


class PySiriusAPI:
Expand Down Expand Up @@ -62,4 +66,18 @@ def tags(self):

def models(self):
"""returns the Superclass of all models"""
return PySirius.models
return PySirius.models

def wait_for_job_completion(self, project_id, job_id, timeout_in_sec=None):
if isinstance(project_id, ProjectInfo):
project_id = project_id.project_id
if isinstance(job_id, Job):
job_id = job_id.id
try:
while PySirius.JobsApi(self.api_client).get_job(project_id, job_id).progress.state not in ["CANCELED", "FAILED", "DONE"]:
time.sleep(1)
if isinstance(timeout_in_sec, int):
timeout_in_sec = timeout_in_sec - 1
if timeout_in_sec == 0: return
except Exception as e:
logging.error(traceback.format_exc())
7 changes: 6 additions & 1 deletion client-api_python/generated/PySirius/pysirius_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,19 @@

import time
import PySirius
from warnings import warn
from PySirius import PySiriusAPI, ProjectInfo, Job


class Helper:
"""helper methods for ease of use of the SDK"""

def __init__(self, *args, **kwargs):
warn(f'{self.__class__.__name__} will be deprecated.', DeprecationWarning, stacklevel=2)
super().__init__(*args, **kwargs)

@staticmethod
def wait_for_job_completion(project_id, job_id, jobs_api):
warn("This function will be deprecated. Use PySiriusAPI.wait_for_job_completion instead!", DeprecationWarning, stacklevel=2)
if isinstance(jobs_api, PySiriusAPI):
jobs_api = jobs_api.jobs()
if isinstance(project_id, ProjectInfo):
Expand Down
2 changes: 1 addition & 1 deletion client-api_python/generated/test/test_acceptance.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def test_simple_computation(self):
job_sub.ms_novelist_params.enabled = False

job = api.jobs().start_job(project_id=ps_info.project_id, job_submission=job_sub)
Helper.wait_for_job_completion(ps_info, job, api)
api.wait_for_job_completion(ps_info, job, 60)

formula_candidate = api.features().get_aligned_feature(ps_info.project_id, feature_id, opt_fields=["topAnnotations"]).top_annotations.formula_annotation
tree = api.features().get_frag_tree(ps_info.project_id, feature_id, formula_candidate.formula_id)
Expand Down
4 changes: 2 additions & 2 deletions client-api_python/generated/test/test_jobs_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ def test_start_job(self) -> None:
job_submission = JobSubmission.from_json(json.dumps(job_submission_json))
response = self.api.jobs().start_job(self.project_id, job_submission)

Helper.wait_for_job_completion(self.project_id, response.id, self.api.jobs())
self.api.wait_for_job_completion(self.project_id, response.id)

self.assertIsInstance(response, Job)

Expand All @@ -232,7 +232,7 @@ def test_start_job_from_config(self) -> None:
self.api.jobs().save_job_config(config_name, job_submission, True)
response = self.api.jobs().start_job_from_config(self.project_id, config_name, [aligned_feature_id])

Helper.wait_for_job_completion(self.project_id, response.id, self.api.jobs())
self.api.wait_for_job_completion(self.project_id, response.id)

self.api.jobs().delete_job_config(config_name)
self.assertIsInstance(response, Job)
Expand Down
20 changes: 19 additions & 1 deletion client-api_python/pysirius_api.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
# THIS FILE IS NOT AUTO GENERATED AND MIGHT NEED TO BE CHANGED WHEN API ENDPOINTS CHANGE

import PySirius
import logging
import traceback
import time
from PySirius import Job, ProjectInfo


class PySiriusAPI:
Expand Down Expand Up @@ -62,4 +66,18 @@ def tags(self):

def models(self):
"""returns the Superclass of all models"""
return PySirius.models
return PySirius.models

def wait_for_job_completion(self, project_id, job_id, timeout_in_sec=None):
if isinstance(project_id, ProjectInfo):
project_id = project_id.project_id
if isinstance(job_id, Job):
job_id = job_id.id
try:
while PySirius.JobsApi(self.api_client).get_job(project_id, job_id).progress.state not in ["CANCELED", "FAILED", "DONE"]:
time.sleep(1)
if isinstance(timeout_in_sec, int):
timeout_in_sec = timeout_in_sec - 1
if timeout_in_sec == 0: return
except Exception as e:
logging.error(traceback.format_exc())
7 changes: 6 additions & 1 deletion client-api_python/pysirius_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,19 @@

import time
import PySirius
from warnings import warn
from PySirius import PySiriusAPI, ProjectInfo, Job


class Helper:
"""helper methods for ease of use of the SDK"""

def __init__(self, *args, **kwargs):
warn(f'{self.__class__.__name__} will be deprecated.', DeprecationWarning, stacklevel=2)
super().__init__(*args, **kwargs)

@staticmethod
def wait_for_job_completion(project_id, job_id, jobs_api):
warn("This function will be deprecated. Use PySiriusAPI.wait_for_job_completion instead!", DeprecationWarning, stacklevel=2)
if isinstance(jobs_api, PySiriusAPI):
jobs_api = jobs_api.jobs()
if isinstance(project_id, ProjectInfo):
Expand Down
26 changes: 26 additions & 0 deletions client-api_r/generated/R/rsirius_api.R
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,32 @@ rsirius_api <- R6::R6Class(

self$tags_api <- TagsApi$new(self$api_client)

},

wait_for_job_completion = function(project_id, job_id, timeout_in_sec=NULL) {
if (inherits(project_id, "ProjectInfo")) {
project_id <- project_id$projectId
}
if (inherits(job_id, "Job")) {
job_id <- job_id$id
}
tryCatch({
while (!(self$jobs_api$GetJob(project_id, job_id)$progress$state %in% c("CANCELED", "FAILED", "DONE"))) {
Sys.sleep(1)
if (inherits(timeout_in_sec, "numeric")) {
timeout_in_sec <- timeout_in_sec - 1
if (timeout_in_sec == 0) {
return()
}
}
}
}, error = function(e){
message('Caught an error!')
message(e)
}, warning = function(w){
message('Caught an warning!')
message(w)
})
}
)
)
1 change: 1 addition & 0 deletions client-api_r/generated/R/rsirius_helper.R
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ Helper <- R6::R6Class(
"Helper",
public = list(
wait_for_job_completion = function(project_id, job_id, jobs_api) {
.Deprecated("rsirius_api$wait_for_job_completion")
if (inherits(jobs_api, "rsirius_api")) {
jobs_api <- jobs_api$jobs_api
}
Expand Down
4 changes: 2 additions & 2 deletions client-api_r/generated/tests/testthat.R
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
library(testthat)
library(Rsirius)
library(RSirius)

test_check("Rsirius")
test_check("RSirius")
2 changes: 1 addition & 1 deletion client-api_r/generated/tests/testthat/test_acceptance.R
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ test_that("Test Acceptance", {
job_submission$alignedFeatureIds <- list(features_api$GetAlignedFeatures(project_id)[[1]]$alignedFeatureId)

response <- api_instance$StartJob(project_id, job_submission)
Helper$new()$wait_for_job_completion(project_id, response$id, api_instance)
api$wait_for_job_completion(project_id, response$id, 60)

formula_candidate <- features_api$GetAlignedFeature(project_id, job_submission$alignedFeatureIds[[1]], opt_fields = list("topAnnotations"))$
topAnnotations$
Expand Down
4 changes: 2 additions & 2 deletions client-api_r/generated/tests/testthat/test_jobs_api.R
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,7 @@ test_that("StartJob", {
job_submission$alignedFeatureIds <- list(features_api$GetAlignedFeatures(project_id)[[1]]$alignedFeatureId)

response <- api_instance$StartJob(project_id, job_submission)
Helper$new()$wait_for_job_completion(project_id, response$id, api_instance)
api$wait_for_job_completion(project_id, response$id)

expect_true(inherits(response, "Job"))

Expand Down Expand Up @@ -366,7 +366,7 @@ test_that("StartJobFromConfig", {

api_instance$SaveJobConfig(project_id, job_submission, TRUE)
response <- api_instance$StartJobFromConfig(project_id, project_id, job_submission$alignedFeatureIds)
Helper$new()$wait_for_job_completion(project_id, response$id, api_instance)
api$wait_for_job_completion(project_id, response$id)

expect_true(inherits(response, "Job"))

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#!/bin/bash

FILE="client-api_r/generated/R/rsirius_api.R"

# Remove the last 3 lines (closing braces)
head -n -3 "$FILE" > "${FILE}.tmp"

# Append the new function and closing braces
cat >> "${FILE}.tmp" << 'EOF'
},

wait_for_job_completion = function(project_id, job_id, timeout_in_sec=NULL) {
if (inherits(project_id, "ProjectInfo")) {
project_id <- project_id$projectId
}
if (inherits(job_id, "Job")) {
job_id <- job_id$id
}
tryCatch({
while (!(self$jobs_api$GetJob(project_id, job_id)$progress$state %in% c("CANCELED", "FAILED", "DONE"))) {
Sys.sleep(1)
if (inherits(timeout_in_sec, "numeric")) {
timeout_in_sec <- timeout_in_sec - 1
if (timeout_in_sec == 0) {
return()
}
}
}
}, error = function(e){
message('Caught an error!')
message(e)
}, warning = function(w){
message('Caught an warning!')
message(w)
})
}
)
)
EOF

mv "${FILE}.tmp" "$FILE"

echo "Function appended successfully"
1 change: 1 addition & 0 deletions client-api_r/rsirius_helper.R
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ Helper <- R6::R6Class(
"Helper",
public = list(
wait_for_job_completion = function(project_id, job_id, jobs_api) {
.Deprecated("rsirius_api$wait_for_job_completion")
if (inherits(jobs_api, "rsirius_api")) {
jobs_api <- jobs_api$jobs_api
}
Expand Down
Loading