diff --git a/.gitignore b/.gitignore index 87258e8..8d3da5d 100644 --- a/.gitignore +++ b/.gitignore @@ -6,9 +6,9 @@ __pycache__/ .env /node_modules latest_logs -schemas.json build /src/tests/tests_output/ *.egg-info .coverage* -.mypy_cache \ No newline at end of file +.mypy_cache +opengeodeweb_viewer_schemas.json \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index f426912..e7c8650 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,16 +9,19 @@ "version": "0.0.0", "license": "MIT", "dependencies": { - "@geode/opengeodeweb-back": "latest" + "@geode/opengeodeweb-microservice": "latest" } }, - "node_modules/@geode/opengeodeweb-back": { - "version": "5.10.0-rc.1", - "resolved": "https://registry.npmjs.org/@geode/opengeodeweb-back/-/opengeodeweb-back-5.10.0-rc.1.tgz", - "integrity": "sha512-yMTyMM+CA3YJu+VecZWxqIOEd3h9Vf4aCdNk8zYQOu/VDh8fdcOFyh9bclmhMrNQQc3hbBgvCqpebLjxxRri/w==", + "node_modules/@geode/opengeodeweb-microservice": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@geode/opengeodeweb-microservice/-/opengeodeweb-microservice-1.0.0.tgz", + "integrity": "sha512-+btAWjHecfqGAZlM/UElwlAREPtLLGsJQr1+ELqS4yZU9A4RkFliCNFkV1jmZNyBEj0QsHZzirD63/rgMj8MOw==", "license": "MIT", "dependencies": { "glob": "^11.0.3" + }, + "bin": { + "ogw-generate-schemas": "generate_schemas.js" } }, "node_modules/@isaacs/balanced-match": { @@ -496,4 +499,4 @@ } } } -} \ No newline at end of file +} diff --git a/pyproject.toml b/pyproject.toml index 0759c8b..b024b45 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,6 +33,7 @@ dependencies = {file = ["requirements.txt"]} where = ["src"] [tool.setuptools.package-data] +"opengeodeweb_viewer.rpc.schemas" = ["*.json"] "opengeodeweb_viewer.rpc.generic.schemas" = ["*.json"] "opengeodeweb_viewer.rpc.mesh.schemas" = ["*.json"] "opengeodeweb_viewer.rpc.mesh.points.schemas" = ["*.json"] diff --git a/requirements.txt b/requirements.txt index b3bd081..b751634 100644 --- a/requirements.txt +++ b/requirements.txt @@ -61,4 +61,3 @@ wslink==1.12.4 yarl==1.22.0 # via aiohttp -opengeodeweb-microservice~=1.0 diff --git a/src/opengeodeweb_viewer/py.typed b/src/opengeodeweb_viewer/py.typed new file mode 100644 index 0000000..5fcb852 --- /dev/null +++ b/src/opengeodeweb_viewer/py.typed @@ -0,0 +1 @@ +partial \ No newline at end of file diff --git a/src/opengeodeweb_viewer/rpc/schemas/kill.json b/src/opengeodeweb_viewer/rpc/schemas/kill.json new file mode 100644 index 0000000..c27f3d3 --- /dev/null +++ b/src/opengeodeweb_viewer/rpc/schemas/kill.json @@ -0,0 +1,7 @@ +{ + "rpc": "kill", + "type": "object", + "properties": {}, + "required": [], + "additionalProperties": false +} \ No newline at end of file diff --git a/src/opengeodeweb_viewer/rpc/utils_protocols.py b/src/opengeodeweb_viewer/rpc/utils_protocols.py new file mode 100644 index 0000000..1511565 --- /dev/null +++ b/src/opengeodeweb_viewer/rpc/utils_protocols.py @@ -0,0 +1,25 @@ +# type: ignore +# Standard library imports +import os + +# Third party imports +from wslink import register as exportRpc + +# Local application imports +from opengeodeweb_viewer.utils_functions import get_schemas_dict +from opengeodeweb_viewer.vtk_protocol import VtkView + + +class VtkUtilsView(VtkView): + ogw_prefix = "opengeodeweb_viewer." + ogw_schemas_dict = get_schemas_dict( + os.path.join(os.path.dirname(__file__), "schemas") + ) + + def __init__(self) -> None: + super().__init__() + + @exportRpc(ogw_prefix + ogw_schemas_dict["kill"]["rpc"]) + def kill(self) -> None: + print("Manual viewer kill, shutting down...", flush=True) + os._exit(0) diff --git a/src/opengeodeweb_viewer/utils_functions.py b/src/opengeodeweb_viewer/utils_functions.py index edf3163..84b12c9 100644 --- a/src/opengeodeweb_viewer/utils_functions.py +++ b/src/opengeodeweb_viewer/utils_functions.py @@ -9,7 +9,7 @@ # Local application imports -def get_schemas_dict(path): +def get_schemas_dict(path: str) -> object: json_files = os.listdir(path) schemas_dict = {} for json_file in json_files: diff --git a/src/opengeodeweb_viewer/vtk_protocol.py b/src/opengeodeweb_viewer/vtk_protocol.py index 44dd12a..a4f4867 100644 --- a/src/opengeodeweb_viewer/vtk_protocol.py +++ b/src/opengeodeweb_viewer/vtk_protocol.py @@ -3,10 +3,12 @@ # Third party imports import vtk -from vtk.web import protocols as vtk_protocols +from vtk.web import protocols as vtk_protocols # type: ignore # Local application imports +# mypy: allow-untyped-defs + class VtkView(vtk_protocols.vtkWebProtocol): def __init__(self): diff --git a/src/opengeodeweb_viewer/vtkw_server.py b/src/opengeodeweb_viewer/vtkw_server.py index 35135a9..d4d203d 100644 --- a/src/opengeodeweb_viewer/vtkw_server.py +++ b/src/opengeodeweb_viewer/vtkw_server.py @@ -37,6 +37,7 @@ VtkModelBlocksView, ) from .rpc.generic.generic_protocols import VtkGenericView +from .rpc.utils_protocols import VtkUtilsView # type: ignore # ============================================================================= @@ -78,6 +79,7 @@ def initialize(self): model_protocols = VtkModelView() vtk_view = VtkView() self.registerVtkWebProtocol(vtk_view) + self.registerVtkWebProtocol(VtkUtilsView()) self.registerVtkWebProtocol(VtkViewerView()) self.registerVtkWebProtocol(mesh_protocols) self.registerVtkWebProtocol(VtkMeshPointsView())