diff --git a/ansys/rep/client/auth/resource/user.py b/ansys/rep/client/auth/resource/user.py index cf980a3b7..c11895bbf 100644 --- a/ansys/rep/client/auth/resource/user.py +++ b/ansys/rep/client/auth/resource/user.py @@ -1,7 +1,7 @@ # autogenerated code based on UserSchema from marshmallow.utils import missing -from ansys.rep.client.jms.resource.base import Object +from ansys.rep.client.common import Object from ..schema.user import UserSchema class User(Object): diff --git a/ansys/rep/client/auth/schema/user.py b/ansys/rep/client/auth/schema/user.py index fc44a6ae3..a7da37b0b 100644 --- a/ansys/rep/client/auth/schema/user.py +++ b/ansys/rep/client/auth/schema/user.py @@ -9,7 +9,7 @@ from marshmallow import fields -from ansys.rep.client.jms.schema.base import BaseSchema +from ansys.rep.client.common.base_schema import BaseSchema log = logging.getLogger(__name__) diff --git a/ansys/rep/client/client.py b/ansys/rep/client/client.py index d8b7db891..c7af607f9 100644 --- a/ansys/rep/client/client.py +++ b/ansys/rep/client/client.py @@ -25,25 +25,31 @@ class Client(object): requests a new access token. - Access token: no authentication needed. - Args: - rep_url (str): The base path for the server to call, - e.g. "https://127.0.0.1:8443/rep". - username (str): Username (Optional) - password (str): Password (Optional) - refresh_token (str): Refresh Token (Optional) - access_token (str): Access Token (Optional) - - Example: - - >>> from ansys.rep.client import Client - >>> # Create client object and connect to REP with username & password - >>> cl = Client( - rep_url="https://127.0.0.1:8443/rep", username="repadmin", password="repadmin" - ) - >>> # Extract refresh token to eventually store it - >>> refresh_token = cl.refresh_token - >>> # Alternative: Create client object and connect to REP with refresh token - >>> cl = Client(rep_url="https://127.0.0.1:8443/rep", refresh_token=refresh_token) + Parameters + ---------- + rep_url : str + The base path for the server to call, e.g. "https://127.0.0.1:8443/rep". + username : str, optional + Username + password : str, optional + Password + refresh_token : str, optional + Refresh Token + access_token : str, optional + Access Token + + Examples + -------- + + >>> from ansys.rep.client import Client + >>> # Create client object and connect to REP with username & password + >>> cl = Client( + rep_url="https://localhost:8443/rep", username="repadmin", password="repadmin" + ) + >>> # Extract refresh token to eventually store it + >>> refresh_token = cl.refresh_token + >>> # Alternative: Create client object and connect to REP with refresh token + >>> cl = Client(rep_url="https://localhost:8443/rep", refresh_token=refresh_token) """ diff --git a/ansys/rep/client/common/__init__.py b/ansys/rep/client/common/__init__.py new file mode 100644 index 000000000..b90611d6f --- /dev/null +++ b/ansys/rep/client/common/__init__.py @@ -0,0 +1,2 @@ +from .base_resource import Object +from .base_schema import BaseSchema, ObjectSchema diff --git a/ansys/rep/client/jms/resource/base.py b/ansys/rep/client/common/base_resource.py similarity index 100% rename from ansys/rep/client/jms/resource/base.py rename to ansys/rep/client/common/base_resource.py diff --git a/ansys/rep/client/jms/schema/base.py b/ansys/rep/client/common/base_schema.py similarity index 100% rename from ansys/rep/client/jms/schema/base.py rename to ansys/rep/client/common/base_schema.py diff --git a/ansys/rep/client/connection.py b/ansys/rep/client/connection.py index be074026a..69371b218 100644 --- a/ansys/rep/client/connection.py +++ b/ansys/rep/client/connection.py @@ -13,8 +13,8 @@ log = logging.getLogger(__name__) -def create_session(access_token=None): - """Return a :class:`requests.Session` object configured for REP with given access token +def create_session(access_token: str = None) -> requests.Session: + """Returns a :class:`requests.Session` object configured for REP with given access token Args: access_token (str): The access token provided by :meth:`ansys.rep.client.auth.authenticate` @@ -44,7 +44,7 @@ def create_session(access_token=None): return session -def ping(session, url, timeout=10.0): +def ping(session: requests.Session, url: str, timeout=10.0) -> bool: """Ping the given URL, returning true on success Args: diff --git a/ansys/rep/client/jms/api/base.py b/ansys/rep/client/jms/api/base.py index f389fcf72..da9708b65 100644 --- a/ansys/rep/client/jms/api/base.py +++ b/ansys/rep/client/jms/api/base.py @@ -4,10 +4,9 @@ from requests import Session +from ansys.rep.client.common import Object from ansys.rep.client.exceptions import ClientError -from ..resource.base import Object - log = logging.getLogger(__name__) diff --git a/ansys/rep/client/jms/api/jms_api.py b/ansys/rep/client/jms/api/jms_api.py index d9d101f1c..da7e61fb2 100644 --- a/ansys/rep/client/jms/api/jms_api.py +++ b/ansys/rep/client/jms/api/jms_api.py @@ -5,6 +5,7 @@ from typing import List, Union import uuid +from ansys.rep.client.client import Client from ansys.rep.client.exceptions import REPError from ..resource import Operation @@ -17,29 +18,34 @@ class JmsApi(object): - """Root API + """Wraps around the Job Management Service root endpoints. - Args: - client (:class:`ansys.rep.client.jms.Client`): A client object. + Parameters + ---------- + client : Client + A REP client object. - Example: + Examples + -------- - >>> from ansys.rep.client.jms import Client - >>> # Create client object and connect to REP with username & password - >>> cl = Client( - rep_url="https://127.0.0.1:8443/rep", username="repadmin", password="repadmin" - ) - >>> # Create a new project - >>> root_api = RootApi(client) - >>> project = root_api.create_project(Project(name="Example Project")) + Create a new project + + >>> from ansys.rep.client import Client + >>> from ansys.rep.client.jms import JmsApi, Project + >>> cl = Client( + ... rep_url="https://127.0.0.1:8443/rep", username="repadmin", password="repadmin" + ... ) + >>> jms_api = JmsApi(cl) + >>> project = jms_api.create_project(Project(name="Example Project")) """ - def __init__(self, client): + def __init__(self, client: Client): self.client = client @property - def url(self): + def url(self) -> str: + """Returns the API url""" return f"{self.client.rep_url}/jms/api/v1" def get_api_info(self): @@ -49,28 +55,32 @@ def get_api_info(self): ################################################################ # Projects - def get_projects(self, as_objects=True, **query_params): - """Return a list of projects, optionally filtered by given query parameters""" + def get_projects(self, as_objects=True, **query_params) -> List[Project]: + """Return a list of projects, optionally filtered by given query parameters.""" return get_projects(self.client, self.url, as_objects, **query_params) - def get_project(self, id): - """Return a single project for given project id""" + def get_project(self, id: str) -> Project: + """Return a single project for given project id.""" return get_project(self.client, self.url, id) - def get_project_by_name(self, name, last_created=True) -> Union[Project, List[Project]]: - """ - Query projects by name. If no projects are found, an empty list is returned. - In case of multiple projects with same name: - - If `last_created = True`, the last created project is returned - - If `last_created = False`, the full list of projects with given name is returned + def get_project_by_name( + self, name: str, last_created: bool = True + ) -> Union[Project, List[Project]]: + """Query projects by name. If no projects are found, an empty list is returned. + + In case of multiple projects with same name: + + - If ``last_created`` = True, the last created project is returned + - If ``last_created`` = False, the full list of projects with given name is returned + """ return get_project_by_name(self.client, self.url, name, last_created) - def create_project(self, project, replace=False, as_objects=True): + def create_project(self, project: Project, replace=False, as_objects=True) -> Project: """Create a new project""" return create_project(self.client, self.url, project, replace, as_objects) - def update_project(self, project, as_objects=True): + def update_project(self, project: Project, as_objects=True) -> Project: """Update an existing project""" return update_project(self.client, self.url, project, as_objects) @@ -81,35 +91,40 @@ def delete_project(self, project): def restore_project(self, path: str) -> Project: """Restore a project from an archive - Args: - path (str): Path of the archive file to be restored. - project_name (str): Name of the restored project. (optional) + Parameters + ---------- + path : str + Path of the archive file to be restored. - Returns: - :class:`ansys.rep.client.jms.Project`: A Project object. """ return restore_project(self, path) ################################################################ # Evaluators - def get_evaluators(self, as_objects=True, **query_params): + def get_evaluators(self, as_objects=True, **query_params) -> List[Evaluator]: """Return a list of evaluators, optionally filtered by given query parameters""" return get_objects(self.client.session, self.url, Evaluator, as_objects, **query_params) - def update_evaluators(self, evaluators, as_objects=True, **query_params): + def update_evaluators( + self, evaluators: List[Evaluator], as_objects=True, **query_params + ) -> List[Evaluator]: """Update evaluators configuration""" return update_objects(self.client.session, self.url, evaluators, as_objects, **query_params) ################################################################ # Task Definition Templates - def get_task_definition_templates(self, as_objects=True, **query_params): + def get_task_definition_templates( + self, as_objects=True, **query_params + ) -> List[TaskDefinitionTemplate]: """Return a list of task definition templates, optionally filtered by given query parameters""" return get_objects( self.client.session, self.url, TaskDefinitionTemplate, as_objects, **query_params ) - def create_task_definition_templates(self, templates, as_objects=True, **query_params): + def create_task_definition_templates( + self, templates: List[TaskDefinitionTemplate], as_objects=True, **query_params + ) -> List[TaskDefinitionTemplate]: """Create new task definition templates Args: @@ -118,7 +133,9 @@ def create_task_definition_templates(self, templates, as_objects=True, **query_p """ return create_objects(self.client.session, self.url, templates, as_objects, **query_params) - def update_task_definition_templates(self, templates, as_objects=True, **query_params): + def update_task_definition_templates( + self, templates: List[TaskDefinitionTemplate], as_objects=True, **query_params + ) -> List[TaskDefinitionTemplate]: """Update existing task definition templates Args: @@ -127,7 +144,7 @@ def update_task_definition_templates(self, templates, as_objects=True, **query_p """ return update_objects(self.client.session, self.url, templates, as_objects, **query_params) - def delete_task_definition_templates(self, templates): + def delete_task_definition_templates(self, templates: List[TaskDefinitionTemplate]): """Delete existing task definition templates Args: @@ -138,12 +155,12 @@ def delete_task_definition_templates(self, templates): ################################################################ # Operations - def get_operations(self, as_objects=True, **query_params): + def get_operations(self, as_objects=True, **query_params) -> List[Operation]: return get_objects( self.client.session, self.url, Operation, as_objects=as_objects, **query_params ) - def get_operation(self, id, as_object=True): + def get_operation(self, id, as_object=True) -> Operation: return get_object(self.client.session, self.url, Operation, id, as_object=as_object) def _monitor_operation(self, operation_id: str, interval: float = 1.0): diff --git a/ansys/rep/client/jms/api/project_api.py b/ansys/rep/client/jms/api/project_api.py index ac6147cab..5fcdcc1fb 100644 --- a/ansys/rep/client/jms/api/project_api.py +++ b/ansys/rep/client/jms/api/project_api.py @@ -8,10 +8,11 @@ from marshmallow.utils import missing import requests +from ansys.rep.client.client import Client +from ansys.rep.client.common import Object from ansys.rep.client.exceptions import ClientError, REPError from ..resource.algorithm import Algorithm -from ..resource.base import Object from ..resource.file import File from ..resource.job import Job, JobSchema from ..resource.job_definition import JobDefinition @@ -30,46 +31,63 @@ class ProjectApi: - """Project API - - Args: - client (:class:`ansys.rep.client.jms.Client`): A client object. - project_id (str): - - Example: - - >>> from ansys.rep.client Client - >>> from ansys.rep.client.jms import JmsApi, Project, ProjectApi - >>> - >>> cl = Client( - rep_url="https://127.0.0.1:8443/rep", username="repadmin", password="repadmin" - ) - >>> project = Project(name="Example Project") - >>> print(project) - >>> - >>> jms_api = JmsApi(client) - >>> project = jms_api.create_project(project) - >>> - >>> project_api = ProjectApi(client, project.id) - >>> jobs = project_api.get_jobs() + """Exposes the Project endpoints of the Job Management Service + + Parameters + ---------- + client : Client + A REP client object. + project_id : str + ID of the project + + Examples + -------- + + >>> from ansys.rep.client import Client + >>> from ansys.rep.client.jms import JmsApi, Project, ProjectApi + >>> cl = Client( + ... rep_url="https://127.0.0.1:8443/rep", username="repadmin", password="repadmin" + ... ) + >>> project = Project(name="Example Project") + >>> print(project) + { + "name": "Example Project" + } + >>> jms_api = JmsApi(cl) + >>> project = jms_api.create_project(project) + >>> print(project) + { + "id": "02qtyJfpfAQ0fr3zkoIAfC", + "name": "Example Project", + "active": false, + "priority": 1, + "creation_time": ... + ... + } + >>> project_api = ProjectApi(cl, project.id) + >>> print(project_api) + 'https://127.0.0.1:8443/rep/jms/api/v1/projects/02qtyJfpfAQ0fr3zkoIAfC' + >>> jobs = project_api.get_jobs() + """ - def __init__(self, client, project_id: str): + def __init__(self, client: Client, project_id: str): self.client = client self.project_id = project_id self._fs_url = None self._fs_project_id = None @property - def jms_api_url(self): + def jms_api_url(self) -> str: return f"{self.client.rep_url}/jms/api/v1" @property - def url(self): + def url(self) -> str: + """Returns the API url""" return f"{self.jms_api_url}/projects/{self.project_id}" @property - def fs_url(self): + def fs_url(self) -> str: """URL of the file storage gateway""" if self._fs_url is None or self._fs_project_id != self.project_id: self._fs_project_id = self.project_id @@ -78,17 +96,17 @@ def fs_url(self): return self._fs_url @property - def fs_bucket_url(self): + def fs_bucket_url(self) -> str: """URL of the project's bucket in the file storage gateway""" return f"{self.fs_url}/{self.project_id}" ################################################################ # Project operations (copy, archive) - def copy_project(self, project_target_name, wait=True): + def copy_project(self, project_target_name: str, wait: bool = True) -> str: """Duplicate project""" return copy_project(self, self.project_id, project_target_name, wait) - def archive_project(self, path, include_job_files=True): + def archive_project(self, path: str, include_job_files: bool = True): """Archive an existing project and save it to disk Args: @@ -103,7 +121,7 @@ def archive_project(self, path, include_job_files=True): ################################################################ # Files - def get_files(self, as_objects=True, content=False, **query_params): + def get_files(self, as_objects=True, content=False, **query_params) -> List[File]: """ Return a list of file resources, optionally filtered by given query parameters. If content=True, each files content is downloaded as well and stored in memory @@ -111,13 +129,13 @@ def get_files(self, as_objects=True, content=False, **query_params): """ return get_files(self, as_objects=as_objects, content=content, **query_params) - def create_files(self, files, as_objects=True): + def create_files(self, files: List[File], as_objects=True) -> List[File]: return create_files(self, files, as_objects=as_objects) - def update_files(self, files, as_objects=True): + def update_files(self, files: List[File], as_objects=True): return update_files(self, files, as_objects=as_objects) - def delete_files(self, files): + def delete_files(self, files: List[File]): return self._delete_objects(files) def download_file( @@ -136,58 +154,76 @@ def download_file( ################################################################ # Parameter definitions - def get_parameter_definitions(self, as_objects=True, **query_params): + def get_parameter_definitions( + self, as_objects=True, **query_params + ) -> List[ParameterDefinition]: return self._get_objects(ParameterDefinition, as_objects, **query_params) - def create_parameter_definitions(self, parameter_definitions, as_objects=True): + def create_parameter_definitions( + self, parameter_definitions, as_objects=True + ) -> List[ParameterDefinition]: return self._create_objects(parameter_definitions, as_objects) - def update_parameter_definitions(self, parameter_definitions, as_objects=True): + def update_parameter_definitions( + self, parameter_definitions: List[ParameterDefinition], as_objects=True + ) -> List[ParameterDefinition]: return self._update_objects(parameter_definitions, as_objects) - def delete_parameter_definitions(self, parameter_definitions): + def delete_parameter_definitions(self, parameter_definitions: List[ParameterDefinition]): return self._delete_objects(parameter_definitions) ################################################################ # Parameter mappings - def get_parameter_mappings(self, as_objects=True, **query_params): + def get_parameter_mappings(self, as_objects=True, **query_params) -> List[ParameterMapping]: return self._get_objects(ParameterMapping, as_objects=as_objects, **query_params) - def create_parameter_mappings(self, parameter_mappings, as_objects=True): + def create_parameter_mappings( + self, parameter_mappings: List[ParameterMapping], as_objects=True + ) -> List[ParameterMapping]: return self._create_objects(parameter_mappings, as_objects=as_objects) - def update_parameter_mappings(self, parameter_mappings, as_objects=True): + def update_parameter_mappings( + self, parameter_mappings: List[ParameterMapping], as_objects=True + ) -> List[ParameterMapping]: return self._update_objects(parameter_mappings, as_objects=as_objects) - def delete_parameter_mappings(self, parameter_mappings): + def delete_parameter_mappings(self, parameter_mappings: List[ParameterMapping]): return self._delete_objects(parameter_mappings) ################################################################ # Task definitions - def get_task_definitions(self, as_objects=True, **query_params): + def get_task_definitions(self, as_objects=True, **query_params) -> List[TaskDefinition]: return self._get_objects(TaskDefinition, as_objects=as_objects, **query_params) - def create_task_definitions(self, task_definitions, as_objects=True): + def create_task_definitions( + self, task_definitions: List[TaskDefinition], as_objects=True + ) -> List[TaskDefinition]: return self._create_objects(task_definitions, as_objects=as_objects) - def update_task_definitions(self, task_definitions, as_objects=True): + def update_task_definitions( + self, task_definitions: List[TaskDefinition], as_objects=True + ) -> List[TaskDefinition]: return self._update_objects(task_definitions, as_objects=as_objects) - def delete_task_definitions(self, task_definitions): + def delete_task_definitions(self, task_definitions: List[TaskDefinition]): return self._delete_objects(task_definitions) ################################################################ # Job definitions - def get_job_definitions(self, as_objects=True, **query_params): + def get_job_definitions(self, as_objects=True, **query_params) -> List[JobDefinition]: return self._get_objects(JobDefinition, as_objects=as_objects, **query_params) - def create_job_definitions(self, job_definitions, as_objects=True): + def create_job_definitions( + self, job_definitions: List[JobDefinition], as_objects=True + ) -> List[JobDefinition]: return self._create_objects(job_definitions, as_objects=as_objects) - def update_job_definitions(self, job_definitions, as_objects=True): + def update_job_definitions( + self, job_definitions: List[JobDefinition], as_objects=True + ) -> List[JobDefinition]: return self._update_objects(job_definitions, as_objects=as_objects) - def delete_job_definitions(self, job_definitions): + def delete_job_definitions(self, job_definitions: List[JobDefinition]): return self._delete_objects(job_definitions) ################################################################ @@ -195,7 +231,7 @@ def delete_job_definitions(self, job_definitions): def get_jobs(self, as_objects=True, **query_params) -> List[Job]: return self._get_objects(Job, as_objects=as_objects, **query_params) - def create_jobs(self, jobs, as_objects=True) -> List[Job]: + def create_jobs(self, jobs: List[Job], as_objects=True) -> List[Job]: """Create new jobs Args: @@ -207,7 +243,7 @@ def create_jobs(self, jobs, as_objects=True) -> List[Job]: """ return self._create_objects(jobs, as_objects=as_objects) - def copy_jobs(self, jobs, as_objects=True, **query_params): + def copy_jobs(self, jobs: List[Job], as_objects=True, **query_params): """Create new jobs by copying existing ones Args: @@ -218,7 +254,7 @@ def copy_jobs(self, jobs, as_objects=True, **query_params): """ return copy_jobs(self, jobs, as_objects=as_objects, **query_params) - def update_jobs(self, jobs, as_objects=True) -> List[Job]: + def update_jobs(self, jobs: List[Job], as_objects=True) -> List[Job]: """Update existing jobs Args: @@ -230,7 +266,7 @@ def update_jobs(self, jobs, as_objects=True) -> List[Job]: """ return self._update_objects(jobs, as_objects=as_objects) - def delete_jobs(self, jobs): + def delete_jobs(self, jobs: List[Job]): """Delete existing jobs Args: @@ -249,61 +285,65 @@ def delete_jobs(self, jobs): """ return self._delete_objects(jobs) - def _sync_jobs(self, jobs): + def _sync_jobs(self, jobs: List[Job]): log.warning("ProjectApi._sync_jobs is a beta feature. Use with care.") return sync_jobs(self, jobs) ################################################################ # Tasks - def get_tasks(self, as_objects=True, **query_params): + def get_tasks(self, as_objects=True, **query_params) -> List[Task]: return self._get_objects(Task, as_objects=as_objects, **query_params) - def update_tasks(self, tasks, as_objects=True): + def update_tasks(self, tasks: List[Task], as_objects=True) -> List[Task]: return self._update_objects(tasks, as_objects=as_objects) ################################################################ # Selections - def get_job_selections(self, as_objects=True, **query_params): + def get_job_selections(self, as_objects=True, **query_params) -> List[JobSelection]: return self._get_objects(JobSelection, as_objects=as_objects, **query_params) - def create_job_selections(self, selections, as_objects=True): + def create_job_selections( + self, selections: List[JobSelection], as_objects=True + ) -> List[JobSelection]: return self._create_objects(selections, as_objects=as_objects) - def update_job_selections(self, selections, as_objects=True): + def update_job_selections( + self, selections: List[JobSelection], as_objects=True + ) -> List[JobSelection]: return self._update_objects(selections, as_objects=as_objects) - def delete_job_selections(self, selections): + def delete_job_selections(self, selections: List[JobSelection]): return self._delete_objects(selections) ################################################################ # Algorithms - def get_algorithms(self, as_objects=True, **query_params): + def get_algorithms(self, as_objects=True, **query_params) -> List[Algorithm]: return self._get_objects(Algorithm, as_objects=as_objects, **query_params) - def create_algorithms(self, algorithms, as_objects=True): + def create_algorithms(self, algorithms: List[Algorithm], as_objects=True) -> List[Algorithm]: return self._create_objects(algorithms, as_objects=as_objects) - def update_algorithms(self, algorithms, as_objects=True): + def update_algorithms(self, algorithms: List[Algorithm], as_objects=True) -> List[Algorithm]: return self._update_objects(algorithms, as_objects=as_objects) - def delete_algorithms(self, algorithms): + def delete_algorithms(self, algorithms: List[Algorithm]): return self._delete_objects(algorithms) ################################################################ # Permissions - def get_permissions(self, as_objects=True): + def get_permissions(self, as_objects=True) -> List[ProjectPermission]: return self._get_objects(ProjectPermission, as_objects=as_objects) - def update_permissions(self, permissions): + def update_permissions(self, permissions: List[ProjectPermission]): # the rest api currently doesn't return anything on permissions update update_permissions(self.client, self.url, permissions) ################################################################ # License contexts - def get_license_contexts(self, as_objects=True, **query_params): + def get_license_contexts(self, as_objects=True, **query_params) -> List[LicenseContext]: return self._get_objects(self, LicenseContext, as_objects=as_objects, **query_params) - def create_license_contexts(self, as_objects=True): + def create_license_contexts(self, as_objects=True) -> List[LicenseContext]: rest_name = LicenseContext.Meta.rest_name url = f"{self.jms_api_url}/projects/{self.project_id}/{rest_name}" r = self.client.session.post(f"{url}") @@ -314,7 +354,7 @@ def create_license_contexts(self, as_objects=True): objects = schema.load(data) return objects - def update_license_contexts(self, license_contexts, as_objects=True): + def update_license_contexts(self, license_contexts, as_objects=True) -> List[LicenseContext]: return self._update_objects(self, license_contexts, as_objects=as_objects) def delete_license_contexts(self): diff --git a/ansys/rep/client/jms/resource/algorithm.py b/ansys/rep/client/jms/resource/algorithm.py index 70405b9fd..d9d631a32 100644 --- a/ansys/rep/client/jms/resource/algorithm.py +++ b/ansys/rep/client/jms/resource/algorithm.py @@ -1,7 +1,7 @@ # autogenerated code based on AlgorithmSchema from marshmallow.utils import missing -from .base import Object +from ansys.rep.client.common import Object from ..schema.algorithm import AlgorithmSchema class Algorithm(Object): diff --git a/ansys/rep/client/jms/resource/bool_parameter_definition.py b/ansys/rep/client/jms/resource/bool_parameter_definition.py index 8ecfcd173..868e51349 100644 --- a/ansys/rep/client/jms/resource/bool_parameter_definition.py +++ b/ansys/rep/client/jms/resource/bool_parameter_definition.py @@ -1,7 +1,7 @@ # autogenerated code based on BoolParameterDefinitionSchema from marshmallow.utils import missing -from .parameter_definition import ParameterDefinition +from ansys.rep.client.jms.resource.parameter_definition import ParameterDefinition from ..schema.parameter_definition import BoolParameterDefinitionSchema class BoolParameterDefinition(ParameterDefinition): diff --git a/ansys/rep/client/jms/resource/evaluator.py b/ansys/rep/client/jms/resource/evaluator.py index e9abfee2d..b1f3eb3df 100644 --- a/ansys/rep/client/jms/resource/evaluator.py +++ b/ansys/rep/client/jms/resource/evaluator.py @@ -1,7 +1,7 @@ # autogenerated code based on EvaluatorSchema from marshmallow.utils import missing -from .base import Object +from ansys.rep.client.common import Object from ..schema.evaluator import EvaluatorSchema class Evaluator(Object): diff --git a/ansys/rep/client/jms/resource/file.py b/ansys/rep/client/jms/resource/file.py index a46b79ab4..94c2e23b1 100644 --- a/ansys/rep/client/jms/resource/file.py +++ b/ansys/rep/client/jms/resource/file.py @@ -1,7 +1,7 @@ from marshmallow.utils import missing from ..schema.file import FileSchema -from .base import Object +from ansys.rep.client.common import Object class File(Object): diff --git a/ansys/rep/client/jms/resource/fitness_definition.py b/ansys/rep/client/jms/resource/fitness_definition.py index cacea45d6..6a1e3a9f4 100644 --- a/ansys/rep/client/jms/resource/fitness_definition.py +++ b/ansys/rep/client/jms/resource/fitness_definition.py @@ -10,7 +10,7 @@ from marshmallow.utils import missing from ..schema.fitness_definition import FitnessDefinitionSchema, FitnessTermDefinitionSchema -from .base import Object +from ansys.rep.client.common import Object log = logging.getLogger(__name__) diff --git a/ansys/rep/client/jms/resource/float_parameter_definition.py b/ansys/rep/client/jms/resource/float_parameter_definition.py index 0a21365c2..8c683ffbc 100644 --- a/ansys/rep/client/jms/resource/float_parameter_definition.py +++ b/ansys/rep/client/jms/resource/float_parameter_definition.py @@ -1,7 +1,7 @@ # autogenerated code based on FloatParameterDefinitionSchema from marshmallow.utils import missing -from .parameter_definition import ParameterDefinition +from ansys.rep.client.jms.resource.parameter_definition import ParameterDefinition from ..schema.parameter_definition import FloatParameterDefinitionSchema class FloatParameterDefinition(ParameterDefinition): diff --git a/ansys/rep/client/jms/resource/int_parameter_definition.py b/ansys/rep/client/jms/resource/int_parameter_definition.py index acc33ae6f..fa0ce2124 100644 --- a/ansys/rep/client/jms/resource/int_parameter_definition.py +++ b/ansys/rep/client/jms/resource/int_parameter_definition.py @@ -1,7 +1,7 @@ # autogenerated code based on IntParameterDefinitionSchema from marshmallow.utils import missing -from .parameter_definition import ParameterDefinition +from ansys.rep.client.jms.resource.parameter_definition import ParameterDefinition from ..schema.parameter_definition import IntParameterDefinitionSchema class IntParameterDefinition(ParameterDefinition): diff --git a/ansys/rep/client/jms/resource/job.py b/ansys/rep/client/jms/resource/job.py index 1d16c40d0..6063e3944 100644 --- a/ansys/rep/client/jms/resource/job.py +++ b/ansys/rep/client/jms/resource/job.py @@ -1,7 +1,7 @@ # autogenerated code based on JobSchema from marshmallow.utils import missing -from .base import Object +from ansys.rep.client.common import Object from ..schema.job import JobSchema class Job(Object): diff --git a/ansys/rep/client/jms/resource/job_definition.py b/ansys/rep/client/jms/resource/job_definition.py index 124eaaf32..19e493477 100644 --- a/ansys/rep/client/jms/resource/job_definition.py +++ b/ansys/rep/client/jms/resource/job_definition.py @@ -1,7 +1,7 @@ # autogenerated code based on JobDefinitionSchema from marshmallow.utils import missing -from .base import Object +from ansys.rep.client.common import Object from ..schema.job_definition import JobDefinitionSchema class JobDefinition(Object): diff --git a/ansys/rep/client/jms/resource/license_context.py b/ansys/rep/client/jms/resource/license_context.py index 996c32b9d..b0ad5d499 100644 --- a/ansys/rep/client/jms/resource/license_context.py +++ b/ansys/rep/client/jms/resource/license_context.py @@ -1,7 +1,7 @@ # autogenerated code based on LicenseContextSchema from marshmallow.utils import missing -from .base import Object +from ansys.rep.client.common import Object from ..schema.license_context import LicenseContextSchema class LicenseContext(Object): diff --git a/ansys/rep/client/jms/resource/licensing.py b/ansys/rep/client/jms/resource/licensing.py index 3ff604b08..ce91ad20f 100644 --- a/ansys/rep/client/jms/resource/licensing.py +++ b/ansys/rep/client/jms/resource/licensing.py @@ -1,7 +1,7 @@ # autogenerated code based on LicensingSchema from marshmallow.utils import missing -from .base import Object +from ansys.rep.client.common import Object from ..schema.task_definition import LicensingSchema class Licensing(Object): diff --git a/ansys/rep/client/jms/resource/operation.py b/ansys/rep/client/jms/resource/operation.py index 1c9de760d..f611e1bc9 100644 --- a/ansys/rep/client/jms/resource/operation.py +++ b/ansys/rep/client/jms/resource/operation.py @@ -1,7 +1,7 @@ # autogenerated code based on OperationSchema from marshmallow.utils import missing -from .base import Object +from ansys.rep.client.common import Object from ..schema.operation import OperationSchema class Operation(Object): diff --git a/ansys/rep/client/jms/resource/parameter_definition.py b/ansys/rep/client/jms/resource/parameter_definition.py index 8148a236f..dd7ef9f29 100644 --- a/ansys/rep/client/jms/resource/parameter_definition.py +++ b/ansys/rep/client/jms/resource/parameter_definition.py @@ -1,7 +1,7 @@ # autogenerated code based on ParameterDefinitionSchema from marshmallow.utils import missing -from .base import Object +from ansys.rep.client.common import Object from ..schema.parameter_definition import ParameterDefinitionSchema class ParameterDefinition(Object): diff --git a/ansys/rep/client/jms/resource/parameter_mapping.py b/ansys/rep/client/jms/resource/parameter_mapping.py index 5b1d4f3f6..f941b5124 100644 --- a/ansys/rep/client/jms/resource/parameter_mapping.py +++ b/ansys/rep/client/jms/resource/parameter_mapping.py @@ -1,7 +1,7 @@ # autogenerated code based on ParameterMappingSchema from marshmallow.utils import missing -from .base import Object +from ansys.rep.client.common import Object from ..schema.parameter_mapping import ParameterMappingSchema class ParameterMapping(Object): diff --git a/ansys/rep/client/jms/resource/project.py b/ansys/rep/client/jms/resource/project.py index 6ea21bcca..ddaf6f4f9 100644 --- a/ansys/rep/client/jms/resource/project.py +++ b/ansys/rep/client/jms/resource/project.py @@ -1,7 +1,7 @@ # autogenerated code based on ProjectSchema from marshmallow.utils import missing -from .base import Object +from ansys.rep.client.common import Object from ..schema.project import ProjectSchema class Project(Object): diff --git a/ansys/rep/client/jms/resource/project_permission.py b/ansys/rep/client/jms/resource/project_permission.py index c225d0d26..8bcb246f8 100644 --- a/ansys/rep/client/jms/resource/project_permission.py +++ b/ansys/rep/client/jms/resource/project_permission.py @@ -1,7 +1,7 @@ # autogenerated code based on ProjectPermissionSchema from marshmallow.utils import missing -from .base import Object +from ansys.rep.client.common import Object from ..schema.project_permission import ProjectPermissionSchema class ProjectPermission(Object): diff --git a/ansys/rep/client/jms/resource/resource_requirements.py b/ansys/rep/client/jms/resource/resource_requirements.py index 70ade1e53..d5ef2997c 100644 --- a/ansys/rep/client/jms/resource/resource_requirements.py +++ b/ansys/rep/client/jms/resource/resource_requirements.py @@ -1,7 +1,7 @@ # autogenerated code based on ResourceRequirementsSchema from marshmallow.utils import missing -from .base import Object +from ansys.rep.client.common import Object from ..schema.task_definition import ResourceRequirementsSchema class ResourceRequirements(Object): diff --git a/ansys/rep/client/jms/resource/selection.py b/ansys/rep/client/jms/resource/selection.py index e9dac1e71..36fdf9f2a 100644 --- a/ansys/rep/client/jms/resource/selection.py +++ b/ansys/rep/client/jms/resource/selection.py @@ -1,7 +1,7 @@ # autogenerated code based on JobSelectionSchema from marshmallow.utils import missing -from .base import Object +from ansys.rep.client.common import Object from ..schema.selection import JobSelectionSchema class JobSelection(Object): diff --git a/ansys/rep/client/jms/resource/software.py b/ansys/rep/client/jms/resource/software.py index 9bda1e11f..a08abf898 100644 --- a/ansys/rep/client/jms/resource/software.py +++ b/ansys/rep/client/jms/resource/software.py @@ -1,7 +1,7 @@ # autogenerated code based on SoftwareSchema from marshmallow.utils import missing -from .base import Object +from ansys.rep.client.common import Object from ..schema.task_definition import SoftwareSchema class Software(Object): @@ -10,7 +10,9 @@ class Software(Object): Parameters ---------- name : str + Application's name. version : str, optional + Application's version. """ diff --git a/ansys/rep/client/jms/resource/string_parameter_definition.py b/ansys/rep/client/jms/resource/string_parameter_definition.py index 500b3c285..d5778c202 100644 --- a/ansys/rep/client/jms/resource/string_parameter_definition.py +++ b/ansys/rep/client/jms/resource/string_parameter_definition.py @@ -1,7 +1,7 @@ # autogenerated code based on StringParameterDefinitionSchema from marshmallow.utils import missing -from .parameter_definition import ParameterDefinition +from ansys.rep.client.jms.resource.parameter_definition import ParameterDefinition from ..schema.parameter_definition import StringParameterDefinitionSchema class StringParameterDefinition(ParameterDefinition): diff --git a/ansys/rep/client/jms/resource/success_criteria.py b/ansys/rep/client/jms/resource/success_criteria.py index 7b708f17a..a7151db21 100644 --- a/ansys/rep/client/jms/resource/success_criteria.py +++ b/ansys/rep/client/jms/resource/success_criteria.py @@ -1,7 +1,7 @@ # autogenerated code based on SuccessCriteriaSchema from marshmallow.utils import missing -from .base import Object +from ansys.rep.client.common import Object from ..schema.task_definition import SuccessCriteriaSchema class SuccessCriteria(Object): diff --git a/ansys/rep/client/jms/resource/task.py b/ansys/rep/client/jms/resource/task.py index 61ed340a2..b76e76a04 100644 --- a/ansys/rep/client/jms/resource/task.py +++ b/ansys/rep/client/jms/resource/task.py @@ -1,7 +1,7 @@ # autogenerated code based on TaskSchema from marshmallow.utils import missing -from .base import Object +from ansys.rep.client.common import Object from ..schema.task import TaskSchema class Task(Object): diff --git a/ansys/rep/client/jms/resource/task_definition.py b/ansys/rep/client/jms/resource/task_definition.py index de1f7d4a6..e891caa73 100644 --- a/ansys/rep/client/jms/resource/task_definition.py +++ b/ansys/rep/client/jms/resource/task_definition.py @@ -1,7 +1,7 @@ # autogenerated code based on TaskDefinitionSchema from marshmallow.utils import missing -from .base import Object +from ansys.rep.client.common import Object from ..schema.task_definition import TaskDefinitionSchema class TaskDefinition(Object): @@ -39,7 +39,9 @@ class TaskDefinition(Object): licensing : object, optional A :class:`Licensing` object. software_requirements : object, optional + A list of :class:`Software` objects. resource_requirements : object, optional + A :class:`ResourceRequirements` object. """ diff --git a/ansys/rep/client/jms/resource/task_definition_template.py b/ansys/rep/client/jms/resource/task_definition_template.py index 5f637c63b..3a4be1664 100644 --- a/ansys/rep/client/jms/resource/task_definition_template.py +++ b/ansys/rep/client/jms/resource/task_definition_template.py @@ -1,7 +1,7 @@ # autogenerated code based on TaskDefinitionTemplateSchema from marshmallow.utils import missing -from .base import Object +from ansys.rep.client.common import Object from ..schema.task_definition_template import TaskDefinitionTemplateSchema class TaskDefinitionTemplate(Object): diff --git a/ansys/rep/client/jms/schema/algorithm.py b/ansys/rep/client/jms/schema/algorithm.py index a21d4b0e3..9fc95a6ca 100644 --- a/ansys/rep/client/jms/schema/algorithm.py +++ b/ansys/rep/client/jms/schema/algorithm.py @@ -8,7 +8,8 @@ from marshmallow import fields -from .base import ObjectSchema +from ansys.rep.client.common import ObjectSchema + from .object_reference import IdReferenceList diff --git a/ansys/rep/client/jms/schema/evaluator.py b/ansys/rep/client/jms/schema/evaluator.py index b55a207c6..a6bf779a5 100644 --- a/ansys/rep/client/jms/schema/evaluator.py +++ b/ansys/rep/client/jms/schema/evaluator.py @@ -9,7 +9,7 @@ from marshmallow import fields from marshmallow.validate import OneOf -from .base import ObjectSchema +from ansys.rep.client.common import ObjectSchema project_assignment_modes = ["disabled", "all_active", "project_list"] diff --git a/ansys/rep/client/jms/schema/file.py b/ansys/rep/client/jms/schema/file.py index 47624e7cf..2dc1c97d4 100644 --- a/ansys/rep/client/jms/schema/file.py +++ b/ansys/rep/client/jms/schema/file.py @@ -8,7 +8,8 @@ from marshmallow import fields -from .base import ObjectSchema +from ansys.rep.client.common import ObjectSchema + from .object_reference import IdReference diff --git a/ansys/rep/client/jms/schema/fitness_definition.py b/ansys/rep/client/jms/schema/fitness_definition.py index b6f80b2be..24c1677b8 100644 --- a/ansys/rep/client/jms/schema/fitness_definition.py +++ b/ansys/rep/client/jms/schema/fitness_definition.py @@ -9,7 +9,7 @@ from marshmallow import fields from marshmallow.validate import OneOf -from .base import ObjectSchema +from ansys.rep.client.common import ObjectSchema fitness_term_types = ["design_objective", "limit_constraint", "target_constraint"] diff --git a/ansys/rep/client/jms/schema/job.py b/ansys/rep/client/jms/schema/job.py index 3bca41389..ba235cac4 100644 --- a/ansys/rep/client/jms/schema/job.py +++ b/ansys/rep/client/jms/schema/job.py @@ -9,7 +9,8 @@ from marshmallow import fields from marshmallow.validate import OneOf -from .base import ObjectSchema +from ansys.rep.client.common import ObjectSchema + from .object_reference import IdReference, IdReferenceList valid_eval_status = [ diff --git a/ansys/rep/client/jms/schema/job_definition.py b/ansys/rep/client/jms/schema/job_definition.py index 4ff8d0ab4..baf23e3d0 100644 --- a/ansys/rep/client/jms/schema/job_definition.py +++ b/ansys/rep/client/jms/schema/job_definition.py @@ -9,7 +9,8 @@ from marshmallow import fields -from .base import ObjectSchema +from ansys.rep.client.common import ObjectSchema + from .fitness_definition import FitnessDefinitionSchema from .object_reference import IdReferenceList diff --git a/ansys/rep/client/jms/schema/license_context.py b/ansys/rep/client/jms/schema/license_context.py index 8244fb59b..418a9bbe6 100644 --- a/ansys/rep/client/jms/schema/license_context.py +++ b/ansys/rep/client/jms/schema/license_context.py @@ -8,7 +8,7 @@ from marshmallow import fields -from .base import BaseSchema +from ansys.rep.client.common import BaseSchema class LicenseContextSchema(BaseSchema): diff --git a/ansys/rep/client/jms/schema/operation.py b/ansys/rep/client/jms/schema/operation.py index 6e004ee01..bb93ece2c 100644 --- a/ansys/rep/client/jms/schema/operation.py +++ b/ansys/rep/client/jms/schema/operation.py @@ -1,6 +1,6 @@ from marshmallow import fields -from .base import ObjectSchema +from ansys.rep.client.common import ObjectSchema class OperationSchema(ObjectSchema): diff --git a/ansys/rep/client/jms/schema/parameter_definition.py b/ansys/rep/client/jms/schema/parameter_definition.py index 911496a51..8225a7365 100644 --- a/ansys/rep/client/jms/schema/parameter_definition.py +++ b/ansys/rep/client/jms/schema/parameter_definition.py @@ -10,7 +10,7 @@ from marshmallow import fields from marshmallow_oneofschema import OneOfSchema -from .base import ObjectSchema +from ansys.rep.client.common import ObjectSchema log = logging.getLogger(__name__) diff --git a/ansys/rep/client/jms/schema/parameter_mapping.py b/ansys/rep/client/jms/schema/parameter_mapping.py index 01e89c989..9f3161b10 100644 --- a/ansys/rep/client/jms/schema/parameter_mapping.py +++ b/ansys/rep/client/jms/schema/parameter_mapping.py @@ -9,7 +9,8 @@ from marshmallow import fields -from .base import ObjectSchema +from ansys.rep.client.common import ObjectSchema + from .object_reference import IdReference log = logging.getLogger(__name__) diff --git a/ansys/rep/client/jms/schema/project.py b/ansys/rep/client/jms/schema/project.py index 4b017b4db..c6ae0400e 100644 --- a/ansys/rep/client/jms/schema/project.py +++ b/ansys/rep/client/jms/schema/project.py @@ -8,7 +8,7 @@ from marshmallow import fields -from .base import BaseSchema +from ansys.rep.client.common import BaseSchema class ProjectSchema(BaseSchema): diff --git a/ansys/rep/client/jms/schema/project_permission.py b/ansys/rep/client/jms/schema/project_permission.py index 22bdd3f27..ce41317da 100644 --- a/ansys/rep/client/jms/schema/project_permission.py +++ b/ansys/rep/client/jms/schema/project_permission.py @@ -8,7 +8,7 @@ from marshmallow import fields -from .base import BaseSchema +from ansys.rep.client.common import BaseSchema class ProjectPermissionSchema(BaseSchema): diff --git a/ansys/rep/client/jms/schema/selection.py b/ansys/rep/client/jms/schema/selection.py index 21a78dc40..46e7873b3 100644 --- a/ansys/rep/client/jms/schema/selection.py +++ b/ansys/rep/client/jms/schema/selection.py @@ -8,7 +8,8 @@ from marshmallow import fields -from .base import ObjectSchema +from ansys.rep.client.common import ObjectSchema + from .object_reference import IdReference, IdReferenceList diff --git a/ansys/rep/client/jms/schema/task.py b/ansys/rep/client/jms/schema/task.py index 98045a7b4..e818b4f31 100644 --- a/ansys/rep/client/jms/schema/task.py +++ b/ansys/rep/client/jms/schema/task.py @@ -8,7 +8,8 @@ from marshmallow import fields -from .base import ObjectSchema +from ansys.rep.client.common import ObjectSchema + from .object_reference import IdReference, IdReferenceList from .task_definition import TaskDefinitionSchema diff --git a/ansys/rep/client/jms/schema/task_definition.py b/ansys/rep/client/jms/schema/task_definition.py index 9dc2d172c..09a040af3 100644 --- a/ansys/rep/client/jms/schema/task_definition.py +++ b/ansys/rep/client/jms/schema/task_definition.py @@ -8,7 +8,8 @@ from marshmallow import fields -from .base import BaseSchema, ObjectSchema +from ansys.rep.client.common import BaseSchema, ObjectSchema + from .object_reference import IdReference, IdReferenceList diff --git a/ansys/rep/client/jms/schema/task_definition_template.py b/ansys/rep/client/jms/schema/task_definition_template.py index 9d639e9dc..58a10c890 100644 --- a/ansys/rep/client/jms/schema/task_definition_template.py +++ b/ansys/rep/client/jms/schema/task_definition_template.py @@ -8,7 +8,8 @@ from marshmallow import fields -from .base import ObjectSchema +from ansys.rep.client.common import ObjectSchema + from .file import FileSchema from .task_definition import ResourceRequirementsSchema, SoftwareSchema diff --git a/doc/source/conf.py b/doc/source/conf.py index 6f0c9d83c..b4001d35e 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -39,6 +39,7 @@ "sphinx.ext.intersphinx", "sphinx_copybutton", "sphinxnotes.strike", + "sphinx_autodoc_typehints", ] diff --git a/generate_resources.py b/generate_resources.py index 5211b1f69..ddd0dde1f 100644 --- a/generate_resources.py +++ b/generate_resources.py @@ -314,7 +314,7 @@ def __init__(self, **kwargs): return code -def process_resources(subpackage, resources, base_class_path=""): +def process_resources(subpackage, resources, base_class_path="ansys.rep.client"): targe_folder = os.path.join("ansys", "rep", "client", subpackage, "resource") for resource in resources: @@ -341,9 +341,10 @@ def process_resources(subpackage, resources, base_class_path=""): # if a base class other than Object need to be used, # we need to make sure to properly import it in the generated code - base_class = {"name": "Object", "filename": "base", "path": base_class_path} + base_class = {"name": "Object", "filename": "common", "path": base_class_path} if resource.get("base_class", None): base_class["name"] = resource["base_class"] + base_class["path"] = "ansys.rep.client.jms.resource" base_class["filename"] = next( (r["resource_filename"] for r in resources if r["class"] == resource["base_class"]), None, @@ -360,7 +361,7 @@ def process_resources(subpackage, resources, base_class_path=""): def run(): process_resources("jms", JMS_RESOURCES) - process_resources("auth", AUTH_RESOURCES, base_class_path="ansys.rep.client.jms.resource") + process_resources("auth", AUTH_RESOURCES) if __name__ == "__main__": diff --git a/requirements/requirements_doc.txt b/requirements/requirements_doc.txt index a581b4e0a..feb760f4b 100644 --- a/requirements/requirements_doc.txt +++ b/requirements/requirements_doc.txt @@ -5,4 +5,5 @@ sphinx-copybutton==0.5 apispec==5.2.2 sphinxcontrib-httpdomain==1.8.0 sphinxcontrib-globalsubs==0.1.0 -sphinxnotes-strike==1.2 \ No newline at end of file +sphinxnotes-strike==1.2 +sphinx-autodoc-typehints==1.18.1 \ No newline at end of file