From 7cb5398877895286d4caa68b16aebd23b972f72f Mon Sep 17 00:00:00 2001 From: Cyril Novel <5690282+cnovel@users.noreply.github.com> Date: Fri, 6 Feb 2026 09:43:02 +0100 Subject: [PATCH 01/19] Add support for Conversion jobs --- .../examples/mesh_sampling_specs.py | 7 ++ .../specifications/examples/pc_conv_specs.py | 8 ++ .../specifications/examples/pc_optim_specs.py | 9 +++ .../examples/tm_optimization.py | 9 +++ .../specifications/examples/vector_optim.py | 9 +++ python_sdk/docs/specifications/index.rst | 16 +++- .../docs/specifications/mesh_sampling.rst | 37 +++++++++ .../docs/specifications/pc_conversion.rst | 38 +++++++++ .../docs/specifications/pc_optimization.rst | 37 +++++++++ .../specifications/tile_map_optimization.rst | 42 ++++++++++ .../specifications/vector_optimization.rst | 37 +++++++++ python_sdk/src/reality_capture/service/job.py | 44 ++++++++--- .../src/reality_capture/service/service.py | 5 ++ .../specifications/mesh_sampling.py | 33 ++++++++ .../specifications/point_cloud_conversion.py | 77 ++++++++----------- .../point_cloud_optimization.py | 32 ++++++++ .../specifications/tile_map_optimization.py | 42 ++++++++++ .../specifications/vector_optimization.py | 32 ++++++++ python_sdk/tests/test_job.py | 16 ++-- python_sdk/tests/test_job_validator.py | 65 ++++++++++++++++ python_sdk/tests/test_service_base.py | 2 + 21 files changed, 531 insertions(+), 66 deletions(-) create mode 100644 python_sdk/docs/specifications/examples/mesh_sampling_specs.py create mode 100644 python_sdk/docs/specifications/examples/pc_conv_specs.py create mode 100644 python_sdk/docs/specifications/examples/pc_optim_specs.py create mode 100644 python_sdk/docs/specifications/examples/tm_optimization.py create mode 100644 python_sdk/docs/specifications/examples/vector_optim.py create mode 100644 python_sdk/docs/specifications/mesh_sampling.rst create mode 100644 python_sdk/docs/specifications/pc_conversion.rst create mode 100644 python_sdk/docs/specifications/pc_optimization.rst create mode 100644 python_sdk/docs/specifications/tile_map_optimization.rst create mode 100644 python_sdk/docs/specifications/vector_optimization.rst create mode 100644 python_sdk/src/reality_capture/specifications/mesh_sampling.py create mode 100644 python_sdk/src/reality_capture/specifications/point_cloud_optimization.py create mode 100644 python_sdk/src/reality_capture/specifications/tile_map_optimization.py create mode 100644 python_sdk/src/reality_capture/specifications/vector_optimization.py diff --git a/python_sdk/docs/specifications/examples/mesh_sampling_specs.py b/python_sdk/docs/specifications/examples/mesh_sampling_specs.py new file mode 100644 index 00000000..5ff191fd --- /dev/null +++ b/python_sdk/docs/specifications/examples/mesh_sampling_specs.py @@ -0,0 +1,7 @@ +from reality_capture.specifications.mesh_sampling import (MeshSamplingSpecificationsCreate, MeshSamplingInputs, + MeshSamplingOptions, MeshSamplingFormat) + +inputs = MeshSamplingInputs(meshes=["dbad181b-5079-4224-8561-96ad218bcfc9", "ea881e3e-b0e3-4b23-bc3f-4ee8e9acdf61"]) +options = MeshSamplingOptions(format=MeshSamplingFormat.CESIUM_3D_Tiles) + +specs = MeshSamplingSpecificationsCreate(inputs=inputs, options=options) diff --git a/python_sdk/docs/specifications/examples/pc_conv_specs.py b/python_sdk/docs/specifications/examples/pc_conv_specs.py new file mode 100644 index 00000000..e49db98f --- /dev/null +++ b/python_sdk/docs/specifications/examples/pc_conv_specs.py @@ -0,0 +1,8 @@ +from reality_capture.specifications.point_cloud_conversion import (PointCloudConversionSpecificationsCreate, + PCConversionInputs, PCConversionOptions, + PCConversionFormat) + +inputs = PCConversionInputs(pointCloud="e3e12e4f-9fe0-4169-9571-41ecebd8c229") +options = PCConversionOptions(format=PCConversionFormat.LAS) + +specs = PointCloudConversionSpecificationsCreate(inputs=inputs, options=options) diff --git a/python_sdk/docs/specifications/examples/pc_optim_specs.py b/python_sdk/docs/specifications/examples/pc_optim_specs.py new file mode 100644 index 00000000..b49dae97 --- /dev/null +++ b/python_sdk/docs/specifications/examples/pc_optim_specs.py @@ -0,0 +1,9 @@ +from reality_capture.specifications.point_cloud_optimization import (PCOptimizationSpecificationsCreate, + PCOptimizationFormat, PCOptimizationInputs, + PCOptimizationOptions) + +inputs = PCOptimizationInputs(pointClouds=["dbad181b-5079-4224-8561-96ad218bcfc9", + "ea881e3e-b0e3-4b23-bc3f-4ee8e9acdf61"]) +options = PCOptimizationOptions(format=PCOptimizationFormat.CESIUM_3D_Tiles) + +specs = PCOptimizationSpecificationsCreate(inputs=inputs, options=options) diff --git a/python_sdk/docs/specifications/examples/tm_optimization.py b/python_sdk/docs/specifications/examples/tm_optimization.py new file mode 100644 index 00000000..4b5b6c8a --- /dev/null +++ b/python_sdk/docs/specifications/examples/tm_optimization.py @@ -0,0 +1,9 @@ +from reality_capture.specifications.tile_map_optimization import (TileMapOptimizationSpecificationsCreate, + TileMapOptimizationInputs, TileMapOptimizationOptions, + TileMapOptimizationFormat) + +inputs = TileMapOptimizationInputs(tileMaps=["dbad181b-5079-4224-8561-96ad218bcfc9", + "ea881e3e-b0e3-4b23-bc3f-4ee8e9acdf61"]) +options = TileMapOptimizationOptions(format=TileMapOptimizationFormat.XYZ_TILE_MAP, backgroundColor="#000000") + +specs = TileMapOptimizationSpecificationsCreate(inputs=inputs, options=options) diff --git a/python_sdk/docs/specifications/examples/vector_optim.py b/python_sdk/docs/specifications/examples/vector_optim.py new file mode 100644 index 00000000..1b4a5694 --- /dev/null +++ b/python_sdk/docs/specifications/examples/vector_optim.py @@ -0,0 +1,9 @@ +from reality_capture.specifications.vector_optimization import (VectorOptimizationSpecificationsCreate, + VectorOptimizationInputs, VectorOptimizationOptions, + VectorOptimizationFormat) + +inputs = VectorOptimizationInputs(vectors=["dbad181b-5079-4224-8561-96ad218bcfc9", + "ea881e3e-b0e3-4b23-bc3f-4ee8e9acdf61"]) +options = VectorOptimizationOptions(format=VectorOptimizationFormat.FEATURE_DB, featureClassDisplayName="Road") + +specs = VectorOptimizationSpecificationsCreate(inputs=inputs, options=options) diff --git a/python_sdk/docs/specifications/index.rst b/python_sdk/docs/specifications/index.rst index cb141d23..2e9012ba 100644 --- a/python_sdk/docs/specifications/index.rst +++ b/python_sdk/docs/specifications/index.rst @@ -33,7 +33,11 @@ Specifications regroup all the settings used to create jobs with our APIs. eval_s2d eval_s3d eval_sortho - + pc_conversion + pc_optimization + mesh_sampling + tile_map_optimization + vector_optimization Modeling ======== @@ -59,10 +63,14 @@ Analysis * :doc:`/specifications/change_detection` will take two point clouds or two meshes to to get 3D regions that capture the changes. * :doc:`/specifications/eval_o2d`, :doc:`/specifications/eval_o3d`, :doc:`/specifications/eval_s2d`, :doc:`/specifications/eval_s3d` and :doc:`/specifications/eval_sortho` will compare a prediction to a reference for a specific detection. -.. Conversion -.. ========== +Conversion +========== -.. * :doc:`/specifications/point_cloud_conversion` will convert point clouds from one format to another. +* :doc:`/specifications/pc_conversion` will convert a single point cloud from one format to another. +* :doc:`/specifications/pc_optimization` will consolidate multiple point cloud to a given format. +* :doc:`/specifications/mesh_sampling` will sample meshes and consolidate them to a given format. +* :doc:`/specifications/tile_map_optimization` will consolidate tile maps to a given format. +* :doc:`/specifications/vector_optimization` will consolidate vector data to a given format. Utilities ========= diff --git a/python_sdk/docs/specifications/mesh_sampling.rst b/python_sdk/docs/specifications/mesh_sampling.rst new file mode 100644 index 00000000..c42dc3cc --- /dev/null +++ b/python_sdk/docs/specifications/mesh_sampling.rst @@ -0,0 +1,37 @@ +============= +Mesh sampling +============= + +The *mesh sampling* job takes one or multiple reality data meshes as an input and will sample and consolidate them into a single point cloud. + +.. contents:: Quick access + :local: + :depth: 2 + +Examples +======== + +In this example, we create a specification for submitting a mesh sampling job to 3D Tiles format: + +.. literalinclude:: examples/mesh_sampling_specs.py + :language: Python + +Classes +======= + +.. currentmodule:: reality_capture.specifications.mesh_sampling + +.. autopydantic_model:: MeshSamplingSpecificationsCreate + +.. autopydantic_model:: MeshSamplingSpecifications + +.. autopydantic_model:: MeshSamplingInputs + :model-show-json: False + +.. autopydantic_model:: MeshSamplingOptions + :model-show-json: False + +.. autoclass:: MeshSamplingFormat + :show-inheritance: + :members: + :undoc-members: diff --git a/python_sdk/docs/specifications/pc_conversion.rst b/python_sdk/docs/specifications/pc_conversion.rst new file mode 100644 index 00000000..231d5d58 --- /dev/null +++ b/python_sdk/docs/specifications/pc_conversion.rst @@ -0,0 +1,38 @@ +====================== +Point cloud conversion +====================== + +The *point cloud conversion* job takes a reality data point cloud as an input and will convert it in the selected format. +Should multiple point clouds be present in the reality data, each point cloud will be converted to a different file. + +.. contents:: Quick access + :local: + :depth: 2 + +Examples +======== + +In this example, we create a specification for submitting a point cloud conversion job to LAS format: + +.. literalinclude:: examples/pc_conv_specs.py + :language: Python + +Classes +======= + +.. currentmodule:: reality_capture.specifications.point_cloud_conversion + +.. autopydantic_model:: PointCloudConversionSpecificationsCreate + +.. autopydantic_model:: PointCloudConversionSpecifications + +.. autopydantic_model:: PCConversionInputs + :model-show-json: False + +.. autopydantic_model:: PCConversionOptions + :model-show-json: False + +.. autoclass:: PCConversionFormat + :show-inheritance: + :members: + :undoc-members: diff --git a/python_sdk/docs/specifications/pc_optimization.rst b/python_sdk/docs/specifications/pc_optimization.rst new file mode 100644 index 00000000..d8a50cca --- /dev/null +++ b/python_sdk/docs/specifications/pc_optimization.rst @@ -0,0 +1,37 @@ +======================== +Point cloud optimization +======================== + +The *point cloud optimization* job takes one or multiple reality data point cloud as an input and will consolidate them into a single point cloud. + +.. contents:: Quick access + :local: + :depth: 2 + +Examples +======== + +In this example, we create a specification for submitting a point cloud optimization job to 3D Tiles format: + +.. literalinclude:: examples/pc_optim_specs.py + :language: Python + +Classes +======= + +.. currentmodule:: reality_capture.specifications.point_cloud_optimization + +.. autopydantic_model:: PCOptimizationSpecificationsCreate + +.. autopydantic_model:: PCOptimizationSpecifications + +.. autopydantic_model:: PCOptimizationInputs + :model-show-json: False + +.. autopydantic_model:: PCOptimizationOptions + :model-show-json: False + +.. autoclass:: PCOptimizationFormat + :show-inheritance: + :members: + :undoc-members: diff --git a/python_sdk/docs/specifications/tile_map_optimization.rst b/python_sdk/docs/specifications/tile_map_optimization.rst new file mode 100644 index 00000000..e1e9e862 --- /dev/null +++ b/python_sdk/docs/specifications/tile_map_optimization.rst @@ -0,0 +1,42 @@ +===================== +Tile map optimization +===================== + +The *tile map optimization* job takes one or multiple reality data tile maps as an input and will consolidate them into a single tile map. + +.. contents:: Quick access + :local: + :depth: 2 + +Examples +======== + +In this example, we create a specification for submitting a tile map optimization job to XYZ format: + +.. literalinclude:: examples/tm_optimization.py + :language: Python + +Classes +======= + +.. currentmodule:: reality_capture.specifications.tile_map_optimization + +.. autopydantic_model:: TileMapOptimizationSpecificationsCreate + +.. autopydantic_model:: TileMapOptimizationSpecifications + +.. autopydantic_model:: TileMapOptimizationInputs + :model-show-json: False + +.. autopydantic_model:: TileMapOptimizationOptions + :model-show-json: False + +.. autoclass:: TileMapOptimizationFormat + :show-inheritance: + :members: + :undoc-members: + +.. autoclass:: TileMapImageFormat + :show-inheritance: + :members: + :undoc-members: diff --git a/python_sdk/docs/specifications/vector_optimization.rst b/python_sdk/docs/specifications/vector_optimization.rst new file mode 100644 index 00000000..a64f54ec --- /dev/null +++ b/python_sdk/docs/specifications/vector_optimization.rst @@ -0,0 +1,37 @@ +=================== +Vector optimization +=================== + +The *vector optimization* job takes one or multiple reality data vectors as an input and will consolidate them into a vector data. + +.. contents:: Quick access + :local: + :depth: 2 + +Examples +======== + +In this example, we create a specification for submitting a vector optimization job to the Bentley Feature Database: + +.. literalinclude:: examples/vector_optim.py + :language: Python + +Classes +======= + +.. currentmodule:: reality_capture.specifications.vector_optimization + +.. autopydantic_model:: VectorOptimizationSpecificationsCreate + +.. autopydantic_model:: VectorOptimizationSpecifications + +.. autopydantic_model:: VectorOptimizationInputs + :model-show-json: False + +.. autopydantic_model:: VectorOptimizationOptions + :model-show-json: False + +.. autoclass:: VectorOptimizationFormat + :show-inheritance: + :members: + :undoc-members: diff --git a/python_sdk/src/reality_capture/service/job.py b/python_sdk/src/reality_capture/service/job.py index 3bfdeb6c..a81d109d 100644 --- a/python_sdk/src/reality_capture/service/job.py +++ b/python_sdk/src/reality_capture/service/job.py @@ -26,8 +26,15 @@ TouchUpExportSpecifications, TouchUpExportSpecificationsCreate) from reality_capture.specifications.water_constraints import (WaterConstraintsSpecifications, WaterConstraintsSpecificationsCreate) -"""from reality_capture.specifications.point_cloud_conversion import (PointCloudConversionSpecificationsCreate, - PointCloudConversionSpecifications)""" +from reality_capture.specifications.point_cloud_conversion import (PointCloudConversionSpecificationsCreate, + PointCloudConversionSpecifications) +from reality_capture.specifications.point_cloud_optimization import (PCOptimizationSpecificationsCreate, + PCOptimizationSpecifications) +from reality_capture.specifications.mesh_sampling import MeshSamplingSpecificationsCreate, MeshSamplingSpecifications +from reality_capture.specifications.tile_map_optimization import (TileMapOptimizationSpecificationsCreate, + TileMapOptimizationSpecifications) +from reality_capture.specifications.vector_optimization import (VectorOptimizationSpecificationsCreate, + VectorOptimizationSpecifications) from reality_capture.specifications.gaussian_splats import (GaussianSplatsSpecificationsCreate, GaussianSplatsSpecifications) @@ -61,12 +68,17 @@ class JobType(Enum): TOUCH_UP_IMPORT = "TouchUpImport" TOUCH_UP_EXPORT = "TouchUpExport" WATER_CONSTRAINTS = "WaterConstraints" - # POINT_CLOUD_CONVERSION = "PointCloudConversion" + POINT_CLOUD_CONVERSION = "PointCloudConversion" + POINT_CLOUD_OPTIMIZATION = "PointCloudOptimization" + MESH_SAMPLING = "MeshSampling" + TILE_MAP_OPTIMIZATION = "TileMapOptimization" + VECTOR_OPTIMIZATION = "VectorOptimization" + class Service(Enum): MODELING = "Modeling" ANALYSIS = "Analysis" - # CONVERSION = "Conversion" + CONVERSION = "Conversion" def _get_appropriate_service(jt: JobType): @@ -78,8 +90,7 @@ def _get_appropriate_service(jt: JobType): JobType.CHANGE_DETECTION, JobType.EVAL_O2D, JobType.EVAL_O3D, JobType.EVAL_S2D, JobType.EVAL_S3D, JobType.EVAL_SORTHO]: return Service.ANALYSIS - # return Service.CONVERSION - raise NotImplemented("Other services not yet implemented") + return Service.CONVERSION class JobState(Enum): @@ -95,7 +106,6 @@ class JobState(Enum): class JobCreate(BaseModel): name: Optional[str] = Field(None, description="Displayable job name.", min_length=3) type: JobType = Field(description="Type of job.") - # TODO : PointCloudConversionSpecificationsCreate, specifications: Union[CalibrationSpecificationsCreate, ChangeDetectionSpecificationsCreate, ConstraintsSpecificationsCreate, EvalO2DSpecificationsCreate, EvalO3DSpecificationsCreate, @@ -106,7 +116,10 @@ class JobCreate(BaseModel): ReconstructionSpecificationsCreate, Segmentation2DSpecificationsCreate, Segmentation3DSpecificationsCreate, SegmentationOrthophotoSpecificationsCreate, TilingSpecificationsCreate, TouchUpExportSpecificationsCreate, - TouchUpImportSpecificationsCreate, WaterConstraintsSpecificationsCreate] = ( + TouchUpImportSpecificationsCreate, WaterConstraintsSpecificationsCreate, + PointCloudConversionSpecificationsCreate, PCOptimizationSpecificationsCreate, + MeshSamplingSpecificationsCreate, TileMapOptimizationSpecificationsCreate, + VectorOptimizationSpecificationsCreate] = ( Field(description="Specifications aligned with the job type.")) itwin_id: str = Field(description="iTwin ID, used by the service for finding " "input reality data and uploading output data.", @@ -150,7 +163,10 @@ class Job(BaseModel): ReconstructionSpecifications, Segmentation2DSpecifications, Segmentation3DSpecifications, SegmentationOrthophotoSpecifications, TilingSpecifications, TouchUpExportSpecifications, - TouchUpImportSpecifications, WaterConstraintsSpecifications] = ( + TouchUpImportSpecifications, WaterConstraintsSpecifications, + PointCloudConversionSpecifications, PCOptimizationSpecifications, + MeshSamplingSpecifications, TileMapOptimizationSpecifications, + VectorOptimizationSpecifications] = ( Field(description="Specifications aligned with the job type.")) @field_validator("specifications", mode="plain") @@ -202,6 +218,16 @@ def set_specification_validation_model(cls, raw_dict: dict[str, Any], validation specifications = TouchUpImportSpecifications(**raw_dict) elif job_type == JobType.WATER_CONSTRAINTS: specifications = WaterConstraintsSpecifications(**raw_dict) + elif job_type == JobType.POINT_CLOUD_CONVERSION: + specifications = PointCloudConversionSpecifications(**raw_dict) + elif job_type == JobType.POINT_CLOUD_OPTIMIZATION: + specifications = PCOptimizationSpecifications(**raw_dict) + elif job_type == JobType.MESH_SAMPLING: + specifications = MeshSamplingSpecifications(**raw_dict) + elif job_type == JobType.TILE_MAP_OPTIMIZATION: + specifications = TileMapOptimizationSpecifications(**raw_dict) + elif job_type == JobType.VECTOR_OPTIMIZATION: + specifications = VectorOptimizationSpecifications(**raw_dict) else: raise ValueError(f"Unsupported job type: {job_type}") diff --git a/python_sdk/src/reality_capture/service/service.py b/python_sdk/src/reality_capture/service/service.py index a15425a1..db6d0546 100644 --- a/python_sdk/src/reality_capture/service/service.py +++ b/python_sdk/src/reality_capture/service/service.py @@ -77,11 +77,16 @@ def _get_modeling_url(self) -> str: def _get_analysis_url(self) -> str: return self._service_url + "reality-analysis/" + def _get_conversion_url(self) -> str: + return self._service_url + "reality-conversion/" + def _get_correct_url(self, service: Service) -> str: if service == Service.MODELING: return self._get_modeling_url() if service == Service.ANALYSIS: return self._get_analysis_url() + if service == Service.CONVERSION: + return self._get_conversion_url() raise NotImplemented("Other services not yet implemented") @staticmethod diff --git a/python_sdk/src/reality_capture/specifications/mesh_sampling.py b/python_sdk/src/reality_capture/specifications/mesh_sampling.py new file mode 100644 index 00000000..3a47460b --- /dev/null +++ b/python_sdk/src/reality_capture/specifications/mesh_sampling.py @@ -0,0 +1,33 @@ +from pydantic import BaseModel, Field +from typing import Optional +from enum import Enum + + +class MeshSamplingInputs(BaseModel): + meshes: list[str] = Field(description="Reality data Ids of meshes to sample") + + +class MeshSamplingFormat(Enum): + OPC = "OPC" + PNTS = "PNTS" + CESIUM_3D_Tiles = "Cesium3DTiles" + LAS = "LAS" + + +class MeshSamplingOptions(BaseModel): + out_format: Optional[MeshSamplingFormat] = Field(None, description="Output format for the conversion.", + alias="format") + input_crs: Optional[str] = Field(None, description="CRS for the input data", alias="inputCrs") + output_crs: Optional[str] = Field(None, description="CRS for the output data", alias="outputCrs") + sampling: Optional[float] = Field(None, description="Sampling value in meter") + + +class MeshSamplingSpecificationsCreate(BaseModel): + inputs: MeshSamplingInputs = Field(description="Inputs") + options: Optional[MeshSamplingOptions] = Field(None, description="Options") + + +class MeshSamplingSpecifications(BaseModel): + inputs: MeshSamplingInputs = Field(description="Inputs") + outputs: str = Field(description="Reality Data id of the sampled point cloud") + options: Optional[MeshSamplingOptions] = Field(None, description="Options") diff --git a/python_sdk/src/reality_capture/specifications/point_cloud_conversion.py b/python_sdk/src/reality_capture/specifications/point_cloud_conversion.py index 33baaf00..fd206816 100644 --- a/python_sdk/src/reality_capture/specifications/point_cloud_conversion.py +++ b/python_sdk/src/reality_capture/specifications/point_cloud_conversion.py @@ -1,45 +1,32 @@ -# from pydantic import BaseModel, Field, model_validator -# from typing import Optional -# from enum import Enum -# -# -# class PCConversionInputs(BaseModel): -# point_clouds: list[str] = Field(description="Reality data Ids of point clouds to convert", alias="pointClouds") -# -# -# class PCConversionOutputsCreate(Enum): -# OPC = "opc" -# PNTS = "pnts" -# GLB = "glb" -# GLBC = "glbc" -# -# -# class PCConversionOutputs(BaseModel): -# opc: Optional[str] = Field(None, description="Id of the conversion as Orbit Point Cloud.") -# pnts: Optional[str] = Field(None, description="Id of the conversion as Cesium 3D Point Cloud") -# -# @model_validator(mode='after') -# def only_one_field(cls, model): -# """ -# Checks that one and only one field is provided. -# """ -# if (model.opc and model.pnts) or (not model.opc and not model.pnts): -# raise ValueError("Exactly one of 'opc' or 'pnts' must be provided.") -# return model -# -# -# class PCConversionOptions(BaseModel): -# merge: Optional[bool] = Field(None, description="If true, when possible and if relevant, all the files in the " -# "input reality data will be merged as one file.") -# -# -# class PointCloudConversionSpecificationsCreate(BaseModel): -# inputs: PCConversionInputs = Field(description="Inputs") -# outputs: PCConversionOutputsCreate = Field(description="Outputs") -# options: Optional[PCConversionOptions] = Field(None, description="Options") -# -# -# class PointCloudConversionSpecifications(BaseModel): -# inputs: PCConversionInputs = Field(description="Inputs") -# outputs: PCConversionOutputs = Field(description="Outputs") -# options: Optional[PCConversionOptions] = Field(None, description="Options") +from pydantic import BaseModel, Field +from typing import Optional +from enum import Enum + + +class PCConversionInputs(BaseModel): + point_cloud: str = Field(description="Reality data Id of point cloud(s) to convert", alias="pointCloud") + + +class PCConversionFormat(Enum): + OPC = "OPC" + PNTS = "PNTS" + CESIUM_3D_Tiles = "Cesium3DTiles" + LAS = "LAS" + + +class PCConversionOptions(BaseModel): + out_format: Optional[PCConversionFormat] = Field(None, description="Output format for the conversion.", + alias="format") + input_crs: Optional[str] = Field(None, description="CRS for the input data", alias="inputCrs") + output_crs: Optional[str] = Field(None, description="CRS for the output data", alias="outputCrs") + + +class PointCloudConversionSpecificationsCreate(BaseModel): + inputs: PCConversionInputs = Field(description="Inputs") + options: Optional[PCConversionOptions] = Field(None, description="Options") + + +class PointCloudConversionSpecifications(BaseModel): + inputs: PCConversionInputs = Field(description="Inputs") + outputs: str = Field(description="Reality Data id of the converted point cloud") + options: Optional[PCConversionOptions] = Field(None, description="Options") diff --git a/python_sdk/src/reality_capture/specifications/point_cloud_optimization.py b/python_sdk/src/reality_capture/specifications/point_cloud_optimization.py new file mode 100644 index 00000000..89a35671 --- /dev/null +++ b/python_sdk/src/reality_capture/specifications/point_cloud_optimization.py @@ -0,0 +1,32 @@ +from pydantic import BaseModel, Field +from typing import Optional +from enum import Enum + + +class PCOptimizationInputs(BaseModel): + point_clouds: list[str] = Field(description="Reality data Ids of point cloud(s) to convert", alias="pointClouds") + + +class PCOptimizationFormat(Enum): + OPC = "OPC" + PNTS = "PNTS" + CESIUM_3D_Tiles = "Cesium3DTiles" + LAS = "LAS" + + +class PCOptimizationOptions(BaseModel): + out_format: Optional[PCOptimizationFormat] = Field(None, description="Output format for the conversion.", + alias="format") + input_crs: Optional[str] = Field(None, description="CRS for the input data", alias="inputCrs") + output_crs: Optional[str] = Field(None, description="CRS for the output data", alias="outputCrs") + + +class PCOptimizationSpecificationsCreate(BaseModel): + inputs: PCOptimizationInputs = Field(description="Inputs") + options: Optional[PCOptimizationOptions] = Field(None, description="Options") + + +class PCOptimizationSpecifications(BaseModel): + inputs: PCOptimizationInputs = Field(description="Inputs") + outputs: str = Field(description="Reality Data id of the converted point cloud") + options: Optional[PCOptimizationOptions] = Field(None, description="Options") diff --git a/python_sdk/src/reality_capture/specifications/tile_map_optimization.py b/python_sdk/src/reality_capture/specifications/tile_map_optimization.py new file mode 100644 index 00000000..35e77440 --- /dev/null +++ b/python_sdk/src/reality_capture/specifications/tile_map_optimization.py @@ -0,0 +1,42 @@ +from pydantic import BaseModel, Field, constr +from typing import Optional +from enum import Enum + + +class TileMapOptimizationInputs(BaseModel): + tile_maps: list[str] = Field(description="Reality data Ids of tile maps to convert", alias="tileMaps") + + +class TileMapOptimizationFormat(Enum): + XYZ_TILE_MAP = "XYZTileMap" + + +class TileMapImageFormat(Enum): + JPG = "JPG" + PNG = "PNG" + + +class TileMapOptimizationOptions(BaseModel): + out_format: Optional[TileMapOptimizationFormat] = Field(None, description="Output format for the conversion.", + alias="format") + input_crs: Optional[str] = Field(None, description="CRS for the input data", alias="inputCrs") + output_crs: Optional[str] = Field(None, description="CRS for the output data", alias="outputCrs") + top_level: Optional[int] = Field(None, description="Top level of the tile map to generate.", alias="topLevel") + bottom_level: Optional[int] = Field(None, description="Bottom level of the tile map to generate.", + alias="bottomLevel") + image_format: Optional[TileMapImageFormat] = Field(None, alias="imageFormat", description="Image format") + jpg_quality: Optional[int] = Field(None, description="Quality of JPG tiles to generate", alias="jpgQuality", + ge=10, le=99) + background_color: Optional[constr(pattern=r'^#[a-fA-F0-9]{6}$')] = ( + Field(None, description="Background color to use for tiles", alias="backgroundColor")) + + +class TileMapOptimizationSpecificationsCreate(BaseModel): + inputs: TileMapOptimizationInputs = Field(description="Inputs") + options: Optional[TileMapOptimizationOptions] = Field(None, description="Options") + + +class TileMapOptimizationSpecifications(BaseModel): + inputs: TileMapOptimizationInputs = Field(description="Inputs") + outputs: str = Field(description="Reality Data id of the tile map") + options: Optional[TileMapOptimizationOptions] = Field(None, description="Options") diff --git a/python_sdk/src/reality_capture/specifications/vector_optimization.py b/python_sdk/src/reality_capture/specifications/vector_optimization.py new file mode 100644 index 00000000..09a202c9 --- /dev/null +++ b/python_sdk/src/reality_capture/specifications/vector_optimization.py @@ -0,0 +1,32 @@ +from pydantic import BaseModel, Field +from typing import Optional +from enum import Enum + + +class VectorOptimizationInputs(BaseModel): + vectors: list[str] = Field(description="Reality data Ids of vectors to consolidate") + + +class VectorOptimizationFormat(Enum): + GEO_JSON = "GeoJSON" + FEATURE_DB = "FeatureDB" + + +class VectorOptimizationOptions(BaseModel): + out_format: Optional[VectorOptimizationFormat] = Field(None, description="Output format for the conversion.", + alias="format") + input_crs: Optional[str] = Field(None, description="CRS for the input data", alias="inputCrs") + output_crs: Optional[str] = Field(None, description="CRS for the output data", alias="outputCrs") + feature_class_display_name: Optional[str] = Field(None, description="Display class name", + alias="featureClassDisplayName") + + +class VectorOptimizationSpecificationsCreate(BaseModel): + inputs: VectorOptimizationInputs = Field(description="Inputs") + options: Optional[VectorOptimizationOptions] = Field(None, description="Options") + + +class VectorOptimizationSpecifications(BaseModel): + inputs: VectorOptimizationInputs = Field(description="Inputs") + outputs: str = Field(description="Reality Data id of the vector data or Feature DB index (fdb:)") + options: Optional[VectorOptimizationOptions] = Field(None, description="Options") diff --git a/python_sdk/tests/test_job.py b/python_sdk/tests/test_job.py index 8d1e88f2..6ea16a38 100644 --- a/python_sdk/tests/test_job.py +++ b/python_sdk/tests/test_job.py @@ -18,10 +18,10 @@ def test_appropriate_service_job(self): j = Job(id="id", type=JobType.EVAL_O2D, iTwinId="itwin", state=JobState.SUCCESS, executionInfo=cdt, userId="claude@example.org", specifications=specs) assert j.get_appropriate_service() == Service.ANALYSIS - # pc_conversion_specs = {"inputs": {"pointClouds": ["point_cloud"]}, "outputs": {"opc": "opc"}} - # j = Job(id="id", type=JobType.POINT_CLOUD_CONVERSION, iTwinId="itwin", state=JobState.SUCCESS, - # executionInfo=cdt, userId="claude@example.org", specifications=pc_conversion_specs, bucketId="bucket") - # assert j.get_appropriate_service() == Service.CONVERSION + pc_conversion_specs = {"inputs": {"pointCloud": "point_cloud"}, "outputs": "pcId"} + j = Job(id="id", type=JobType.POINT_CLOUD_CONVERSION, iTwinId="itwin", state=JobState.SUCCESS, + executionInfo=cdt, userId="claude@example.org", specifications=pc_conversion_specs) + assert j.get_appropriate_service() == Service.CONVERSION def test_appropriate_service_job_create(self): tiling_specs = {"inputs": {"scene": "scene"}, "outputs": [TilingOutputsCreate.MODELING_REFERENCE]} @@ -31,7 +31,7 @@ def test_appropriate_service_job_create(self): "outputs": [Segmentation3DOutputsCreate.SEGMENTATION3D, Segmentation3DOutputsCreate.SEGMENTED_POINT_CLOUD]} j = JobCreate(**{"type": JobType.SEGMENTATION_3D, "iTwinId": "itwin", "specifications": eg_specs}) - # assert j.get_appropriate_service() == Service.ANALYSIS - # pc_conversion_specs = {"inputs": {"pointClouds": ["point_cloud"]}, "outputs": PCConversionOutputsCreate.OPC} - # j = JobCreate(**{"type": JobType.POINT_CLOUD_CONVERSION, "iTwinId": "itwin", "specifications": pc_conversion_specs}) - # assert j.get_appropriate_service() == Service.CONVERSION + assert j.get_appropriate_service() == Service.ANALYSIS + pc_conversion_specs = {"inputs": {"pointCloud": "point_cloud"}} + j = JobCreate(**{"type": JobType.POINT_CLOUD_CONVERSION, "iTwinId": "itwin", "specifications": pc_conversion_specs}) + assert j.get_appropriate_service() == Service.CONVERSION diff --git a/python_sdk/tests/test_job_validator.py b/python_sdk/tests/test_job_validator.py index 150fe2dc..b894f112 100644 --- a/python_sdk/tests/test_job_validator.py +++ b/python_sdk/tests/test_job_validator.py @@ -19,6 +19,11 @@ from reality_capture.specifications.tiling import TilingSpecifications from reality_capture.specifications.touchup import TouchUpImportSpecifications, TouchUpExportSpecifications from reality_capture.specifications.water_constraints import WaterConstraintsSpecifications +from reality_capture.specifications.point_cloud_conversion import PointCloudConversionSpecifications +from reality_capture.specifications.point_cloud_optimization import PCOptimizationSpecifications +from reality_capture.specifications.mesh_sampling import MeshSamplingSpecifications +from reality_capture.specifications.tile_map_optimization import TileMapOptimizationSpecifications +from reality_capture.specifications.vector_optimization import VectorOptimizationSpecifications class TestJobValidator: @@ -341,3 +346,63 @@ def test_validation_wc(self): } job = Job(**j) assert isinstance(job.specifications, WaterConstraintsSpecifications) + + def test_validation_pc_conv(self): + j = self.j_base.copy() + j["type"] = "PointCloudConversion" + j["specifications"] = { + "inputs": { + "pointCloud": "mfid" + }, + "outputs": "outId" + } + job = Job(**j) + assert isinstance(job.specifications, PointCloudConversionSpecifications) + + def test_validation_pc_optim(self): + j = self.j_base.copy() + j["type"] = "PointCloudOptimization" + j["specifications"] = { + "inputs": { + "pointClouds": ["mfid"] + }, + "outputs": "outId" + } + job = Job(**j) + assert isinstance(job.specifications, PCOptimizationSpecifications) + + def test_validation_mesh_sampling(self): + j = self.j_base.copy() + j["type"] = "MeshSampling" + j["specifications"] = { + "inputs": { + "meshes": ["mId"] + }, + "outputs": "outId" + } + job = Job(**j) + assert isinstance(job.specifications, MeshSamplingSpecifications) + + def test_validation_tm_optim(self): + j = self.j_base.copy() + j["type"] = "TileMapOptimization" + j["specifications"] = { + "inputs": { + "tileMaps": ["mId"] + }, + "outputs": "outId" + } + job = Job(**j) + assert isinstance(job.specifications, TileMapOptimizationSpecifications) + + def test_validation_vector_optim(self): + j = self.j_base.copy() + j["type"] = "VectorOptimization" + j["specifications"] = { + "inputs": { + "vectors": ["vId"] + }, + "outputs": "outId" + } + job = Job(**j) + assert isinstance(job.specifications, VectorOptimizationSpecifications) \ No newline at end of file diff --git a/python_sdk/tests/test_service_base.py b/python_sdk/tests/test_service_base.py index e7749a60..da50748d 100644 --- a/python_sdk/tests/test_service_base.py +++ b/python_sdk/tests/test_service_base.py @@ -20,3 +20,5 @@ def get_token() -> str: assert r.is_error() r = rcs_dev.get_job("fake_job_dev", Service.MODELING) assert r.is_error() + r = rcs_dev.get_job("fake_job_dev", Service.CONVERSION) + assert r.is_error() From 07b0fdf31cba72bbbd24e55ac7fc54375f1acea0 Mon Sep 17 00:00:00 2001 From: Cyril Novel <5690282+cnovel@users.noreply.github.com> Date: Tue, 17 Feb 2026 15:56:34 +0100 Subject: [PATCH 02/19] Fix comments --- .../specifications/examples/mesh_sampling_specs.py | 2 +- .../docs/specifications/examples/pc_optim_specs.py | 2 +- .../reality_capture/specifications/mesh_sampling.py | 13 ++++++++----- .../specifications/point_cloud_conversion.py | 13 ++++++++----- .../specifications/point_cloud_optimization.py | 13 ++++++++----- .../specifications/tile_map_optimization.py | 6 +++--- .../specifications/vector_optimization.py | 6 +++--- python_sdk/tests/test_job.py | 2 +- python_sdk/tests/test_job_validator.py | 10 +++++----- 9 files changed, 38 insertions(+), 29 deletions(-) diff --git a/python_sdk/docs/specifications/examples/mesh_sampling_specs.py b/python_sdk/docs/specifications/examples/mesh_sampling_specs.py index 5ff191fd..0dd71a98 100644 --- a/python_sdk/docs/specifications/examples/mesh_sampling_specs.py +++ b/python_sdk/docs/specifications/examples/mesh_sampling_specs.py @@ -2,6 +2,6 @@ MeshSamplingOptions, MeshSamplingFormat) inputs = MeshSamplingInputs(meshes=["dbad181b-5079-4224-8561-96ad218bcfc9", "ea881e3e-b0e3-4b23-bc3f-4ee8e9acdf61"]) -options = MeshSamplingOptions(format=MeshSamplingFormat.CESIUM_3D_Tiles) +options = MeshSamplingOptions(outputFormat=MeshSamplingFormat.THREE_D_TILES_GLBC) specs = MeshSamplingSpecificationsCreate(inputs=inputs, options=options) diff --git a/python_sdk/docs/specifications/examples/pc_optim_specs.py b/python_sdk/docs/specifications/examples/pc_optim_specs.py index b49dae97..50630134 100644 --- a/python_sdk/docs/specifications/examples/pc_optim_specs.py +++ b/python_sdk/docs/specifications/examples/pc_optim_specs.py @@ -4,6 +4,6 @@ inputs = PCOptimizationInputs(pointClouds=["dbad181b-5079-4224-8561-96ad218bcfc9", "ea881e3e-b0e3-4b23-bc3f-4ee8e9acdf61"]) -options = PCOptimizationOptions(format=PCOptimizationFormat.CESIUM_3D_Tiles) +options = PCOptimizationOptions(outputFormat=PCOptimizationFormat.THREE_D_TILES_GLBC) specs = PCOptimizationSpecificationsCreate(inputs=inputs, options=options) diff --git a/python_sdk/src/reality_capture/specifications/mesh_sampling.py b/python_sdk/src/reality_capture/specifications/mesh_sampling.py index 3a47460b..859979f0 100644 --- a/python_sdk/src/reality_capture/specifications/mesh_sampling.py +++ b/python_sdk/src/reality_capture/specifications/mesh_sampling.py @@ -9,14 +9,17 @@ class MeshSamplingInputs(BaseModel): class MeshSamplingFormat(Enum): OPC = "OPC" - PNTS = "PNTS" - CESIUM_3D_Tiles = "Cesium3DTiles" + THREE_D_TILES_PNTS = "3DTilesPnts" + THREE_D_TILES_GLBC = "3DTilesGlbc" LAS = "LAS" + LAZ = "LAZ" + E57 = "E57" + POD = "POD" class MeshSamplingOptions(BaseModel): - out_format: Optional[MeshSamplingFormat] = Field(None, description="Output format for the conversion.", - alias="format") + output_format: Optional[MeshSamplingFormat] = Field(None, description="Output format for the conversion.", + alias="outputFormat") input_crs: Optional[str] = Field(None, description="CRS for the input data", alias="inputCrs") output_crs: Optional[str] = Field(None, description="CRS for the output data", alias="outputCrs") sampling: Optional[float] = Field(None, description="Sampling value in meter") @@ -29,5 +32,5 @@ class MeshSamplingSpecificationsCreate(BaseModel): class MeshSamplingSpecifications(BaseModel): inputs: MeshSamplingInputs = Field(description="Inputs") - outputs: str = Field(description="Reality Data id of the sampled point cloud") + output: str = Field(description="Reality Data id of the sampled point cloud") options: Optional[MeshSamplingOptions] = Field(None, description="Options") diff --git a/python_sdk/src/reality_capture/specifications/point_cloud_conversion.py b/python_sdk/src/reality_capture/specifications/point_cloud_conversion.py index fd206816..ec51c827 100644 --- a/python_sdk/src/reality_capture/specifications/point_cloud_conversion.py +++ b/python_sdk/src/reality_capture/specifications/point_cloud_conversion.py @@ -9,14 +9,17 @@ class PCConversionInputs(BaseModel): class PCConversionFormat(Enum): OPC = "OPC" - PNTS = "PNTS" - CESIUM_3D_Tiles = "Cesium3DTiles" + THREE_D_TILES_PNTS = "3DTilesPnts" + THREE_D_TILES_GLBC = "3DTilesGlbc" LAS = "LAS" + LAZ = "LAZ" + E57 = "E57" + POD = "POD" class PCConversionOptions(BaseModel): - out_format: Optional[PCConversionFormat] = Field(None, description="Output format for the conversion.", - alias="format") + output_format: Optional[PCConversionFormat] = Field(None, description="Output format for the conversion.", + alias="outputFormat") input_crs: Optional[str] = Field(None, description="CRS for the input data", alias="inputCrs") output_crs: Optional[str] = Field(None, description="CRS for the output data", alias="outputCrs") @@ -28,5 +31,5 @@ class PointCloudConversionSpecificationsCreate(BaseModel): class PointCloudConversionSpecifications(BaseModel): inputs: PCConversionInputs = Field(description="Inputs") - outputs: str = Field(description="Reality Data id of the converted point cloud") + output: str = Field(description="Reality Data id of the converted point cloud") options: Optional[PCConversionOptions] = Field(None, description="Options") diff --git a/python_sdk/src/reality_capture/specifications/point_cloud_optimization.py b/python_sdk/src/reality_capture/specifications/point_cloud_optimization.py index 89a35671..8de49273 100644 --- a/python_sdk/src/reality_capture/specifications/point_cloud_optimization.py +++ b/python_sdk/src/reality_capture/specifications/point_cloud_optimization.py @@ -9,14 +9,17 @@ class PCOptimizationInputs(BaseModel): class PCOptimizationFormat(Enum): OPC = "OPC" - PNTS = "PNTS" - CESIUM_3D_Tiles = "Cesium3DTiles" + THREE_D_TILES_PNTS = "3DTilesPnts" + THREE_D_TILES_GLBC = "3DTilesGlbc" LAS = "LAS" + LAZ = "LAZ" + E57 = "E57" + POD = "POD" class PCOptimizationOptions(BaseModel): - out_format: Optional[PCOptimizationFormat] = Field(None, description="Output format for the conversion.", - alias="format") + output_format: Optional[PCOptimizationFormat] = Field(None, description="Output format for the conversion.", + alias="outputFormat") input_crs: Optional[str] = Field(None, description="CRS for the input data", alias="inputCrs") output_crs: Optional[str] = Field(None, description="CRS for the output data", alias="outputCrs") @@ -28,5 +31,5 @@ class PCOptimizationSpecificationsCreate(BaseModel): class PCOptimizationSpecifications(BaseModel): inputs: PCOptimizationInputs = Field(description="Inputs") - outputs: str = Field(description="Reality Data id of the converted point cloud") + output: str = Field(description="Reality Data id of the converted point cloud") options: Optional[PCOptimizationOptions] = Field(None, description="Options") diff --git a/python_sdk/src/reality_capture/specifications/tile_map_optimization.py b/python_sdk/src/reality_capture/specifications/tile_map_optimization.py index 35e77440..6a8c7094 100644 --- a/python_sdk/src/reality_capture/specifications/tile_map_optimization.py +++ b/python_sdk/src/reality_capture/specifications/tile_map_optimization.py @@ -17,8 +17,8 @@ class TileMapImageFormat(Enum): class TileMapOptimizationOptions(BaseModel): - out_format: Optional[TileMapOptimizationFormat] = Field(None, description="Output format for the conversion.", - alias="format") + output_format: Optional[TileMapOptimizationFormat] = Field(None, description="Output format for the conversion.", + alias="outputFormat") input_crs: Optional[str] = Field(None, description="CRS for the input data", alias="inputCrs") output_crs: Optional[str] = Field(None, description="CRS for the output data", alias="outputCrs") top_level: Optional[int] = Field(None, description="Top level of the tile map to generate.", alias="topLevel") @@ -38,5 +38,5 @@ class TileMapOptimizationSpecificationsCreate(BaseModel): class TileMapOptimizationSpecifications(BaseModel): inputs: TileMapOptimizationInputs = Field(description="Inputs") - outputs: str = Field(description="Reality Data id of the tile map") + output: str = Field(description="Reality Data id of the tile map") options: Optional[TileMapOptimizationOptions] = Field(None, description="Options") diff --git a/python_sdk/src/reality_capture/specifications/vector_optimization.py b/python_sdk/src/reality_capture/specifications/vector_optimization.py index 09a202c9..b6cd3d62 100644 --- a/python_sdk/src/reality_capture/specifications/vector_optimization.py +++ b/python_sdk/src/reality_capture/specifications/vector_optimization.py @@ -13,8 +13,8 @@ class VectorOptimizationFormat(Enum): class VectorOptimizationOptions(BaseModel): - out_format: Optional[VectorOptimizationFormat] = Field(None, description="Output format for the conversion.", - alias="format") + output_format: Optional[VectorOptimizationFormat] = Field(None, description="Output format for the conversion.", + alias="outputFormat") input_crs: Optional[str] = Field(None, description="CRS for the input data", alias="inputCrs") output_crs: Optional[str] = Field(None, description="CRS for the output data", alias="outputCrs") feature_class_display_name: Optional[str] = Field(None, description="Display class name", @@ -28,5 +28,5 @@ class VectorOptimizationSpecificationsCreate(BaseModel): class VectorOptimizationSpecifications(BaseModel): inputs: VectorOptimizationInputs = Field(description="Inputs") - outputs: str = Field(description="Reality Data id of the vector data or Feature DB index (fdb:)") + output: str = Field(description="Reality Data id of the vector data or Feature DB index (fdb:)") options: Optional[VectorOptimizationOptions] = Field(None, description="Options") diff --git a/python_sdk/tests/test_job.py b/python_sdk/tests/test_job.py index 6ea16a38..70d9597d 100644 --- a/python_sdk/tests/test_job.py +++ b/python_sdk/tests/test_job.py @@ -18,7 +18,7 @@ def test_appropriate_service_job(self): j = Job(id="id", type=JobType.EVAL_O2D, iTwinId="itwin", state=JobState.SUCCESS, executionInfo=cdt, userId="claude@example.org", specifications=specs) assert j.get_appropriate_service() == Service.ANALYSIS - pc_conversion_specs = {"inputs": {"pointCloud": "point_cloud"}, "outputs": "pcId"} + pc_conversion_specs = {"inputs": {"pointCloud": "point_cloud"}, "output": "pcId"} j = Job(id="id", type=JobType.POINT_CLOUD_CONVERSION, iTwinId="itwin", state=JobState.SUCCESS, executionInfo=cdt, userId="claude@example.org", specifications=pc_conversion_specs) assert j.get_appropriate_service() == Service.CONVERSION diff --git a/python_sdk/tests/test_job_validator.py b/python_sdk/tests/test_job_validator.py index b894f112..3e21e89d 100644 --- a/python_sdk/tests/test_job_validator.py +++ b/python_sdk/tests/test_job_validator.py @@ -354,7 +354,7 @@ def test_validation_pc_conv(self): "inputs": { "pointCloud": "mfid" }, - "outputs": "outId" + "output": "outId" } job = Job(**j) assert isinstance(job.specifications, PointCloudConversionSpecifications) @@ -366,7 +366,7 @@ def test_validation_pc_optim(self): "inputs": { "pointClouds": ["mfid"] }, - "outputs": "outId" + "output": "outId" } job = Job(**j) assert isinstance(job.specifications, PCOptimizationSpecifications) @@ -378,7 +378,7 @@ def test_validation_mesh_sampling(self): "inputs": { "meshes": ["mId"] }, - "outputs": "outId" + "output": "outId" } job = Job(**j) assert isinstance(job.specifications, MeshSamplingSpecifications) @@ -390,7 +390,7 @@ def test_validation_tm_optim(self): "inputs": { "tileMaps": ["mId"] }, - "outputs": "outId" + "output": "outId" } job = Job(**j) assert isinstance(job.specifications, TileMapOptimizationSpecifications) @@ -402,7 +402,7 @@ def test_validation_vector_optim(self): "inputs": { "vectors": ["vId"] }, - "outputs": "outId" + "output": "outId" } job = Job(**j) assert isinstance(job.specifications, VectorOptimizationSpecifications) \ No newline at end of file From 3a819657c44123c63380ad4dfc6eaef7958e63aa Mon Sep 17 00:00:00 2001 From: Cyril <5690282+cnovel@users.noreply.github.com> Date: Tue, 24 Feb 2026 10:05:33 +0100 Subject: [PATCH 03/19] Add CS Tiler (#276) --- python_sdk/docs/specifications/cs_tiler.rst | 37 +++++++++++++++++++ .../specifications/examples/cs_tiler_specs.py | 7 ++++ python_sdk/docs/specifications/index.rst | 2 + python_sdk/src/reality_capture/service/job.py | 9 ++++- .../specifications/cs_tiler.py | 28 ++++++++++++++ python_sdk/tests/test_job_validator.py | 15 +++++++- 6 files changed, 95 insertions(+), 3 deletions(-) create mode 100644 python_sdk/docs/specifications/cs_tiler.rst create mode 100644 python_sdk/docs/specifications/examples/cs_tiler_specs.py create mode 100644 python_sdk/src/reality_capture/specifications/cs_tiler.py diff --git a/python_sdk/docs/specifications/cs_tiler.rst b/python_sdk/docs/specifications/cs_tiler.rst new file mode 100644 index 00000000..e8bbca5b --- /dev/null +++ b/python_sdk/docs/specifications/cs_tiler.rst @@ -0,0 +1,37 @@ +================== +ContextScene Tiler +================== + +The *ContextScene Tiler* job allows you to transform a part of a ContextScene to 3D Tiles for viewing purposes. + +.. contents:: Quick access + :local: + :depth: 2 + +Examples +======== + +In this example, we will create a specification for submitting a ContextScene Tiler job tiling Cameras. + +.. literalinclude:: examples/cs_tiler_specs.py + :language: Python + +Classes +======= + +.. currentmodule:: reality_capture.specifications.cs_tiler + +.. autopydantic_model:: ContextSceneTilerSpecificationsCreate + +.. autopydantic_model:: ContextSceneTilerSpecifications + +.. autopydantic_model:: CSTilerInputs + :model-show-json: False + +.. autopydantic_model:: CSTilerOptions + :model-show-json: False + +.. autoclass:: CSObject + :show-inheritance: + :members: + :undoc-members: diff --git a/python_sdk/docs/specifications/examples/cs_tiler_specs.py b/python_sdk/docs/specifications/examples/cs_tiler_specs.py new file mode 100644 index 00000000..cdab3b45 --- /dev/null +++ b/python_sdk/docs/specifications/examples/cs_tiler_specs.py @@ -0,0 +1,7 @@ +from reality_capture.specifications.cs_tiler import (ContextSceneTilerSpecificationsCreate, CSTilerInputs, + CSTilerOptions, CSObject) + +inputs = CSTilerInputs(scene="dbad181b-5079-4224-8561-96ad218bcfc9") +options = CSTilerOptions(objectToTile=CSObject.CAMERAS) + +specs = ContextSceneTilerSpecificationsCreate(inputs=inputs, options=options) diff --git a/python_sdk/docs/specifications/index.rst b/python_sdk/docs/specifications/index.rst index 2e9012ba..dd615001 100644 --- a/python_sdk/docs/specifications/index.rst +++ b/python_sdk/docs/specifications/index.rst @@ -38,6 +38,7 @@ Specifications regroup all the settings used to create jobs with our APIs. mesh_sampling tile_map_optimization vector_optimization + cs_tiler Modeling ======== @@ -71,6 +72,7 @@ Conversion * :doc:`/specifications/mesh_sampling` will sample meshes and consolidate them to a given format. * :doc:`/specifications/tile_map_optimization` will consolidate tile maps to a given format. * :doc:`/specifications/vector_optimization` will consolidate vector data to a given format. +* :doc:`/specifications/cs_tiler` will transform a ContextScene to a 3D Tile tileset. Utilities ========= diff --git a/python_sdk/src/reality_capture/service/job.py b/python_sdk/src/reality_capture/service/job.py index a81d109d..f33ba1d6 100644 --- a/python_sdk/src/reality_capture/service/job.py +++ b/python_sdk/src/reality_capture/service/job.py @@ -35,6 +35,8 @@ TileMapOptimizationSpecifications) from reality_capture.specifications.vector_optimization import (VectorOptimizationSpecificationsCreate, VectorOptimizationSpecifications) +from reality_capture.specifications.cs_tiler import (ContextSceneTilerSpecifications, + ContextSceneTilerSpecificationsCreate) from reality_capture.specifications.gaussian_splats import (GaussianSplatsSpecificationsCreate, GaussianSplatsSpecifications) @@ -73,6 +75,7 @@ class JobType(Enum): MESH_SAMPLING = "MeshSampling" TILE_MAP_OPTIMIZATION = "TileMapOptimization" VECTOR_OPTIMIZATION = "VectorOptimization" + CONTEXTSCENE_TILER = "ContextSceneTiler" class Service(Enum): @@ -119,7 +122,7 @@ class JobCreate(BaseModel): TouchUpImportSpecificationsCreate, WaterConstraintsSpecificationsCreate, PointCloudConversionSpecificationsCreate, PCOptimizationSpecificationsCreate, MeshSamplingSpecificationsCreate, TileMapOptimizationSpecificationsCreate, - VectorOptimizationSpecificationsCreate] = ( + VectorOptimizationSpecificationsCreate, ContextSceneTilerSpecificationsCreate] = ( Field(description="Specifications aligned with the job type.")) itwin_id: str = Field(description="iTwin ID, used by the service for finding " "input reality data and uploading output data.", @@ -166,7 +169,7 @@ class Job(BaseModel): TouchUpImportSpecifications, WaterConstraintsSpecifications, PointCloudConversionSpecifications, PCOptimizationSpecifications, MeshSamplingSpecifications, TileMapOptimizationSpecifications, - VectorOptimizationSpecifications] = ( + VectorOptimizationSpecifications, ContextSceneTilerSpecifications] = ( Field(description="Specifications aligned with the job type.")) @field_validator("specifications", mode="plain") @@ -228,6 +231,8 @@ def set_specification_validation_model(cls, raw_dict: dict[str, Any], validation specifications = TileMapOptimizationSpecifications(**raw_dict) elif job_type == JobType.VECTOR_OPTIMIZATION: specifications = VectorOptimizationSpecifications(**raw_dict) + elif job_type == JobType.CONTEXTSCENE_TILER: + specifications = ContextSceneTilerSpecifications(**raw_dict) else: raise ValueError(f"Unsupported job type: {job_type}") diff --git a/python_sdk/src/reality_capture/specifications/cs_tiler.py b/python_sdk/src/reality_capture/specifications/cs_tiler.py new file mode 100644 index 00000000..bb3b4ca8 --- /dev/null +++ b/python_sdk/src/reality_capture/specifications/cs_tiler.py @@ -0,0 +1,28 @@ +from typing import Optional +from pydantic import BaseModel, Field +from enum import Enum + + +class CSTilerInputs(BaseModel): + scene: str = Field(description="ContextScene reality data id to tile") + +class CSObject(Enum): + CAMERAS = "Cameras" + TIE_POINTS = "TiePoints" + ANNOTATIONS = "Annotations" + + +class CSTilerOptions(BaseModel): + object_to_tile: Optional[CSObject] = Field(None, description="Object to tile inside the ContextScene.", + alias="objectToTile") + + +class ContextSceneTilerSpecificationsCreate(BaseModel): + inputs: CSTilerInputs = Field(description="Inputs") + options: Optional[CSTilerOptions] = Field(None, description="Options") + + +class ContextSceneTilerSpecifications(BaseModel): + inputs: CSTilerInputs = Field(description="Inputs") + output: str = Field(description="Reality Data id of tiled ContextScene") + options: Optional[CSTilerOptions] = Field(None, description="Options") diff --git a/python_sdk/tests/test_job_validator.py b/python_sdk/tests/test_job_validator.py index 3e21e89d..7ca39882 100644 --- a/python_sdk/tests/test_job_validator.py +++ b/python_sdk/tests/test_job_validator.py @@ -24,6 +24,7 @@ from reality_capture.specifications.mesh_sampling import MeshSamplingSpecifications from reality_capture.specifications.tile_map_optimization import TileMapOptimizationSpecifications from reality_capture.specifications.vector_optimization import VectorOptimizationSpecifications +from reality_capture.specifications.cs_tiler import ContextSceneTilerSpecifications class TestJobValidator: @@ -405,4 +406,16 @@ def test_validation_vector_optim(self): "output": "outId" } job = Job(**j) - assert isinstance(job.specifications, VectorOptimizationSpecifications) \ No newline at end of file + assert isinstance(job.specifications, VectorOptimizationSpecifications) + + def test_validation_cs_tiler(self): + j = self.j_base.copy() + j["type"] = "ContextSceneTiler" + j["specifications"] = { + "inputs": { + "scene": "vId" + }, + "output": "outId" + } + job = Job(**j) + assert isinstance(job.specifications, ContextSceneTilerSpecifications) From 6cd8e9fdaf92d7b66a5ced216d8144467409c44b Mon Sep 17 00:00:00 2001 From: Cyril Novel <5690282+cnovel@users.noreply.github.com> Date: Tue, 24 Feb 2026 10:41:45 +0100 Subject: [PATCH 04/19] Add TS part --- .../reality-capture/src/service/job.ts | 348 +++++++++++++----- .../src/specifications/cs_tiler.ts | 37 ++ .../src/specifications/mesh_sampling.ts | 44 +++ .../specifications/point_cloud_conversion.ts | 45 +++ .../point_cloud_optimization.ts | 45 +++ .../specifications/tile_map_optimization.ts | 71 ++++ .../src/specifications/vector_optimization.ts | 47 +++ 7 files changed, 553 insertions(+), 84 deletions(-) create mode 100644 typescript/packages/reality-capture/src/specifications/cs_tiler.ts create mode 100644 typescript/packages/reality-capture/src/specifications/mesh_sampling.ts create mode 100644 typescript/packages/reality-capture/src/specifications/point_cloud_conversion.ts create mode 100644 typescript/packages/reality-capture/src/specifications/point_cloud_optimization.ts create mode 100644 typescript/packages/reality-capture/src/specifications/tile_map_optimization.ts create mode 100644 typescript/packages/reality-capture/src/specifications/vector_optimization.ts diff --git a/typescript/packages/reality-capture/src/service/job.ts b/typescript/packages/reality-capture/src/service/job.ts index 925a0282..361afca5 100644 --- a/typescript/packages/reality-capture/src/service/job.ts +++ b/typescript/packages/reality-capture/src/service/job.ts @@ -1,29 +1,121 @@ import { z } from "zod"; -import { CalibrationSpecificationsCreateSchema, CalibrationSpecificationsSchema } from "../specifications/calibration"; -import { ChangeDetectionSpecificationsCreateSchema, ChangeDetectionSpecificationsSchema } from "../specifications/change_detection"; -import { ConstraintsSpecificationsCreateSchema, ConstraintsSpecificationsSchema } from "../specifications/constraints"; -import { FillImagePropertiesSpecificationsCreateSchema, FillImagePropertiesSpecificationsSchema } from "../specifications/fill_image_properties"; -import { ImportPCSpecificationsCreateSchema, ImportPCSpecificationsSchema } from "../specifications/import_point_cloud"; -import { Objects2DSpecificationsCreateSchema, Objects2DSpecificationsSchema } from "../specifications/objects2d"; -import { ProductionSpecificationsCreateSchema, ProductionSpecificationsSchema } from "../specifications/production"; -import { ReconstructionSpecificationsCreateSchema, ReconstructionSpecificationsSchema } from "../specifications/reconstruction"; -import { Segmentation2DSpecificationsCreateSchema, Segmentation2DSpecificationsSchema } from "../specifications/segmentation2d"; -import { Segmentation3DSpecificationsCreateSchema, Segmentation3DSpecificationsSchema } from "../specifications/segmentation3d"; -import { SegmentationOrthophotoSpecificationsCreateSchema, SegmentationOrthophotoSpecificationsSchema } from "../specifications/segmentation_orthophoto"; -import { TilingSpecificationsCreateSchema, TilingSpecificationsSchema } from "../specifications/tiling"; -import { TouchUpExportSpecificationsCreateSchema, TouchUpImportSpecificationsCreateSchema, TouchUpExportSpecificationsSchema, TouchUpImportSpecificationsSchema } from "../specifications/touchup"; -import { WaterConstraintsSpecificationsCreateSchema, WaterConstraintsSpecificationsSchema } from "../specifications/water_constraints"; -import { TrainingO2DSpecificationsCreateSchema, TrainingS3DSpecificationsCreateSchema, TrainingO2DSpecificationsSchema, TrainingS3DSpecificationsSchema } from "../specifications/training"; -//import { PointCloudConversionSpecificationsCreateSchema, PointCloudConversionSpecificationsSchema } from '../specifications/point_cloud_conversion'; -import { GaussianSplatsSpecificationsCreateSchema, GaussianSplatsSpecificationsSchema } from "../specifications/gaussian_splats"; +import { + CalibrationSpecificationsCreateSchema, + CalibrationSpecificationsSchema, +} from "../specifications/calibration"; +import { + ChangeDetectionSpecificationsCreateSchema, + ChangeDetectionSpecificationsSchema, +} from "../specifications/change_detection"; +import { + ConstraintsSpecificationsCreateSchema, + ConstraintsSpecificationsSchema, +} from "../specifications/constraints"; +import { + FillImagePropertiesSpecificationsCreateSchema, + FillImagePropertiesSpecificationsSchema, +} from "../specifications/fill_image_properties"; +import { + ImportPCSpecificationsCreateSchema, + ImportPCSpecificationsSchema, +} from "../specifications/import_point_cloud"; +import { + Objects2DSpecificationsCreateSchema, + Objects2DSpecificationsSchema, +} from "../specifications/objects2d"; +import { + ProductionSpecificationsCreateSchema, + ProductionSpecificationsSchema, +} from "../specifications/production"; +import { + ReconstructionSpecificationsCreateSchema, + ReconstructionSpecificationsSchema, +} from "../specifications/reconstruction"; +import { + Segmentation2DSpecificationsCreateSchema, + Segmentation2DSpecificationsSchema, +} from "../specifications/segmentation2d"; +import { + Segmentation3DSpecificationsCreateSchema, + Segmentation3DSpecificationsSchema, +} from "../specifications/segmentation3d"; +import { + SegmentationOrthophotoSpecificationsCreateSchema, + SegmentationOrthophotoSpecificationsSchema, +} from "../specifications/segmentation_orthophoto"; +import { + TilingSpecificationsCreateSchema, + TilingSpecificationsSchema, +} from "../specifications/tiling"; +import { + TouchUpExportSpecificationsCreateSchema, + TouchUpImportSpecificationsCreateSchema, + TouchUpExportSpecificationsSchema, + TouchUpImportSpecificationsSchema, +} from "../specifications/touchup"; +import { + WaterConstraintsSpecificationsCreateSchema, + WaterConstraintsSpecificationsSchema, +} from "../specifications/water_constraints"; +import { + TrainingO2DSpecificationsCreateSchema, + TrainingS3DSpecificationsCreateSchema, + TrainingO2DSpecificationsSchema, + TrainingS3DSpecificationsSchema, +} from "../specifications/training"; + +import { + GaussianSplatsSpecificationsCreateSchema, + GaussianSplatsSpecificationsSchema, +} from "../specifications/gaussian_splats"; import { URLSchema } from "./bucket"; -import { EvalO2DSpecificationsCreateSchema, EvalO2DSpecificationsSchema } from "../specifications/eval_o2d"; -import { EvalO3DSpecificationsCreateSchema, EvalO3DSpecificationsSchema } from "../specifications/eval_o3d"; -import { EvalS2DSpecificationsCreateSchema, EvalS2DSpecificationsSchema } from "../specifications/eval_s2d"; -import { EvalS3DSpecificationsCreateSchema, EvalS3DSpecificationsSchema } from "../specifications/eval_s3d"; -import { EvalSOrthoSpecificationsCreateSchema, EvalSOrthoSpecificationsSchema } from "../specifications/eval_sortho"; +import { + EvalO2DSpecificationsCreateSchema, + EvalO2DSpecificationsSchema, +} from "../specifications/eval_o2d"; +import { + EvalO3DSpecificationsCreateSchema, + EvalO3DSpecificationsSchema, +} from "../specifications/eval_o3d"; +import { + EvalS2DSpecificationsCreateSchema, + EvalS2DSpecificationsSchema, +} from "../specifications/eval_s2d"; +import { + EvalS3DSpecificationsCreateSchema, + EvalS3DSpecificationsSchema, +} from "../specifications/eval_s3d"; +import { + EvalSOrthoSpecificationsCreateSchema, + EvalSOrthoSpecificationsSchema, +} from "../specifications/eval_sortho"; + +import { + PointCloudConversionSpecificationsCreateSchema, + PointCloudConversionSpecificationsSchema, +} from "../specifications/point_cloud_conversion"; +import { + MeshSamplingSpecificationsCreateSchema, + MeshSamplingSpecificationsSchema, +} from "../specifications/mesh_sampling"; +import { + PCOptimizationSpecificationsCreateSchema, + PCOptimizationSpecificationsSchema, +} from "../specifications/point_cloud_optimization"; +import { + VectorOptimizationSpecificationsCreateSchema, + VectorOptimizationSpecificationsSchema, +} from "../specifications/vector_optimization"; +import { + TileMapOptimizationSpecificationsCreateSchema, + TileMapOptimizationSpecificationsSchema, +} from "../specifications/tile_map_optimization"; +import { + ContextSceneTilerSpecificationsCreateSchema, + ContextSceneTilerSpecificationsSchema, +} from "../specifications/cs_tiler"; export enum JobType { CALIBRATION = "Calibration", @@ -48,35 +140,59 @@ export enum JobType { TRAINING_S3D = "TrainingS3D", TOUCH_UP_IMPORT = "TouchUpImport", TOUCH_UP_EXPORT = "TouchUpExport", - WATER_CONSTRAINTS = "WaterConstraints" - //POINT_CLOUD_CONVERSION = "PointCloudConversion", + WATER_CONSTRAINTS = "WaterConstraints", + POINT_CLOUD_CONVERSION = "PointCloudConversion", + MESH_SAMPLING = "MeshSampling", + POINT_CLOUD_OPTIMIZATION = "PointCloudOptimization", + VECTOR_OPTIMIZATION = "VectorOptimization", + TILE_MAP_OPTIMIZATION = "TileMapOptimization", + CONTEXTSCENE_TILER = "ContextSceneTiler", } export enum Service { MODELING = "Modeling", ANALYSIS = "Analysis", - // CONVERSION = "Conversion" + CONVERSION = "Conversion", } export function getAppropriateService(jt: JobType): Service { - if ([ - JobType.FILL_IMAGE_PROPERTIES, JobType.IMPORT_POINT_CLOUD, JobType.CALIBRATION, - JobType.TILING, JobType.PRODUCTION, JobType.RECONSTRUCTION, JobType.CONSTRAINTS, - JobType.TOUCH_UP_EXPORT, JobType.TOUCH_UP_IMPORT, JobType.WATER_CONSTRAINTS, - JobType.GAUSSIAN_SPLATS - ].includes(jt)) { + if ( + [ + JobType.FILL_IMAGE_PROPERTIES, + JobType.IMPORT_POINT_CLOUD, + JobType.CALIBRATION, + JobType.TILING, + JobType.PRODUCTION, + JobType.RECONSTRUCTION, + JobType.CONSTRAINTS, + JobType.TOUCH_UP_EXPORT, + JobType.TOUCH_UP_IMPORT, + JobType.WATER_CONSTRAINTS, + JobType.GAUSSIAN_SPLATS, + ].includes(jt) + ) { return Service.MODELING; } - if ([ - JobType.OBJECTS_2D, JobType.SEGMENTATION_2D, JobType.SEGMENTATION_3D, - JobType.SEGMENTATION_ORTHOPHOTO, JobType.CHANGE_DETECTION, JobType.TRAINING_O2D, - JobType.EVAL_O2D, JobType.EVAL_O3D, JobType.EVAL_S2D, JobType.EVAL_S3D, - JobType.EVAL_SORTHO, JobType.TRAINING_O2D, JobType.TRAINING_S3D - ].includes(jt)) { + if ( + [ + JobType.OBJECTS_2D, + JobType.SEGMENTATION_2D, + JobType.SEGMENTATION_3D, + JobType.SEGMENTATION_ORTHOPHOTO, + JobType.CHANGE_DETECTION, + JobType.TRAINING_O2D, + JobType.EVAL_O2D, + JobType.EVAL_O3D, + JobType.EVAL_S2D, + JobType.EVAL_S3D, + JobType.EVAL_SORTHO, + JobType.TRAINING_O2D, + JobType.TRAINING_S3D, + ].includes(jt) + ) { return Service.ANALYSIS; } - // return Service.CONVERSION; - throw new Error("Other job types are not implemented yet"); + return Service.CONVERSION; } export enum JobState { @@ -86,56 +202,85 @@ export enum JobState { FAILED = "Failed", TERMINATING_ON_CANCEL = "TerminatingOnCancel", TERMINATING_ON_FAILURE = "TerminatingOnFailure", - CANCELLED = "Cancelled" + CANCELLED = "Cancelled", } export const JobCreateSchema = z.object({ name: z.string().min(3).optional().describe("Displayable job name."), type: z.nativeEnum(JobType).describe("Type of job."), - specifications: z.union([ - CalibrationSpecificationsCreateSchema, - ChangeDetectionSpecificationsCreateSchema, - ConstraintsSpecificationsCreateSchema, - EvalO2DSpecificationsCreateSchema, - EvalO3DSpecificationsCreateSchema, - EvalS2DSpecificationsCreateSchema, - EvalS3DSpecificationsCreateSchema, - EvalSOrthoSpecificationsCreateSchema, - FillImagePropertiesSpecificationsCreateSchema, - GaussianSplatsSpecificationsCreateSchema, - ImportPCSpecificationsCreateSchema, - Objects2DSpecificationsCreateSchema, - ProductionSpecificationsCreateSchema, - ReconstructionSpecificationsCreateSchema, - Segmentation2DSpecificationsCreateSchema, - Segmentation3DSpecificationsCreateSchema, - SegmentationOrthophotoSpecificationsCreateSchema, - TilingSpecificationsCreateSchema, - TouchUpExportSpecificationsCreateSchema, - TouchUpImportSpecificationsCreateSchema, - WaterConstraintsSpecificationsCreateSchema, - TrainingO2DSpecificationsCreateSchema, - //PointCloudConversionSpecificationsCreateSchema, - TrainingS3DSpecificationsCreateSchema, - ]).describe("Specifications aligned with the job type."), - iTwinId: z.string().describe("iTwin ID, used by the service for finding input reality data and uploading output data."), + specifications: z + .union([ + CalibrationSpecificationsCreateSchema, + ChangeDetectionSpecificationsCreateSchema, + ConstraintsSpecificationsCreateSchema, + EvalO2DSpecificationsCreateSchema, + EvalO3DSpecificationsCreateSchema, + EvalS2DSpecificationsCreateSchema, + EvalS3DSpecificationsCreateSchema, + EvalSOrthoSpecificationsCreateSchema, + FillImagePropertiesSpecificationsCreateSchema, + GaussianSplatsSpecificationsCreateSchema, + ImportPCSpecificationsCreateSchema, + Objects2DSpecificationsCreateSchema, + ProductionSpecificationsCreateSchema, + ReconstructionSpecificationsCreateSchema, + Segmentation2DSpecificationsCreateSchema, + Segmentation3DSpecificationsCreateSchema, + SegmentationOrthophotoSpecificationsCreateSchema, + TilingSpecificationsCreateSchema, + TouchUpExportSpecificationsCreateSchema, + TouchUpImportSpecificationsCreateSchema, + WaterConstraintsSpecificationsCreateSchema, + TrainingO2DSpecificationsCreateSchema, + TrainingS3DSpecificationsCreateSchema, + PointCloudConversionSpecificationsCreateSchema, + MeshSamplingSpecificationsCreateSchema, + PCOptimizationSpecificationsCreateSchema, + VectorOptimizationSpecificationsCreateSchema, + TileMapOptimizationSpecificationsCreateSchema, + ContextSceneTilerSpecificationsCreateSchema, + ]) + .describe("Specifications aligned with the job type."), + iTwinId: z + .string() + .describe( + "iTwin ID, used by the service for finding input reality data and uploading output data.", + ), }); export type JobCreate = z.infer; export const ExecutionSchema = z.object({ createdDateTime: z.coerce.date().describe("Creation date time for the job."), - startedDateTime: z.coerce.date().nullable().optional().describe("Start date time for the job."), - endedDateTime: z.coerce.date().nullable().optional().describe("End date time for the job."), - processingUnits: z.number().nullable().optional().describe("Processing units consumed by the job."), + startedDateTime: z.coerce + .date() + .nullable() + .optional() + .describe("Start date time for the job."), + endedDateTime: z.coerce + .date() + .nullable() + .optional() + .describe("End date time for the job."), + processingUnits: z + .number() + .nullable() + .optional() + .describe("Processing units consumed by the job."), }); export type Execution = z.infer; const CommonFields = { id: z.string().describe("Job unique identifier."), name: z.string().min(3).optional().describe("Displayable job name."), - itwinId: z.string().describe("iTwin ID, used by the service for finding input reality data and uploading output data."), + itwinId: z + .string() + .describe( + "iTwin ID, used by the service for finding input reality data and uploading output data.", + ), state: z.nativeEnum(JobState).describe("State of the job."), - executionInfo: ExecutionSchema.describe("Known execution information for the job."), + executionInfo: ExecutionSchema.describe( + "Known execution information for the job.", + ), userId: z.string().describe("Identifier of the user that created the job."), }; @@ -190,11 +335,6 @@ export const JobSchema = z.discriminatedUnion("type", [ type: z.literal("GaussianSplats"), specifications: GaussianSplatsSpecificationsSchema, }), - /*z.object({ - ...CommonFields, - type: z.literal("ImportPointCloud"), - specifications: ImportPCSpecificationsSchema, - }),*/ z.object({ ...CommonFields, type: z.literal("Objects2D"), @@ -254,18 +394,50 @@ export const JobSchema = z.discriminatedUnion("type", [ ...CommonFields, type: z.literal("WaterConstraints"), specifications: WaterConstraintsSpecificationsSchema, - }) + }), + z.object({ + ...CommonFields, + type: z.literal("PointCloudConversion"), + specifications: PointCloudConversionSpecificationsSchema, + }), + z.object({ + ...CommonFields, + type: z.literal("MeshSampling"), + specifications: MeshSamplingSpecificationsSchema, + }), + z.object({ + ...CommonFields, + type: z.literal("PointCloudOptimization"), + specifications: PCOptimizationSpecificationsSchema, + }), + z.object({ + ...CommonFields, + type: z.literal("VectorOptimization"), + specifications: VectorOptimizationSpecificationsSchema, + }), + z.object({ + ...CommonFields, + type: z.literal("TileMapOptimization"), + specifications: TileMapOptimizationSpecificationsSchema, + }), + z.object({ + ...CommonFields, + type: z.literal("ContextSceneTiler"), + specifications: ContextSceneTilerSpecificationsSchema, + }), ]); export type Job = z.infer; export const NextLinkSchema = z.object({ - next: URLSchema.describe("URL for getting the next page of results.") + next: URLSchema.describe("URL for getting the next page of results."), }); export type NextLink = z.infer; export const JobsSchema = z.object({ jobs: z.array(JobSchema).describe("List of jobs."), - _links: NextLinkSchema.describe("Contains the hyperlink to the next page of results, if applicable."), + _links: NextLinkSchema.describe( + "Contains the hyperlink to the next page of results, if applicable.", + ), }); export type Jobs = z.infer; @@ -289,17 +461,25 @@ export const MessageSchema = z.object({ code: z.string().describe("Unique identifier for an error."), title: z.string().describe("Title of the error."), message: z.string().describe("Message of the error."), - params: z.array(z.string()).describe("Parameters to be placed in the message. Can be used for localization effort."), + params: z + .array(z.string()) + .describe( + "Parameters to be placed in the message. Can be used for localization effort.", + ), }); export type Message = z.infer; export const MessagesSchema = z.object({ - errors: z.array(MessageSchema).describe("List of potential errors from the job execution."), - warnings: z.array(MessageSchema).describe("List of potential warnings from the job execution."), + errors: z + .array(MessageSchema) + .describe("List of potential errors from the job execution."), + warnings: z + .array(MessageSchema) + .describe("List of potential warnings from the job execution."), }); export type Messages = z.infer; export const MessagesResponseSchema = z.object({ messages: MessagesSchema.describe("Messages."), }); -export type MessagesResponse = z.infer; \ No newline at end of file +export type MessagesResponse = z.infer; diff --git a/typescript/packages/reality-capture/src/specifications/cs_tiler.ts b/typescript/packages/reality-capture/src/specifications/cs_tiler.ts new file mode 100644 index 00000000..0512a846 --- /dev/null +++ b/typescript/packages/reality-capture/src/specifications/cs_tiler.ts @@ -0,0 +1,37 @@ +import { z } from "zod"; + +export const CSTilerInputsSchema = z.object({ + scene: z.string().describe("ContextScene reality data id to tile"), +}); +export type CSTilerInputs = z.infer; + +export enum CSObject { + CAMERAS = "Cameras", + TIE_POINTS = "TiePoints", + ANNOTATIONS = "Annotations", +} + +export const CSTilerOptionsSchema = z.object({ + objectToTile: z + .nativeEnum(CSObject) + .describe("Object to tile inside the ContextScene.") + .optional(), +}); +export type CSTilerOptions = z.infer; + +export const ContextSceneTilerSpecificationsCreateSchema = z.object({ + inputs: CSTilerInputsSchema.describe("Inputs"), + options: CSTilerOptionsSchema.describe("Options").optional(), +}); +export type ContextSceneTilerSpecificationsCreate = z.infer< + typeof ContextSceneTilerSpecificationsCreateSchema +>; + +export const ContextSceneTilerSpecificationsSchema = z.object({ + inputs: CSTilerInputsSchema.describe("Inputs"), + output: z.string().describe("Reality Data id of tiled ContextScene"), + options: CSTilerOptionsSchema.describe("Options").optional(), +}); +export type ContextSceneTilerSpecifications = z.infer< + typeof ContextSceneTilerSpecificationsSchema +>; diff --git a/typescript/packages/reality-capture/src/specifications/mesh_sampling.ts b/typescript/packages/reality-capture/src/specifications/mesh_sampling.ts new file mode 100644 index 00000000..405bdf7c --- /dev/null +++ b/typescript/packages/reality-capture/src/specifications/mesh_sampling.ts @@ -0,0 +1,44 @@ +import { z } from "zod"; + +export const MeshSamplingInputsSchema = z.object({ + meshes: z.array(z.string()).describe("Reality data Ids of meshes to sample"), +}); +export type MeshSamplingInputs = z.infer; + +export enum MeshSamplingFormat { + OPC = "OPC", + THREE_D_TILES_PNTS = "3DTilesPnts", + THREE_D_TILES_GLBC = "3DTilesGlbc", + LAS = "LAS", + LAZ = "LAZ", + E57 = "E57", + POD = "POD", +} + +export const MeshSamplingOptionsSchema = z.object({ + outputFormat: z + .nativeEnum(MeshSamplingFormat) + .describe("Output format for the conversion.") + .optional(), + inputCrs: z.string().describe("CRS for the input data").optional(), + outputCrs: z.string().describe("CRS for the output data").optional(), + sampling: z.number().describe("Sampling value in meter").optional(), +}); +export type MeshSamplingOptions = z.infer; + +export const MeshSamplingSpecificationsCreateSchema = z.object({ + inputs: MeshSamplingInputsSchema.describe("Inputs"), + options: MeshSamplingOptionsSchema.describe("Options").optional(), +}); +export type MeshSamplingSpecificationsCreate = z.infer< + typeof MeshSamplingSpecificationsCreateSchema +>; + +export const MeshSamplingSpecificationsSchema = z.object({ + inputs: MeshSamplingInputsSchema.describe("Inputs"), + output: z.string().describe("Reality Data id of the sampled point cloud"), + options: MeshSamplingOptionsSchema.describe("Options").optional(), +}); +export type MeshSamplingSpecifications = z.infer< + typeof MeshSamplingSpecificationsSchema +>; diff --git a/typescript/packages/reality-capture/src/specifications/point_cloud_conversion.ts b/typescript/packages/reality-capture/src/specifications/point_cloud_conversion.ts new file mode 100644 index 00000000..f1517db2 --- /dev/null +++ b/typescript/packages/reality-capture/src/specifications/point_cloud_conversion.ts @@ -0,0 +1,45 @@ +import { z } from "zod"; + +export const PCConversionInputsSchema = z.object({ + pointCloud: z + .string() + .describe("Reality data Id of point cloud(s) to convert"), +}); +export type PCConversionInputs = z.infer; + +export enum PCConversionFormat { + OPC = "OPC", + THREE_D_TILES_PNTS = "3DTilesPnts", + THREE_D_TILES_GLBC = "3DTilesGlbc", + LAS = "LAS", + LAZ = "LAZ", + E57 = "E57", + POD = "POD", +} + +export const PCConversionOptionsSchema = z.object({ + outputFormat: z + .nativeEnum(PCConversionFormat) + .describe("Output format for the conversion.") + .optional(), + inputCrs: z.string().describe("CRS for the input data").optional(), + outputCrs: z.string().describe("CRS for the output data").optional(), +}); +export type PCConversionOptions = z.infer; + +export const PointCloudConversionSpecificationsCreateSchema = z.object({ + inputs: PCConversionInputsSchema.describe("Inputs"), + options: PCConversionOptionsSchema.describe("Options").optional(), +}); +export type PointCloudConversionSpecificationsCreate = z.infer< + typeof PointCloudConversionSpecificationsCreateSchema +>; + +export const PointCloudConversionSpecificationsSchema = z.object({ + inputs: PCConversionInputsSchema.describe("Inputs"), + output: z.string().describe("Reality Data id of the converted point cloud"), + options: PCConversionOptionsSchema.describe("Options").optional(), +}); +export type PointCloudConversionSpecifications = z.infer< + typeof PointCloudConversionSpecificationsSchema +>; diff --git a/typescript/packages/reality-capture/src/specifications/point_cloud_optimization.ts b/typescript/packages/reality-capture/src/specifications/point_cloud_optimization.ts new file mode 100644 index 00000000..0d4607a9 --- /dev/null +++ b/typescript/packages/reality-capture/src/specifications/point_cloud_optimization.ts @@ -0,0 +1,45 @@ +import { z } from "zod"; + +export const PCOptimizationInputsSchema = z.object({ + pointClouds: z + .array(z.string()) + .describe("Reality data Ids of point cloud(s) to convert"), +}); +export type PCOptimizationInputs = z.infer; + +export enum PCOptimizationFormat { + OPC = "OPC", + THREE_D_TILES_PNTS = "3DTilesPnts", + THREE_D_TILES_GLBC = "3DTilesGlbc", + LAS = "LAS", + LAZ = "LAZ", + E57 = "E57", + POD = "POD", +} + +export const PCOptimizationOptionsSchema = z.object({ + outputFormat: z + .nativeEnum(PCOptimizationFormat) + .describe("Output format for the conversion.") + .optional(), + inputCrs: z.string().describe("CRS for the input data").optional(), + outputCrs: z.string().describe("CRS for the output data").optional(), +}); +export type PCOptimizationOptions = z.infer; + +export const PCOptimizationSpecificationsCreateSchema = z.object({ + inputs: PCOptimizationInputsSchema.describe("Inputs"), + options: PCOptimizationOptionsSchema.describe("Options").optional(), +}); +export type PCOptimizationSpecificationsCreate = z.infer< + typeof PCOptimizationSpecificationsCreateSchema +>; + +export const PCOptimizationSpecificationsSchema = z.object({ + inputs: PCOptimizationInputsSchema.describe("Inputs"), + output: z.string().describe("Reality Data id of the converted point cloud"), + options: PCOptimizationOptionsSchema.describe("Options").optional(), +}); +export type PCOptimizationSpecifications = z.infer< + typeof PCOptimizationSpecificationsSchema +>; diff --git a/typescript/packages/reality-capture/src/specifications/tile_map_optimization.ts b/typescript/packages/reality-capture/src/specifications/tile_map_optimization.ts new file mode 100644 index 00000000..c1b6bef6 --- /dev/null +++ b/typescript/packages/reality-capture/src/specifications/tile_map_optimization.ts @@ -0,0 +1,71 @@ +import { z } from "zod"; + +export const TileMapOptimizationInputsSchema = z.object({ + tileMaps: z + .array(z.string()) + .describe("Reality data Ids of tile maps to convert"), +}); +export type TileMapOptimizationInputs = z.infer< + typeof TileMapOptimizationInputsSchema +>; + +export enum TileMapOptimizationFormat { + XYZ_TILE_MAP = "XYZTileMap", +} + +export enum TileMapImageFormat { + JPG = "JPG", + PNG = "PNG", +} + +export const TileMapOptimizationOptionsSchema = z.object({ + outputFormat: z + .nativeEnum(TileMapOptimizationFormat) + .describe("Output format for the conversion.") + .optional(), + inputCrs: z.string().describe("CRS for the input data").optional(), + outputCrs: z.string().describe("CRS for the output data").optional(), + topLevel: z + .number() + .describe("Top level of the tile map to generate.") + .optional(), + bottomLevel: z + .number() + .describe("Bottom level of the tile map to generate.") + .optional(), + imageFormat: z + .nativeEnum(TileMapImageFormat) + .describe("Image format") + .optional(), + jpgQuality: z + .number() + .min(10) + .max(99) + .describe("Quality of JPG tiles to generate") + .optional(), + backgroundColor: z + .string() + .regex(/^#[a-fA-F0-9]{6}$/) + .describe("Background color to use for tiles") + .optional(), +}); +export type TileMapOptimizationOptions = z.infer< + typeof TileMapOptimizationOptionsSchema +>; + +export const TileMapOptimizationSpecificationsCreateSchema = z.object({ + inputs: TileMapOptimizationInputsSchema.describe("Inputs"), + options: TileMapOptimizationOptionsSchema.describe("Options").optional(), +}); +export type TileMapOptimizationSpecificationsCreate = z.infer< + typeof TileMapOptimizationSpecificationsCreateSchema +>; + +export const TileMapOptimizationSpecificationsSchema = z.object({ + inputs: TileMapOptimizationInputsSchema.describe("Inputs"), + output: z.string().describe("Reality Data id of the tile map"), + options: TileMapOptimizationOptionsSchema.describe("Options").optional(), +}); +export type TileMapOptimizationSpecifications = z.infer< + typeof TileMapOptimizationSpecificationsSchema +>; diff --git a/typescript/packages/reality-capture/src/specifications/vector_optimization.ts b/typescript/packages/reality-capture/src/specifications/vector_optimization.ts new file mode 100644 index 00000000..b1012522 --- /dev/null +++ b/typescript/packages/reality-capture/src/specifications/vector_optimization.ts @@ -0,0 +1,47 @@ +import { z } from "zod"; + +export const VectorOptimizationInputsSchema = z.object({ + vectors: z + .array(z.string()) + .describe("Reality data Ids of vectors to consolidate"), +}); +export type VectorOptimizationInputs = z.infer< + typeof VectorOptimizationInputsSchema +>; + +export enum VectorOptimizationFormat { + GEO_JSON = "GeoJSON", + FEATURE_DB = "FeatureDB", +} + +export const VectorOptimizationOptionsSchema = z.object({ + outputFormat: z + .nativeEnum(VectorOptimizationFormat) + .describe("Output format for the conversion.") + .optional(), + inputCrs: z.string().describe("CRS for the input data").optional(), + outputCrs: z.string().describe("CRS for the output data").optional(), + featureClassDisplayName: z.string().describe("Display class name").optional(), +}); +export type VectorOptimizationOptions = z.infer< + typeof VectorOptimizationOptionsSchema +>; + +export const VectorOptimizationSpecificationsCreateSchema = z.object({ + inputs: VectorOptimizationInputsSchema.describe("Inputs"), + options: VectorOptimizationOptionsSchema.describe("Options").optional(), +}); +export type VectorOptimizationSpecificationsCreate = z.infer< + typeof VectorOptimizationSpecificationsCreateSchema +>; + +export const VectorOptimizationSpecificationsSchema = z.object({ + inputs: VectorOptimizationInputsSchema.describe("Inputs"), + output: z + .string() + .describe("Reality Data id of the vector data or Feature DB index (fdb:)"), + options: VectorOptimizationOptionsSchema.describe("Options").optional(), +}); +export type VectorOptimizationSpecifications = z.infer< + typeof VectorOptimizationSpecificationsSchema +>; From 72682819f1c3d059305cd182eb865576d4e1597a Mon Sep 17 00:00:00 2001 From: Cyril Novel <5690282+cnovel@users.noreply.github.com> Date: Tue, 24 Feb 2026 11:12:33 +0100 Subject: [PATCH 05/19] Fix example --- typescript/examples/src/example_modeling.ts | 346 +++++++++++++++----- 1 file changed, 270 insertions(+), 76 deletions(-) diff --git a/typescript/examples/src/example_modeling.ts b/typescript/examples/src/example_modeling.ts index e3c99fcd..7e831776 100644 --- a/typescript/examples/src/example_modeling.ts +++ b/typescript/examples/src/example_modeling.ts @@ -1,128 +1,283 @@ /*--------------------------------------------------------------------------------------------- -* Copyright (c) Bentley Systems, Incorporated. All rights reserved. -* See LICENSE.md in the project root for license terms and full copyright notice. -*--------------------------------------------------------------------------------------------*/ + * Copyright (c) Bentley Systems, Incorporated. All rights reserved. + * See LICENSE.md in the project root for license terms and full copyright notice. + *--------------------------------------------------------------------------------------------*/ import * as dotenv from "dotenv"; import { ServiceAuthorizationClient } from "@itwin/service-authorization"; import { - CalibrationInputs, CalibrationSpecificationsCreate, CalibrationOptions, CalibrationOutputs, - CalibrationOutputsCreate, FillImagePropertiesInputs, FillImagePropertiesSpecificationsCreate, - FillImagePropertiesOutputsCreate, FillImagePropertiesOptions, FillImagePropertiesOutputs, - RealityCaptureService, ReconstructionSpecificationsCreate, ReconstructionInputs, ReconstructionOutputsCreate, - ReconstructionOutputs, ExportCreate, Format, OptionsLAS, SamplingStrategy, TilingOptions, GeometricPrecision, - JobCreate, JobType, JobState, Progress, getAppropriateService, RealityDataHandler, - Options3DTiles, BucketDataHandler, AdjustmentConstraints, - LODScope + CalibrationInputs, + CalibrationSpecificationsCreate, + CalibrationOptions, + CalibrationOutputs, + CalibrationSpecifications, + CalibrationOutputsCreate, + FillImagePropertiesInputs, + FillImagePropertiesSpecificationsCreate, + FillImagePropertiesOutputsCreate, + FillImagePropertiesOptions, + FillImagePropertiesSpecifications, + RealityCaptureService, + ReconstructionSpecificationsCreate, + ReconstructionInputs, + ReconstructionOutputsCreate, + ReconstructionOutputs, + ExportCreate, + Format, + OptionsLAS, + SamplingStrategy, + TilingOptions, + GeometricPrecision, + JobCreate, + JobType, + JobState, + Progress, + getAppropriateService, + RealityDataHandler, + Options3DTiles, + BucketDataHandler, + AdjustmentConstraints, + LODScope, + ReconstructionSpecifications, } from "@itwin/reality-capture"; -import { RealityDataClientOptions, RealityDataAccessClient, ITwinRealityData } from "@itwin/reality-data-client"; +import { + RealityDataClientOptions, + RealityDataAccessClient, + ITwinRealityData, +} from "@itwin/reality-data-client"; import path from "path"; +export async function sleep(ms: number) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} -export async function sleep(ms: number) { return new Promise(resolve => setTimeout(resolve, ms)); } - -async function monitorJob(realityCaptureService: RealityCaptureService, jobId: string) { +async function monitorJob( + realityCaptureService: RealityCaptureService, + jobId: string, +) { // Monitor job progress every 10s let progress: Progress = { state: JobState.QUEUED, percentage: 0 }; - while (progress.state !== JobState.CANCELLED && progress.state !== JobState.FAILED && progress.state !== JobState.SUCCESS) { - const response = await realityCaptureService.getJobProgress(jobId, getAppropriateService(JobType.RECONSTRUCTION)); + while ( + progress.state !== JobState.CANCELLED && + progress.state !== JobState.FAILED && + progress.state !== JobState.SUCCESS + ) { + const response = await realityCaptureService.getJobProgress( + jobId, + getAppropriateService(JobType.RECONSTRUCTION), + ); if (response.isError()) { console.log("Can't get job progress"); } progress = response.value!; console.log("Progress : ", progress.percentage); await sleep(10000); - if (progress.state === JobState.CANCELLED || progress.state === JobState.FAILED) { + if ( + progress.state === JobState.CANCELLED || + progress.state === JobState.FAILED + ) { console.log("Job not completed"); - } - else if (progress.state === JobState.SUCCESS) { + } else if (progress.state === JobState.SUCCESS) { console.log("Job completed"); } } } -async function runFillImageProperties(realityCaptureService: RealityCaptureService, imagesRealityData: ITwinRealityData, fipJobName: string, iTwinId: string): Promise { +async function runFillImageProperties( + realityCaptureService: RealityCaptureService, + imagesRealityData: ITwinRealityData, + fipJobName: string, + iTwinId: string, +): Promise { // Submit FillImageProperties job to get a context scene from the images - let fipInputs: FillImagePropertiesInputs = { imageCollections: [imagesRealityData.id] }; + let fipInputs: FillImagePropertiesInputs = { + imageCollections: [imagesRealityData.id], + }; let fipOutputs = [FillImagePropertiesOutputsCreate.SCENE]; let fipOptions: FillImagePropertiesOptions = {}; - let fipSpecs: FillImagePropertiesSpecificationsCreate = { inputs: fipInputs, outputs: fipOutputs, options: fipOptions }; - let fipJobToSubmit: JobCreate = { name: fipJobName, specifications: fipSpecs, type: JobType.FILL_IMAGE_PROPERTIES, iTwinId: iTwinId }; - const submitFipResponse = await realityCaptureService.submitJob(fipJobToSubmit); + let fipSpecs: FillImagePropertiesSpecificationsCreate = { + inputs: fipInputs, + outputs: fipOutputs, + options: fipOptions, + }; + let fipJobToSubmit: JobCreate = { + name: fipJobName, + specifications: fipSpecs, + type: JobType.FILL_IMAGE_PROPERTIES, + iTwinId: iTwinId, + }; + const submitFipResponse = + await realityCaptureService.submitJob(fipJobToSubmit); if (submitFipResponse.isError()) { - throw new Error("Failed to submit FillImageProperties job : " + submitFipResponse.error!.error.message); + throw new Error( + "Failed to submit FillImageProperties job : " + + submitFipResponse.error!.error.message, + ); } const fipJobId = submitFipResponse.value!.id; console.log("FillImageProperties job submitted"); await monitorJob(realityCaptureService, fipJobId); - const fipPropertiesResponse = await realityCaptureService.getJob(fipJobId, getAppropriateService(JobType.FILL_IMAGE_PROPERTIES)); + const fipPropertiesResponse = await realityCaptureService.getJob( + fipJobId, + getAppropriateService(JobType.FILL_IMAGE_PROPERTIES), + ); if (fipPropertiesResponse.isError()) { - throw new Error("Failed to retrieve FillImageProperties job properties : " + fipPropertiesResponse.error!.error.message); + throw new Error( + "Failed to retrieve FillImageProperties job properties : " + + fipPropertiesResponse.error!.error.message, + ); } - return (fipPropertiesResponse.value!.specifications.outputs as FillImagePropertiesOutputs).scene; + return ( + fipPropertiesResponse.value! + .specifications as FillImagePropertiesSpecifications + ).outputs.scene; } -async function runCalibration(realityCaptureService: RealityCaptureService, bucketDataHandler: BucketDataHandler, fipOutputContextScene: string, calibJobName: string, outputPath: string, iTwinId: string, calibOptions: CalibrationOptions): Promise { +async function runCalibration( + realityCaptureService: RealityCaptureService, + bucketDataHandler: BucketDataHandler, + fipOutputContextScene: string, + calibJobName: string, + outputPath: string, + iTwinId: string, + calibOptions: CalibrationOptions, +): Promise { // Submit Calibration job to get an oriented context scene let calibInputs: CalibrationInputs = { scene: fipOutputContextScene }; - let calibOutputs = [CalibrationOutputsCreate.SCENE, CalibrationOutputsCreate.REPORT]; - let calibSpecs: CalibrationSpecificationsCreate = { inputs: calibInputs, outputs: calibOutputs, options: calibOptions }; - let calibJobToSubmit: JobCreate = { name: calibJobName, specifications: calibSpecs, type: JobType.CALIBRATION, iTwinId: iTwinId }; - const submitCalibResponse = await realityCaptureService.submitJob(calibJobToSubmit); + let calibOutputs = [ + CalibrationOutputsCreate.SCENE, + CalibrationOutputsCreate.REPORT, + ]; + let calibSpecs: CalibrationSpecificationsCreate = { + inputs: calibInputs, + outputs: calibOutputs, + options: calibOptions, + }; + let calibJobToSubmit: JobCreate = { + name: calibJobName, + specifications: calibSpecs, + type: JobType.CALIBRATION, + iTwinId: iTwinId, + }; + const submitCalibResponse = + await realityCaptureService.submitJob(calibJobToSubmit); if (submitCalibResponse.isError()) { - throw new Error("Failed to submit Calibration job : " + submitCalibResponse.error!.error.message); + throw new Error( + "Failed to submit Calibration job : " + + submitCalibResponse.error!.error.message, + ); } const calibJobId = submitCalibResponse.value!.id; console.log("Calibration job submitted"); await monitorJob(realityCaptureService, calibJobId); - const calibPropertiesResponse = await realityCaptureService.getJob(calibJobId, getAppropriateService(JobType.CALIBRATION)); + const calibPropertiesResponse = await realityCaptureService.getJob( + calibJobId, + getAppropriateService(JobType.CALIBRATION), + ); if (calibPropertiesResponse.isError()) { - throw new Error("Failed to retrieve Calibration job properties : " + calibPropertiesResponse.error!.error.message); + throw new Error( + "Failed to retrieve Calibration job properties : " + + calibPropertiesResponse.error!.error.message, + ); } - const outputs = calibPropertiesResponse.value!.specifications.outputs as CalibrationOutputs; + const outputs = calibPropertiesResponse.value!.specifications + .outputs as CalibrationOutputs; const chars = outputs.report!.split(":"); // Remove 'bkt:' from the report bucket path - const calibDownloadResponse = await bucketDataHandler.downloadData(iTwinId, path.join(outputPath, "Report"), chars[1]); + const calibDownloadResponse = await bucketDataHandler.downloadData( + iTwinId, + path.join(outputPath, "Report"), + chars[1], + ); if (calibDownloadResponse.isError()) { - throw new Error("Failed to download report " + calibDownloadResponse.error!.error.message); + throw new Error( + "Failed to download report " + calibDownloadResponse.error!.error.message, + ); } - return (calibPropertiesResponse.value!.specifications.outputs as CalibrationOutputs).scene; + return ( + calibPropertiesResponse.value!.specifications as CalibrationSpecifications + ).outputs.scene; } -async function runReconstruction(realityCaptureService: RealityCaptureService, realityDataHandler: RealityDataHandler, calibOutputContextScene: string, reconsJobName: string, outputPath: string, iTwinId: string, - lasOptions: OptionsLAS, tiles3dOptions: Options3DTiles) { +async function runReconstruction( + realityCaptureService: RealityCaptureService, + realityDataHandler: RealityDataHandler, + calibOutputContextScene: string, + reconsJobName: string, + outputPath: string, + iTwinId: string, + lasOptions: OptionsLAS, + tiles3dOptions: Options3DTiles, +) { // Submit Reconstruction job to generate the LAS let reconsInputs: ReconstructionInputs = { scene: calibOutputContextScene }; let exportLas: ExportCreate = { format: Format.LAS, options: lasOptions }; - let export3dTiles: ExportCreate = { format: Format.THREED_TILES, options: tiles3dOptions }; - let reconsOutputs: ReconstructionOutputsCreate = { exports: [exportLas, export3dTiles] }; - let tilingOptions: TilingOptions = { geometricPrecision: GeometricPrecision.EXTRA }; - let reconsSpecs: ReconstructionSpecificationsCreate = { inputs: reconsInputs, outputs: reconsOutputs, options: tilingOptions }; - let reconsJobToSubmit: JobCreate = { name: reconsJobName, specifications: reconsSpecs, type: JobType.RECONSTRUCTION, iTwinId: iTwinId }; - const submitReconsResponse = await realityCaptureService.submitJob(reconsJobToSubmit); + let export3dTiles: ExportCreate = { + format: Format.THREED_TILES, + options: tiles3dOptions, + }; + let reconsOutputs: ReconstructionOutputsCreate = { + exports: [exportLas, export3dTiles], + }; + let tilingOptions: TilingOptions = { + geometricPrecision: GeometricPrecision.EXTRA, + }; + let reconsSpecs: ReconstructionSpecificationsCreate = { + inputs: reconsInputs, + outputs: reconsOutputs, + options: tilingOptions, + }; + let reconsJobToSubmit: JobCreate = { + name: reconsJobName, + specifications: reconsSpecs, + type: JobType.RECONSTRUCTION, + iTwinId: iTwinId, + }; + const submitReconsResponse = + await realityCaptureService.submitJob(reconsJobToSubmit); if (submitReconsResponse.isError()) { - throw new Error("Failed to submit Reconstruction job : " + submitReconsResponse.error!.error.message); + throw new Error( + "Failed to submit Reconstruction job : " + + submitReconsResponse.error!.error.message, + ); } const reconsJobId = submitReconsResponse.value!.id; console.log("Reconstruction job submitted"); await monitorJob(realityCaptureService, reconsJobId); console.log("Downloading Reconstruction LAS output"); - const reconsPropertiesResponse = await realityCaptureService.getJob(reconsJobId, getAppropriateService(JobType.RECONSTRUCTION)); + const reconsPropertiesResponse = await realityCaptureService.getJob( + reconsJobId, + getAppropriateService(JobType.RECONSTRUCTION), + ); if (reconsPropertiesResponse.isError()) { - throw new Error("Failed to retrieve Reconstruction job properties : " + reconsPropertiesResponse.error!.error.message); + throw new Error( + "Failed to retrieve Reconstruction job properties : " + + reconsPropertiesResponse.error!.error.message, + ); } - const outputs = reconsPropertiesResponse.value!.specifications.outputs as ReconstructionOutputs; - for(let reconsExport of outputs.exports!) - { - const reconsDownloadResponse = await realityDataHandler.downloadData(reconsExport.location, path.join(outputPath, reconsExport.format), "", iTwinId); + const outputs = ( + reconsPropertiesResponse.value! + .specifications as ReconstructionSpecifications + ).outputs; + for (let reconsExport of outputs.exports!) { + const reconsDownloadResponse = await realityDataHandler.downloadData( + reconsExport.location, + path.join(outputPath, reconsExport.format), + "", + iTwinId, + ); if (reconsDownloadResponse.isError()) { - throw new Error("Failed to download export " + reconsExport.format + " : " + reconsDownloadResponse.error!.error.message); + throw new Error( + "Failed to download export " + + reconsExport.format + + " : " + + reconsDownloadResponse.error!.error.message, + ); } } console.log("Successfully downloaded Reconstruction LAS output"); } - async function runModelingExample() { /** * This example shows how to submit a Reconstruction job and get a LAS from images @@ -133,23 +288,23 @@ async function runModelingExample() { const outputPath = "D:/Datasets/Helico/Results"; // Options for calibration - const calibOptions: CalibrationOptions = { - adjustmentConstraints: [AdjustmentConstraints.POSITION_METADATA] // Adjustment from photos position metadata + const calibOptions: CalibrationOptions = { + adjustmentConstraints: [AdjustmentConstraints.POSITION_METADATA], // Adjustment from photos position metadata }; // Options for Reconstruction LAS export const lasOptions: OptionsLAS = { samplingDistance: 0.5, // sampling distance (in meter). samplingStrategy: SamplingStrategy.ABSOLUTE, - crs: "EPSG:32631" // CRS used for this export - } + crs: "EPSG:32631", // CRS used for this export + }; // Options for Reconstruction 3DTiles export const tiles3dOptions: Options3DTiles = { - lodScope: LODScope.ACROSS_TILES // produce global LOD structure (e.g., a quadtree) for an entire reconstruction - } + lodScope: LODScope.ACROSS_TILES, // produce global LOD structure (e.g., a quadtree) for an entire reconstruction + }; // Optional : images reality data name - const imagesRealityDataName = "Reality Capture SDK sample images" + const imagesRealityDataName = "Reality Capture SDK sample images"; // Optional : jobs name const fipJobName = "Reality Capture SDK FillImageProperties job example"; const calibJobName = "Reality Capture SDK Calibration job example"; @@ -183,30 +338,69 @@ async function runModelingExample() { authorizationClient: authorizationClient, baseUrl: "https://api.bentley.com/reality-management/reality-data", }; - const realityDataClient = new RealityDataAccessClient(realityDataClientOptions); + const realityDataClient = new RealityDataAccessClient( + realityDataClientOptions, + ); console.log("Reality Data Client initialized"); try { console.log("Upload images in ", iTwinId); - const realityData = new ITwinRealityData(realityDataClient, undefined, iTwinId); + const realityData = new ITwinRealityData( + realityDataClient, + undefined, + iTwinId, + ); realityData.displayName = imagesRealityDataName; realityData.type = "CCImageCollection"; - const createdRealityData = await realityDataClient.createRealityData("", iTwinId, realityData); - const uploadResponse = await realityDataHandler.uploadData(createdRealityData.id, imagesPath, "", iTwinId); + const createdRealityData = await realityDataClient.createRealityData( + "", + iTwinId, + realityData, + ); + const uploadResponse = await realityDataHandler.uploadData( + createdRealityData.id, + imagesPath, + "", + iTwinId, + ); if (uploadResponse.isError()) { - throw new Error("Failed to upload reality data : " + uploadResponse.error!.error.message); + throw new Error( + "Failed to upload reality data : " + + uploadResponse.error!.error.message, + ); } console.log("Successfully uploaded images"); - const fipOutputContextScene = await runFillImageProperties(realityCaptureService, createdRealityData, fipJobName, iTwinId); + const fipOutputContextScene = await runFillImageProperties( + realityCaptureService, + createdRealityData, + fipJobName, + iTwinId, + ); - const calibOutputContextScene = await runCalibration(realityCaptureService, bucketDataHandler, fipOutputContextScene, calibJobName, outputPath, iTwinId, calibOptions); + const calibOutputContextScene = await runCalibration( + realityCaptureService, + bucketDataHandler, + fipOutputContextScene, + calibJobName, + outputPath, + iTwinId, + calibOptions, + ); - await runReconstruction(realityCaptureService, realityDataHandler, calibOutputContextScene, reconsJobName, outputPath, iTwinId, lasOptions, tiles3dOptions); - } - catch (error: any) { + await runReconstruction( + realityCaptureService, + realityDataHandler, + calibOutputContextScene, + reconsJobName, + outputPath, + iTwinId, + lasOptions, + tiles3dOptions, + ); + } catch (error: any) { console.log(error); } } -runModelingExample(); \ No newline at end of file +runModelingExample(); From dfd85f240b5375d8bb59943a83dd7230390731bf Mon Sep 17 00:00:00 2001 From: Cyril Novel <5690282+cnovel@users.noreply.github.com> Date: Tue, 24 Feb 2026 11:16:44 +0100 Subject: [PATCH 06/19] Fix again --- typescript/examples/src/example_modeling.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/typescript/examples/src/example_modeling.ts b/typescript/examples/src/example_modeling.ts index 7e831776..a1f5a768 100644 --- a/typescript/examples/src/example_modeling.ts +++ b/typescript/examples/src/example_modeling.ts @@ -180,8 +180,9 @@ async function runCalibration( calibPropertiesResponse.error!.error.message, ); } - const outputs = calibPropertiesResponse.value!.specifications - .outputs as CalibrationOutputs; + const outputs = ( + calibPropertiesResponse.value!.specifications as CalibrationSpecifications + ).outputs; const chars = outputs.report!.split(":"); // Remove 'bkt:' from the report bucket path const calibDownloadResponse = await bucketDataHandler.downloadData( iTwinId, From 7759d94fcc921313f65a6d0c99384bb419a65d34 Mon Sep 17 00:00:00 2001 From: Cyril Novel <5690282+cnovel@users.noreply.github.com> Date: Mon, 18 May 2026 14:37:12 +0200 Subject: [PATCH 07/19] Fix test --- python_sdk/src/reality_capture/service/job.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/python_sdk/src/reality_capture/service/job.py b/python_sdk/src/reality_capture/service/job.py index 0bfe5eb1..ce9c335e 100644 --- a/python_sdk/src/reality_capture/service/job.py +++ b/python_sdk/src/reality_capture/service/job.py @@ -96,7 +96,10 @@ def _get_appropriate_service(jt: JobType): JobType.CHANGE_DETECTION, JobType.EVAL_O2D, JobType.EVAL_O3D, JobType.EVAL_S2D, JobType.EVAL_S3D, JobType.EVAL_SORTHO, JobType.CLEARANCE_CALCULATION]: return Service.ANALYSIS - return Service.CONVERSION + if jt in [JobType.POINT_CLOUD_CONVERSION, JobType.POINT_CLOUD_OPTIMIZATION, JobType.MESH_SAMPLING, + JobType.TILE_MAP_OPTIMIZATION, JobType.VECTOR_OPTIMIZATION, JobType.CONTEXTSCENE_TILER]: + return Service.CONVERSION + raise NotImplementedError("Other services not yet implemented") class JobState(Enum): From f65cf7d85c0327d9e8731543183cfc085e0182f3 Mon Sep 17 00:00:00 2001 From: Cyril Novel <5690282+cnovel@users.noreply.github.com> Date: Mon, 18 May 2026 15:03:30 +0200 Subject: [PATCH 08/19] Fix typo --- typescript/packages/reality-capture/src/service/job.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/typescript/packages/reality-capture/src/service/job.ts b/typescript/packages/reality-capture/src/service/job.ts index 68894275..4999f99d 100644 --- a/typescript/packages/reality-capture/src/service/job.ts +++ b/typescript/packages/reality-capture/src/service/job.ts @@ -90,7 +90,10 @@ import { EvalSOrthoSpecificationsCreateSchema, EvalSOrthoSpecificationsSchema, } from "../specifications/eval_sortho"; -import { ClearanceSpecificationsCreateSchema, ClearanceSpecificationsSchema } from "../specifications/clearance"; +import { + ClearanceSpecificationsCreateSchema, + ClearanceSpecificationsSchema, +} from "../specifications/clearance"; import { PointCloudConversionSpecificationsCreateSchema, PointCloudConversionSpecificationsSchema, @@ -443,8 +446,8 @@ export type NextLink = z.infer; export const JobsSchema = z.object({ jobs: z.array(JobSchema).describe("List of jobs."), - _links: NextLinkSchema.describe( - _links: NextLinkSchema.optional().describe("Contains the hyperlink to the next page of results, if applicable."), + _links: NextLinkSchema.optional().describe( + "Contains the hyperlink to the next page of results, if applicable.", ), }); export type Jobs = z.infer; From 4fb999b5b3e5eb66226c2703bb8b110c811d5c21 Mon Sep 17 00:00:00 2001 From: Cyril Novel <5690282+cnovel@users.noreply.github.com> Date: Mon, 18 May 2026 15:38:17 +0200 Subject: [PATCH 09/19] Fix typos --- python_sdk/docs/specifications/examples/pc_conv_specs.py | 2 +- python_sdk/docs/specifications/examples/tm_optimization.py | 2 +- python_sdk/docs/specifications/examples/vector_optim.py | 2 +- python_sdk/src/reality_capture/service/job.py | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/python_sdk/docs/specifications/examples/pc_conv_specs.py b/python_sdk/docs/specifications/examples/pc_conv_specs.py index e49db98f..1ba954b8 100644 --- a/python_sdk/docs/specifications/examples/pc_conv_specs.py +++ b/python_sdk/docs/specifications/examples/pc_conv_specs.py @@ -3,6 +3,6 @@ PCConversionFormat) inputs = PCConversionInputs(pointCloud="e3e12e4f-9fe0-4169-9571-41ecebd8c229") -options = PCConversionOptions(format=PCConversionFormat.LAS) +options = PCConversionOptions(outputFormat=PCConversionFormat.LAS) specs = PointCloudConversionSpecificationsCreate(inputs=inputs, options=options) diff --git a/python_sdk/docs/specifications/examples/tm_optimization.py b/python_sdk/docs/specifications/examples/tm_optimization.py index 4b5b6c8a..b4ad3319 100644 --- a/python_sdk/docs/specifications/examples/tm_optimization.py +++ b/python_sdk/docs/specifications/examples/tm_optimization.py @@ -4,6 +4,6 @@ inputs = TileMapOptimizationInputs(tileMaps=["dbad181b-5079-4224-8561-96ad218bcfc9", "ea881e3e-b0e3-4b23-bc3f-4ee8e9acdf61"]) -options = TileMapOptimizationOptions(format=TileMapOptimizationFormat.XYZ_TILE_MAP, backgroundColor="#000000") +options = TileMapOptimizationOptions(outputFormat=TileMapOptimizationFormat.XYZ_TILE_MAP, backgroundColor="#000000") specs = TileMapOptimizationSpecificationsCreate(inputs=inputs, options=options) diff --git a/python_sdk/docs/specifications/examples/vector_optim.py b/python_sdk/docs/specifications/examples/vector_optim.py index 1b4a5694..27cd9a5b 100644 --- a/python_sdk/docs/specifications/examples/vector_optim.py +++ b/python_sdk/docs/specifications/examples/vector_optim.py @@ -4,6 +4,6 @@ inputs = VectorOptimizationInputs(vectors=["dbad181b-5079-4224-8561-96ad218bcfc9", "ea881e3e-b0e3-4b23-bc3f-4ee8e9acdf61"]) -options = VectorOptimizationOptions(format=VectorOptimizationFormat.FEATURE_DB, featureClassDisplayName="Road") +options = VectorOptimizationOptions(outputFormat=VectorOptimizationFormat.FEATURE_DB, featureClassDisplayName="Road") specs = VectorOptimizationSpecificationsCreate(inputs=inputs, options=options) diff --git a/python_sdk/src/reality_capture/service/job.py b/python_sdk/src/reality_capture/service/job.py index ce9c335e..a25aab0b 100644 --- a/python_sdk/src/reality_capture/service/job.py +++ b/python_sdk/src/reality_capture/service/job.py @@ -129,7 +129,7 @@ class JobCreate(BaseModel): PointCloudConversionSpecificationsCreate, PCOptimizationSpecificationsCreate, MeshSamplingSpecificationsCreate, TileMapOptimizationSpecificationsCreate, VectorOptimizationSpecificationsCreate, ContextSceneTilerSpecificationsCreate, - ClearanceSpecificationsCreate] = ( + ClearanceSpecificationsCreate] = ( Field(description="Specifications aligned with the job type.")) itwin_id: str = Field(description="iTwin ID, used by the service for finding " "input reality data and uploading output data.", @@ -177,7 +177,7 @@ class Job(BaseModel): PointCloudConversionSpecifications, PCOptimizationSpecifications, MeshSamplingSpecifications, TileMapOptimizationSpecifications, VectorOptimizationSpecifications, ContextSceneTilerSpecifications, - ClearanceSpecifications] = ( + ClearanceSpecifications] = ( Field(description="Specifications aligned with the job type.")) @field_validator("specifications", mode="plain") From faad59d97f935cfb108059f1ae2397bbd63db505 Mon Sep 17 00:00:00 2001 From: Cyril Novel <5690282+cnovel@users.noreply.github.com> Date: Mon, 18 May 2026 15:54:37 +0200 Subject: [PATCH 10/19] Fix issues for TS --- .../reality-capture/src/service/job.ts | 15 ++- .../src/tests/service/job.test.ts | 94 +++++++++++-------- 2 files changed, 68 insertions(+), 41 deletions(-) diff --git a/typescript/packages/reality-capture/src/service/job.ts b/typescript/packages/reality-capture/src/service/job.ts index 4999f99d..be72e90c 100644 --- a/typescript/packages/reality-capture/src/service/job.ts +++ b/typescript/packages/reality-capture/src/service/job.ts @@ -184,7 +184,6 @@ export function getAppropriateService(jt: JobType): Service { JobType.SEGMENTATION_3D, JobType.SEGMENTATION_ORTHOPHOTO, JobType.CHANGE_DETECTION, - JobType.TRAINING_O2D, JobType.EVAL_O2D, JobType.EVAL_O3D, JobType.EVAL_S2D, @@ -197,7 +196,19 @@ export function getAppropriateService(jt: JobType): Service { ) { return Service.ANALYSIS; } - return Service.CONVERSION; + if ( + [ + JobType.POINT_CLOUD_CONVERSION, + JobType.MESH_SAMPLING, + JobType.POINT_CLOUD_OPTIMIZATION, + JobType.VECTOR_OPTIMIZATION, + JobType.TILE_MAP_OPTIMIZATION, + JobType.CONTEXTSCENE_TILER, + ].includes(jt) + ) { + return Service.CONVERSION; + } + throw new Error("Other job types are not implemented yet"); } export enum JobState { diff --git a/typescript/packages/reality-capture/src/tests/service/job.test.ts b/typescript/packages/reality-capture/src/tests/service/job.test.ts index 00eed025..0b2ca944 100644 --- a/typescript/packages/reality-capture/src/tests/service/job.test.ts +++ b/typescript/packages/reality-capture/src/tests/service/job.test.ts @@ -28,29 +28,35 @@ function getCommonFields(type: JobType) { createdDateTime: new Date(), startedDateTime: new Date(), endedDateTime: new Date(), - processingUnits: 5 + processingUnits: 5, }, userId: "user42", type, specifications: { inputs: { scene: "scene" }, - outputs: [ImportPCOutputsCreate.SCAN_COLLECTION] - } + outputs: [ImportPCOutputsCreate.SCAN_COLLECTION], + }, }; } describe("getAppropriateService", () => { it("should return Service.MODELING for PRODUCTION", () => { - expect(getAppropriateService(JobType.PRODUCTION)).to.equal(Service.MODELING); + expect(getAppropriateService(JobType.PRODUCTION)).to.equal( + Service.MODELING, + ); }); it("should return Service.ANALYSIS for OBJECTS_2D", () => { - expect(getAppropriateService(JobType.OBJECTS_2D)).to.equal(Service.ANALYSIS); + expect(getAppropriateService(JobType.OBJECTS_2D)).to.equal( + Service.ANALYSIS, + ); }); - /*it("should return Service.CONVERSION for POINT_CLOUD_CONVERSION", () => { - expect(getAppropriateService(JobType.POINT_CLOUD_CONVERSION)).to.equal(Service.CONVERSION); - });*/ + it("should return Service.CONVERSION for POINT_CLOUD_CONVERSION", () => { + expect(getAppropriateService(JobType.POINT_CLOUD_CONVERSION)).to.equal( + Service.CONVERSION, + ); + }); }); describe("JobState Enum", () => { @@ -66,9 +72,9 @@ describe("JobCreateSchema", () => { type: JobType.PRODUCTION, specifications: { inputs: { scene: "scene" }, - outputs: [ImportPCOutputsCreate.SCAN_COLLECTION] + outputs: [ImportPCOutputsCreate.SCAN_COLLECTION], }, - iTwinId: "itwin123" + iTwinId: "itwin123", }; expect(() => JobCreateSchema.parse(data)).to.not.throw(); }); @@ -78,9 +84,9 @@ describe("JobCreateSchema", () => { name: "JobName", specifications: { inputs: { scene: "scene" }, - outputs: [ImportPCOutputsCreate.SCAN_COLLECTION] + outputs: [ImportPCOutputsCreate.SCAN_COLLECTION], }, - iTwinId: "itwin123" + iTwinId: "itwin123", }; expect(() => JobCreateSchema.parse(data)).to.throw(z.ZodError); }); @@ -91,7 +97,7 @@ describe("JobCreateSchema", () => { type: JobType.PRODUCTION, specifications: { inputs: { scene: "scene" }, - outputs: [ImportPCOutputsCreate.SCAN_COLLECTION] + outputs: [ImportPCOutputsCreate.SCAN_COLLECTION], }, }; expect(() => JobCreateSchema.parse(data)).to.throw(z.ZodError); @@ -103,9 +109,9 @@ describe("JobCreateSchema", () => { type: JobType.PRODUCTION, specifications: { inputs: { scene: "scene" }, - outputs: [ImportPCOutputsCreate.SCAN_COLLECTION] + outputs: [ImportPCOutputsCreate.SCAN_COLLECTION], }, - iTwinId: "itwin123" + iTwinId: "itwin123", }; expect(() => JobCreateSchema.parse(data)).to.throw(z.ZodError); }); @@ -117,7 +123,7 @@ describe("ExecutionSchema", () => { createdDateTime: new Date().toISOString(), startedDateTime: new Date().toISOString(), endedDateTime: new Date().toISOString(), - processingUnits: 9 + processingUnits: 9, }; expect(() => ExecutionSchema.parse(data)).to.not.throw(); }); @@ -125,7 +131,7 @@ describe("ExecutionSchema", () => { it("should allow missing startedDateTime and endedDateTime", () => { const data = { createdDateTime: new Date().toISOString(), - processingUnits: 4 + processingUnits: 4, }; expect(() => ExecutionSchema.parse(data)).to.not.throw(); }); @@ -133,14 +139,14 @@ describe("ExecutionSchema", () => { it("should allow nullable processingUnits", () => { const data = { createdDateTime: new Date().toISOString(), - processingUnits: null + processingUnits: null, }; expect(() => ExecutionSchema.parse(data)).to.not.throw(); }); it("should fail if createdDateTime is missing", () => { const data = { - processingUnits: 3 + processingUnits: 3, }; expect(() => ExecutionSchema.parse(data)).to.throw(z.ZodError); }); @@ -176,7 +182,7 @@ describe("ProgressSchema", () => { it("should validate correct progress info", () => { const data = { state: JobState.ACTIVE, - percentage: 55 + percentage: 55, }; expect(() => ProgressSchema.parse(data)).to.not.throw(); }); @@ -184,7 +190,7 @@ describe("ProgressSchema", () => { it("should fail if percentage is out of range", () => { const data = { state: JobState.ACTIVE, - percentage: 120 + percentage: 120, }; expect(() => ProgressSchema.parse(data)).to.throw(z.ZodError); }); @@ -195,8 +201,8 @@ describe("ProgressResponseSchema", () => { const data = { progress: { state: JobState.SUCCESS, - percentage: 100 - } + percentage: 100, + }, }; expect(() => ProgressResponseSchema.parse(data)).to.not.throw(); }); @@ -212,7 +218,7 @@ describe("MessageSchema", () => { code: "ERR1", title: "Error title", message: "Error message", - params: ["param1", "param2"] + params: ["param1", "param2"], }; expect(() => MessageSchema.parse(msg)).to.not.throw(); }); @@ -221,7 +227,7 @@ describe("MessageSchema", () => { const msg = { code: "ERR1", title: "Error title", - message: "Error message" + message: "Error message", }; expect(() => MessageSchema.parse(msg)).to.throw(z.ZodError); }); @@ -230,19 +236,29 @@ describe("MessageSchema", () => { describe("MessagesSchema", () => { it("should validate correct messages", () => { const data = { - errors: [{ - code: "E1", title: "t1", message: "m1", params: [] - }], - warnings: [{ - code: "W1", title: "t2", message: "m2", params: ["p"] - }] + errors: [ + { + code: "E1", + title: "t1", + message: "m1", + params: [], + }, + ], + warnings: [ + { + code: "W1", + title: "t2", + message: "m2", + params: ["p"], + }, + ], }; expect(() => MessagesSchema.parse(data)).to.not.throw(); }); it("should fail if errors field is missing", () => { const data = { - warnings: [] + warnings: [], }; expect(() => MessagesSchema.parse(data)).to.throw(z.ZodError); }); @@ -253,8 +269,8 @@ describe("MessagesResponseSchema", () => { const data = { messages: { errors: [{ code: "E1", title: "t1", message: "m1", params: [] }], - warnings: [] - } + warnings: [], + }, }; expect(() => MessagesResponseSchema.parse(data)).to.not.throw(); }); @@ -265,16 +281,16 @@ describe("MessagesResponseSchema", () => { }); describe("NextLinkSchema", () => { - it ("should validate correct next link", () => { + it("should validate correct next link", () => { const data = { next: { - href: "https://api.bentley.com/reality-modeling/jobs?$filter=iTwinId%20eq%202c8e4988-eb9b-4e5f-a903-8c7c18f3030a&$top=2&continuationToken=MTRmZDkwOGYtNWEzOS00YzY3LWFmMGYtMGMxMWQxYWNkMDhl" - } + href: "https://api.bentley.com/reality-modeling/jobs?$filter=iTwinId%20eq%202c8e4988-eb9b-4e5f-a903-8c7c18f3030a&$top=2&continuationToken=MTRmZDkwOGYtNWEzOS00YzY3LWFmMGYtMGMxMWQxYWNkMDhl", + }, }; expect(() => NextLinkSchema.parse(data)).to.not.throw(); }); - it ("should fail if empty", () => { + it("should fail if empty", () => { expect(() => NextLinkSchema.parse({})).to.throw(z.ZodError); }); -}); \ No newline at end of file +}); From 5951adb08878556f7ded1d2a27eb128e1bc7ae70 Mon Sep 17 00:00:00 2001 From: Cyril Novel <5690282+cnovel@users.noreply.github.com> Date: Tue, 19 May 2026 11:33:59 +0200 Subject: [PATCH 11/19] Comment CS Tiler as it is not yet ready --- python_sdk/coverage.json | 1 + python_sdk/docs/specifications/cs_tiler.rst | 37 ----------- .../specifications/examples/cs_tiler_specs.py | 7 -- python_sdk/docs/specifications/index.rst | 2 - python_sdk/src/reality_capture/service/job.py | 16 ++--- .../specifications/cs_tiler.py | 56 ++++++++-------- python_sdk/tests/test_job_validator.py | 24 +++---- .../reality-capture/src/service/job.ts | 24 +++---- .../src/specifications/cs_tiler.ts | 64 +++++++++---------- 9 files changed, 93 insertions(+), 138 deletions(-) create mode 100644 python_sdk/coverage.json delete mode 100644 python_sdk/docs/specifications/cs_tiler.rst delete mode 100644 python_sdk/docs/specifications/examples/cs_tiler_specs.py diff --git a/python_sdk/coverage.json b/python_sdk/coverage.json new file mode 100644 index 00000000..c68517df --- /dev/null +++ b/python_sdk/coverage.json @@ -0,0 +1 @@ +{"meta": {"format": 3, "version": "7.10.6", "timestamp": "2026-05-19T11:32:26.799258", "branch_coverage": false, "show_contexts": false}, "files": {"docs\\service\\examples\\cancel_job.py": {"executed_lines": [1, 4, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 4, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 4, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\service\\examples\\create_reality_data.py": {"executed_lines": [1, 2, 6, 7, 9, 12], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 6, 7, 9, 12], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 6, 7, 9, 12], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\service\\examples\\delete_reality_data.py": {"executed_lines": [1, 5, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 5, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\service\\examples\\error.py": {"executed_lines": [1, 4, 5, 6, 8, 9, 10, 11, 12], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [13, 14, 15], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 4, 5, 6, 8, 9, 10, 11, 12], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [13, 14, 15], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 4, 5, 6, 8, 9, 10, 11, 12], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [13, 14, 15], "excluded_lines": []}}}, "docs\\service\\examples\\get_job.py": {"executed_lines": [1, 4, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 4, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 4, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\service\\examples\\get_job_progress.py": {"executed_lines": [1, 4, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 4, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 4, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\service\\examples\\get_reality_data.py": {"executed_lines": [1, 5, 6, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 5, 6, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 6, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\service\\examples\\get_reality_data_read_access.py": {"executed_lines": [1, 5, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 5, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\service\\examples\\get_reality_data_write_access.py": {"executed_lines": [1, 5, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 5, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\service\\examples\\handle_bucket.py": {"executed_lines": [1, 2, 5, 6, 8, 9, 10, 12, 13, 14, 19, 21, 22], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [16, 17], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 5, 6, 8, 9, 10, 12, 13, 14, 19, 21, 22], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [16, 17], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 5, 6, 8, 9, 10, 12, 13, 14, 19, 21, 22], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [16, 17], "excluded_lines": []}}}, "docs\\service\\examples\\handle_data.py": {"executed_lines": [1, 2, 5, 6, 8, 9, 10, 12, 13, 14, 19, 21, 22], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [16, 17], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 5, 6, 8, 9, 10, 12, 13, 14, 19, 21, 22], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [16, 17], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 5, 6, 8, 9, 10, 12, 13, 14, 19, 21, 22], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [16, 17], "excluded_lines": []}}}, "docs\\service\\examples\\submit_job.py": {"executed_lines": [1, 2, 3, 7, 8, 10, 11, 12, 13, 15, 17, 19], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 7, 8, 10, 11, 12, 13, 15, 17, 19], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 7, 8, 10, 11, 12, 13, 15, 17, 19], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\service\\examples\\update_reality_data.py": {"executed_lines": [1, 2, 6, 7, 9, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 6, 7, 9, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 6, 7, 9, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\calib_specs_adjust.py": {"executed_lines": [1, 3, 4, 5, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\calib_specs_default.py": {"executed_lines": [1, 3, 4, 5, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\cd_specs_detect_changes_meshes.py": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\clearance_specs.py": {"executed_lines": [1, 3, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\constraints_specs_add.py": {"executed_lines": [1, 3, 7, 9, 10], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 7, 9, 10], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 7, 9, 10], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\constraints_specs_delete.py": {"executed_lines": [1, 3, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\convert_pc_specs.py": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\eval_o2d_specs.py": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\eval_o3d_specs.py": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\eval_s2d_specs.py": {"executed_lines": [1, 3, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\eval_s3d_specs.py": {"executed_lines": [1, 3, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\eval_sortho_specs.py": {"executed_lines": [1, 3, 5, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\fill_image_properties_specs.py": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\gaussian_specs_3dt.py": {"executed_lines": [1, 5, 6, 7, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 5, 6, 7, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 6, 7, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\import_pc_specs.py": {"executed_lines": [1, 3, 4, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\mesh_sampling_specs.py": {"executed_lines": [1, 4, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 4, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 4, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\o2d_specs_detect_o2d_and_o3d_objects.py": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\o2d_specs_detect_o2d_objects.py": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\o2d_specs_detect_o3d_objects_given_o2d_objects.py": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\pc_conv_specs.py": {"executed_lines": [1, 5, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 5, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\pc_optim_specs.py": {"executed_lines": [1, 5, 7, 9], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 5, 7, 9], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 7, 9], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\production_specs_3d_tiles.py": {"executed_lines": [1, 3, 5, 7, 11, 14, 16, 17], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 7, 11, 14, 16, 17], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 7, 11, 14, 16, 17], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\reconstruction_specs.py": {"executed_lines": [1, 2, 3, 5, 6, 8, 10, 11], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 5, 6, 8, 10, 11], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 5, 6, 8, 10, 11], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\s2d_specs_project_on_mesh_given_2d_segmentation.py": {"executed_lines": [1, 3, 6, 8, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 6, 8, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 6, 8, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\s2d_specs_segment_photos.py": {"executed_lines": [1, 3, 5, 7, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 7, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 7, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\s2d_specs_segment_photos_and_project_on_mesh.py": {"executed_lines": [1, 3, 6, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 6, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 6, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\s3d_specs_infer_3d_lines_given_3d_segmentation.py": {"executed_lines": [1, 3, 4, 5, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\s3d_specs_segment_meshes.py": {"executed_lines": [1, 3, 5, 7, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 7, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 7, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\s3d_specs_segment_pc.py": {"executed_lines": [1, 3, 5, 7, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 7, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 7, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\s3d_specs_segment_pc_and_infer_3d_lines.py": {"executed_lines": [1, 3, 5, 8, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 8, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 8, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\sortho_specs_classify_pixels.py": {"executed_lines": [1, 3, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\tiling_specs_default.py": {"executed_lines": [1, 3, 4, 5, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\tiling_specs_options.py": {"executed_lines": [1, 3, 5, 6, 10, 11], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 10, 11], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 10, 11], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\tm_optimization.py": {"executed_lines": [1, 5, 7, 9], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 5, 7, 9], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 7, 9], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\touchup_export.py": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\touchup_import.py": {"executed_lines": [1, 3, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\vector_optim.py": {"executed_lines": [1, 5, 7, 9], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 5, 7, 9], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 7, 9], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\water_constraints_specs.py": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\__init__.py": {"executed_lines": [1, 3, 4, 5, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\service\\__init__.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\service\\bucket.py": {"executed_lines": [1, 2, 5, 6, 9, 10, 11], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 5, 6, 9, 10, 11], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"Bucket": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BucketResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 5, 6, 9, 10, 11], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\service\\data_handler.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 15, 16, 25, 26, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 40, 42, 43, 44, 46, 47, 49, 50, 52, 53, 54, 55, 57, 66, 67, 68, 69, 71, 72, 74, 76, 77, 78, 79, 80, 82, 83, 84, 86, 87, 89, 90, 91, 92, 93, 94, 95, 96, 98, 99, 101, 102, 104, 105, 106, 107, 109, 110, 111, 112, 123, 125, 126, 127, 128, 129, 131, 132, 133, 135, 136, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 158, 161, 162, 166, 174, 175, 177, 178, 179, 180, 182, 183, 184, 186, 198, 199, 200, 201, 202, 203, 204, 206, 207, 208, 209, 211, 222, 223, 224, 225, 227, 235, 236, 237, 238, 240, 250, 251, 252, 253, 255, 262, 265, 266, 270, 278, 279, 281, 282, 284, 294, 295, 296, 297, 299, 309, 310, 311, 312, 314, 321, 322, 323, 324, 326, 334, 335, 336, 337, 339, 346], "summary": {"covered_lines": 173, "num_statements": 173, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"_DataHandler._get_files_and_sizes": {"executed_lines": [15, 16, 25, 26], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_DataHandler._get_nb_threads": {"executed_lines": [30, 31, 32], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_DataHandler.download_data": {"executed_lines": [36, 37, 38, 40, 42, 43, 44, 46, 76, 77, 78, 79, 80, 82, 83, 84, 86, 87], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_DataHandler.download_data._download_blob": {"executed_lines": [47, 57, 66, 67, 68, 69, 71, 72, 74], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_DataHandler.download_data._download_blob._download_callback": {"executed_lines": [49, 50, 52, 53, 54, 55], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_DataHandler.upload_data": {"executed_lines": [91, 92, 93, 94, 95, 96, 98, 125, 126, 127, 128, 129, 131, 132, 133, 135, 136], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_DataHandler.upload_data._upload_file": {"executed_lines": [99, 109, 110, 111, 112, 123], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_DataHandler.upload_data._upload_file._upload_callback": {"executed_lines": [101, 102, 104, 105, 106, 107], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_DataHandler.list_data": {"executed_lines": [140, 141, 142], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_DataHandler.delete_data": {"executed_lines": [146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 158], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataHandler.__init__": {"executed_lines": [174, 175], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataHandler._get_link": {"executed_lines": [178, 179, 180], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataHandler._set_authoring": {"executed_lines": [183, 184], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataHandler.upload_data": {"executed_lines": [198, 199, 200, 201, 202, 203, 204, 206, 207, 208, 209], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataHandler.download_data": {"executed_lines": [222, 223, 224, 225], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataHandler.list_data": {"executed_lines": [235, 236, 237, 238], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataHandler.delete_data": {"executed_lines": [250, 251, 252, 253], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataHandler.set_progress_hook": {"executed_lines": [262], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BucketDataHandler.__init__": {"executed_lines": [278, 279], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BucketDataHandler._get_bucket": {"executed_lines": [282], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BucketDataHandler.upload_data": {"executed_lines": [294, 295, 296, 297], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BucketDataHandler.download_data": {"executed_lines": [309, 310, 311, 312], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BucketDataHandler.list_data": {"executed_lines": [321, 322, 323, 324], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BucketDataHandler.delete_data": {"executed_lines": [334, 335, 336, 337], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BucketDataHandler.set_progress_hook": {"executed_lines": [346], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 28, 29, 34, 35, 89, 90, 138, 139, 144, 145, 161, 162, 166, 177, 182, 186, 211, 227, 240, 255, 265, 266, 270, 281, 284, 299, 314, 326, 339], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"_DataHandler": {"executed_lines": [15, 16, 25, 26, 30, 31, 32, 36, 37, 38, 40, 42, 43, 44, 46, 47, 49, 50, 52, 53, 54, 55, 57, 66, 67, 68, 69, 71, 72, 74, 76, 77, 78, 79, 80, 82, 83, 84, 86, 87, 91, 92, 93, 94, 95, 96, 98, 99, 101, 102, 104, 105, 106, 107, 109, 110, 111, 112, 123, 125, 126, 127, 128, 129, 131, 132, 133, 135, 136, 140, 141, 142, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 158], "summary": {"covered_lines": 83, "num_statements": 83, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataHandler": {"executed_lines": [174, 175, 178, 179, 180, 183, 184, 198, 199, 200, 201, 202, 203, 204, 206, 207, 208, 209, 222, 223, 224, 225, 235, 236, 237, 238, 250, 251, 252, 253, 262], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BucketDataHandler": {"executed_lines": [278, 279, 282, 294, 295, 296, 297, 309, 310, 311, 312, 321, 322, 323, 324, 334, 335, 336, 337, 346], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 28, 29, 34, 35, 89, 90, 138, 139, 144, 145, 161, 162, 166, 177, 182, 186, 211, 227, 240, 255, 265, 266, 270, 281, 284, 299, 314, 326, 339], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\service\\detectors.py": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 10, 11, 14, 15, 16, 19, 20, 21, 24, 25, 26, 27, 28, 31, 32, 35, 36, 37, 38, 39, 42, 43, 44, 45, 46, 47, 51, 52, 55, 56, 59, 60, 65, 66], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 10, 11, 14, 15, 16, 19, 20, 21, 24, 25, 26, 27, 28, 31, 32, 35, 36, 37, 38, 39, 42, 43, 44, 45, 46, 47, 51, 52, 55, 56, 59, 60, 65, 66], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"DetectorExport": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Capabilities": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DetectorStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DetectorVersion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DetectorType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DetectorBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Detector": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DetectorResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DetectorMinimal": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DetectorsMinimalResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 10, 11, 14, 15, 16, 19, 20, 21, 24, 25, 26, 27, 28, 31, 32, 35, 36, 37, 38, 39, 42, 43, 44, 45, 46, 47, 51, 52, 55, 56, 59, 60, 65, 66], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\service\\error.py": {"executed_lines": [1, 2, 5, 6, 7, 8, 11, 12, 13, 14, 15, 18, 19], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 5, 6, 7, 8, 11, 12, 13, 14, 15, 18, 19], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"Error": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DetailedError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DetailedErrorResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 5, 6, 7, 8, 11, 12, 13, 14, 15, 18, 19], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\service\\files.py": {"executed_lines": [1, 2, 4, 7, 8, 11, 12, 13, 14, 15, 16, 19, 20], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 4, 7, 8, 11, 12, 13, 14, 15, 16, 19, 20], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"FileType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "File": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Files": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 7, 8, 11, 12, 13, 14, 15, 16, 19, 20], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\service\\job.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 11, 13, 14, 15, 16, 18, 20, 22, 24, 25, 27, 29, 31, 33, 34, 36, 41, 43, 44, 45, 46, 47, 49, 51, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 84, 85, 86, 87, 90, 91, 94, 95, 98, 99, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 115, 116, 117, 118, 134, 138, 144, 147, 148, 149, 150, 151, 155, 156, 157, 158, 159, 162, 163, 164, 166, 183, 184, 185, 186, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 247, 249, 251, 257, 260, 261, 264, 265, 268, 269, 270, 274, 280, 281, 282, 283, 284, 285, 286, 287, 290, 291, 292, 295, 296, 299, 300, 301, 302, 303, 307, 308, 309, 312, 313], "summary": {"covered_lines": 195, "num_statements": 195, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"_get_appropriate_service": {"executed_lines": [91, 94, 95, 98, 99, 101, 102], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "JobCreate.get_appropriate_service": {"executed_lines": [144], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Job.set_specification_validation_model": {"executed_lines": [186, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 247, 249], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Job.get_appropriate_service": {"executed_lines": [257], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Jobs.get_continuation_token": {"executed_lines": [280, 281, 282, 283, 284, 285, 286, 287], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 11, 13, 14, 15, 16, 18, 20, 22, 24, 25, 27, 29, 31, 33, 34, 36, 41, 43, 44, 45, 46, 47, 49, 51, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 84, 85, 86, 87, 90, 105, 106, 107, 108, 109, 110, 111, 112, 115, 116, 117, 118, 134, 138, 147, 148, 149, 150, 151, 155, 156, 157, 158, 159, 162, 163, 164, 166, 183, 184, 185, 251, 260, 261, 264, 265, 268, 269, 270, 274, 290, 291, 292, 295, 296, 299, 300, 301, 302, 303, 307, 308, 309, 312, 313], "summary": {"covered_lines": 120, "num_statements": 120, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"JobType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Service": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "JobState": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "JobCreate": {"executed_lines": [144], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Execution": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Job": {"executed_lines": [186, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 247, 249, 257], "summary": {"covered_lines": 59, "num_statements": 59, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "JobResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NextPageLink": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Jobs": {"executed_lines": [280, 281, 282, 283, 284, 285, 286, 287], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProgressResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Message": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Messages": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MessagesResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 11, 13, 14, 15, 16, 18, 20, 22, 24, 25, 27, 29, 31, 33, 34, 36, 41, 43, 44, 45, 46, 47, 49, 51, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 84, 85, 86, 87, 90, 91, 94, 95, 98, 99, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 115, 116, 117, 118, 134, 138, 147, 148, 149, 150, 151, 155, 156, 157, 158, 159, 162, 163, 164, 166, 183, 184, 185, 251, 260, 261, 264, 265, 268, 269, 270, 274, 290, 291, 292, 295, 296, 299, 300, 301, 302, 303, 307, 308, 309, 312, 313], "summary": {"covered_lines": 127, "num_statements": 127, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\service\\reality_data.py": {"executed_lines": [1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 61, 64, 67, 70, 71, 72, 75, 76, 77, 82, 83, 84, 87, 88, 90, 91, 93, 96, 99, 101, 102, 104, 106, 107, 108, 109, 112, 113, 114, 115, 118, 119, 121, 122, 124, 126, 128, 130, 131, 134, 135, 136, 137, 140, 141, 144, 145, 146, 149, 150, 153, 154, 157, 158, 159, 160, 163, 164, 165, 168, 169, 171, 177, 179, 181, 185, 186, 187, 190, 193, 197, 202, 203, 204, 206, 207, 209, 210, 212, 213, 214, 215, 220, 221, 223, 226, 227, 229, 230, 234, 235, 238, 239, 241, 244, 245, 246, 247, 248, 249, 250], "summary": {"covered_lines": 155, "num_statements": 155, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"RealityDataFilter.as_dict_for_service_call": {"executed_lines": [207, 209, 210, 212, 213, 214, 215, 220, 221, 223], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "get_continuation_token": {"executed_lines": [245, 246, 247, 248, 249, 250], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 61, 64, 67, 70, 71, 72, 75, 76, 77, 82, 83, 84, 87, 88, 90, 91, 93, 96, 99, 101, 102, 104, 106, 107, 108, 109, 112, 113, 114, 115, 118, 119, 121, 122, 124, 126, 128, 130, 131, 134, 135, 136, 137, 140, 141, 144, 145, 146, 149, 150, 153, 154, 157, 158, 159, 160, 163, 164, 165, 168, 169, 171, 177, 179, 181, 185, 186, 187, 190, 193, 197, 202, 203, 204, 206, 226, 227, 229, 230, 234, 235, 238, 239, 241, 244], "summary": {"covered_lines": 139, "num_statements": 139, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"Classification": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Type": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Acquisition": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Coordinate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Crs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Extent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityData": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ContainerType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Access": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "URL": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ContainerLinks": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ContainerDetails": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Prefer": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataFilter": {"executed_lines": [207, 209, 210, 212, 213, 214, 215, 220, 221, 223], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataMinimal": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NextPageLink": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDatas": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 61, 64, 67, 70, 71, 72, 75, 76, 77, 82, 83, 84, 87, 88, 90, 91, 93, 96, 99, 101, 102, 104, 106, 107, 108, 109, 112, 113, 114, 115, 118, 119, 121, 122, 124, 126, 128, 130, 131, 134, 135, 136, 137, 140, 141, 144, 145, 146, 149, 150, 153, 154, 157, 158, 159, 160, 163, 164, 165, 168, 169, 171, 177, 179, 181, 185, 186, 187, 190, 193, 197, 202, 203, 204, 206, 226, 227, 229, 230, 234, 235, 238, 239, 241, 244, 245, 246, 247, 248, 249, 250], "summary": {"covered_lines": 145, "num_statements": 145, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\service\\response.py": {"executed_lines": [1, 2, 5, 8, 9, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 27, 34, 36, 43], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"Response.__new__": {"executed_lines": [21, 22, 23, 24, 25], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Response.get_response_status_code": {"executed_lines": [34], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Response.is_error": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 5, 8, 9, 13, 14, 15, 16, 17, 18, 20, 27, 36], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"Response": {"executed_lines": [21, 22, 23, 24, 25, 34, 43], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 5, 8, 9, 13, 14, 15, 16, 17, 18, 20, 27, 36], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\service\\service.py": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 19, 20, 24, 37, 38, 39, 41, 42, 43, 45, 52, 53, 54, 55, 56, 57, 58, 60, 62, 63, 64, 65, 67, 68, 70, 71, 73, 74, 76, 77, 79, 80, 82, 83, 85, 86, 87, 88, 89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 102, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 115, 116, 117, 119, 120, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 133, 143, 144, 145, 146, 148, 150, 151, 152, 153, 154, 156, 159, 166, 167, 168, 169, 170, 172, 174, 177, 185, 186, 187, 188, 190, 192, 195, 203, 204, 205, 206, 208, 210, 213, 222, 223, 224, 225, 227, 229, 232, 241, 242, 243, 244, 246, 248, 251, 259, 264, 271, 275, 285, 286, 287, 288, 290, 291, 292, 294, 299, 306, 307, 308, 309, 310, 312, 314, 317, 325, 326, 327, 328, 330, 332, 336, 345, 346, 347, 348, 351, 361, 362, 363, 364, 366, 368, 372, 380, 383, 393, 394, 395, 397, 400, 410, 411, 412, 414, 417, 426, 427, 428, 429, 430, 431, 432, 433, 434, 436, 438, 447], "summary": {"covered_lines": 201, "num_statements": 201, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"RealityCaptureService.__init__": {"executed_lines": [37, 38, 39, 41, 42, 43, 45, 52, 53, 54, 55, 56, 57, 58, 60], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService._get_header": {"executed_lines": [63, 64, 65], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService._get_header_v1": {"executed_lines": [68], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService._get_header_v2": {"executed_lines": [71], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService._get_reality_management_rd_url": {"executed_lines": [74], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService._get_modeling_url": {"executed_lines": [77], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService._get_analysis_url": {"executed_lines": [80], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService._get_conversion_url": {"executed_lines": [83], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService._get_correct_url": {"executed_lines": [86, 87, 88, 89, 90, 91, 92], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService._get_ill_formed_message": {"executed_lines": [96, 97, 98, 99, 100], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService._execute_request": {"executed_lines": [104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 115, 116, 117, 119, 120, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.get_jobs": {"executed_lines": [143, 144, 145, 146, 148, 150, 151, 152, 153, 154, 156], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.submit_job": {"executed_lines": [166, 167, 168, 169, 170, 172, 174], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.get_job": {"executed_lines": [185, 186, 187, 188, 190, 192], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.get_job_messages": {"executed_lines": [203, 204, 205, 206, 208, 210], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.get_job_progress": {"executed_lines": [222, 223, 224, 225, 227, 229], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.cancel_job": {"executed_lines": [241, 242, 243, 244, 246, 248], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.get_bucket": {"executed_lines": [259], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.get_service_files": {"executed_lines": [271], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.get_detectors": {"executed_lines": [285, 286, 287, 288, 290, 291, 292, 294], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.get_detector": {"executed_lines": [306, 307, 308, 309, 310, 312, 314], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.create_reality_data": {"executed_lines": [325, 326, 327, 328, 330, 332], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.get_reality_data": {"executed_lines": [345, 346, 347, 348], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.update_reality_data": {"executed_lines": [361, 362, 363, 364, 366, 368], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.delete_reality_data": {"executed_lines": [380], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.get_reality_data_write_access": {"executed_lines": [393, 394, 395, 397], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.get_reality_data_read_access": {"executed_lines": [410, 411, 412, 414], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.list_reality_data": {"executed_lines": [426, 427, 428, 429, 430, 431, 432, 433, 434, 436], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.move_reality_data": {"executed_lines": [447], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 19, 20, 24, 62, 67, 70, 73, 76, 79, 82, 85, 94, 95, 102, 133, 159, 177, 195, 213, 232, 251, 264, 275, 299, 317, 336, 351, 372, 383, 400, 417, 438], "summary": {"covered_lines": 45, "num_statements": 45, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"RealityCaptureService": {"executed_lines": [37, 38, 39, 41, 42, 43, 45, 52, 53, 54, 55, 56, 57, 58, 60, 63, 64, 65, 68, 71, 74, 77, 80, 83, 86, 87, 88, 89, 90, 91, 92, 96, 97, 98, 99, 100, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 115, 116, 117, 119, 120, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 143, 144, 145, 146, 148, 150, 151, 152, 153, 154, 156, 166, 167, 168, 169, 170, 172, 174, 185, 186, 187, 188, 190, 192, 203, 204, 205, 206, 208, 210, 222, 223, 224, 225, 227, 229, 241, 242, 243, 244, 246, 248, 259, 271, 285, 286, 287, 288, 290, 291, 292, 294, 306, 307, 308, 309, 310, 312, 314, 325, 326, 327, 328, 330, 332, 345, 346, 347, 348, 361, 362, 363, 364, 366, 368, 380, 393, 394, 395, 397, 410, 411, 412, 414, 426, 427, 428, 429, 430, 431, 432, 433, 434, 436, 447], "summary": {"covered_lines": 156, "num_statements": 156, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 19, 20, 24, 62, 67, 70, 73, 76, 79, 82, 85, 94, 95, 102, 133, 159, 177, 195, 213, 232, 251, 264, 275, 299, 317, 336, 351, 372, 383, 400, 417, 438], "summary": {"covered_lines": 45, "num_statements": 45, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\__init__.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\calibration.py": {"executed_lines": [1, 2, 3, 6, 7, 8, 9, 13, 14, 15, 17, 21, 22, 23, 24, 27, 28, 29, 30, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 45, 48, 49, 50, 53, 54, 55, 58, 59, 60, 63, 64, 65, 68, 69, 70, 71, 74, 75, 76, 77, 78, 81, 82, 83, 86, 87, 88, 91, 92, 93, 96, 97, 98, 99, 100, 101, 104, 105, 106, 109, 110, 111, 112, 113, 116, 117, 118, 119, 122, 123, 124, 125, 126, 127, 130, 131, 132, 133, 134, 135, 136, 139, 140, 141, 142, 143, 144, 145, 146, 149, 150, 151, 152, 153, 154, 155, 158, 159, 160, 162, 163, 167, 168, 170, 171, 173, 175, 178, 180, 181, 183, 185, 189, 191, 192, 193, 195, 198, 201, 205, 208, 212, 213, 214, 215, 218, 219, 220, 221, 224, 225, 226], "summary": {"covered_lines": 142, "num_statements": 142, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 8, 9, 13, 14, 15, 17, 21, 22, 23, 24, 27, 28, 29, 30, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 45, 48, 49, 50, 53, 54, 55, 58, 59, 60, 63, 64, 65, 68, 69, 70, 71, 74, 75, 76, 77, 78, 81, 82, 83, 86, 87, 88, 91, 92, 93, 96, 97, 98, 99, 100, 101, 104, 105, 106, 109, 110, 111, 112, 113, 116, 117, 118, 119, 122, 123, 124, 125, 126, 127, 130, 131, 132, 133, 134, 135, 136, 139, 140, 141, 142, 143, 144, 145, 146, 149, 150, 151, 152, 153, 154, 155, 158, 159, 160, 162, 163, 167, 168, 170, 171, 173, 175, 178, 180, 181, 183, 185, 189, 191, 192, 193, 195, 198, 201, 205, 208, 212, 213, 214, 215, 218, 219, 220, 221, 224, 225, 226], "summary": {"covered_lines": 142, "num_statements": 142, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"CalibrationInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CalibrationOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CalibrationOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RigSynchro": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RotationPolicy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CenterPolicy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FocalPolicy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PrincipalPolicy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RadialPolicy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TangentialPolicy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FisheyeFocalPolicy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FisheyeDistortionPolicy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AspectRatioPolicy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SkewPolicy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TiepointsPolicy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PairSelection": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "KeypointsDensity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Tag": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ColorEqualization": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AdjustmentConstraints": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RigidRegistrationPosition": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RigidRegistrationRotation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RigidRegistrationScale": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CalibrationOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CalibrationSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CalibrationSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CalibrationCost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 8, 9, 13, 14, 15, 17, 21, 22, 23, 24, 27, 28, 29, 30, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 45, 48, 49, 50, 53, 54, 55, 58, 59, 60, 63, 64, 65, 68, 69, 70, 71, 74, 75, 76, 77, 78, 81, 82, 83, 86, 87, 88, 91, 92, 93, 96, 97, 98, 99, 100, 101, 104, 105, 106, 109, 110, 111, 112, 113, 116, 117, 118, 119, 122, 123, 124, 125, 126, 127, 130, 131, 132, 133, 134, 135, 136, 139, 140, 141, 142, 143, 144, 145, 146, 149, 150, 151, 152, 153, 154, 155, 158, 159, 160, 162, 163, 167, 168, 170, 171, 173, 175, 178, 180, 181, 183, 185, 189, 191, 192, 193, 195, 198, 201, 205, 208, 212, 213, 214, 215, 218, 219, 220, 221, 224, 225, 226], "summary": {"covered_lines": 142, "num_statements": 142, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\change_detection.py": {"executed_lines": [1, 2, 3, 6, 7, 8, 9, 13, 14, 16, 19, 22, 23, 26, 27, 28, 29, 30, 31, 34, 35, 37, 40, 43, 45, 50, 51, 52, 53, 56, 57, 58, 59], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 8, 9, 13, 14, 16, 19, 22, 23, 26, 27, 28, 29, 30, 31, 34, 35, 37, 40, 43, 45, 50, 51, 52, 53, 56, 57, 58, 59], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ChangeDetectionInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ChangeDetectionOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ChangeDetectionOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ChangeDetectionOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ChangeDetectionSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ChangeDetectionSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 8, 9, 13, 14, 16, 19, 22, 23, 26, 27, 28, 29, 30, 31, 34, 35, 37, 40, 43, 45, 50, 51, 52, 53, 56, 57, 58, 59], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\clearance.py": {"executed_lines": [1, 2, 3, 6, 7, 8, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 25, 28, 29, 30], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 8, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 25, 28, 29, 30], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ClearanceInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ClearanceOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ClearanceOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ClearanceSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ClearanceSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 8, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 25, 28, 29, 30], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\constraints.py": {"executed_lines": [1, 2, 3, 6, 7, 8, 11, 12, 14, 15, 16, 17, 19, 20, 21, 22, 25, 26, 27, 28, 31, 32, 35, 36, 37, 39, 41, 45, 46, 51, 52, 55, 56, 57, 60, 61, 62, 65, 66], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 8, 11, 12, 14, 15, 16, 17, 19, 20, 21, 22, 25, 26, 27, 28, 31, 32, 35, 36, 37, 39, 41, 45, 46, 51, 52, 55, 56, 57, 60, 61, 62, 65, 66], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ConstraintType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConstraintToAdd": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConstraintInfo": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConstraintsInfo": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConstraintsInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConstraintsOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConstraintsOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConstraintsSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConstraintsSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConstraintsCost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 8, 11, 12, 14, 15, 16, 17, 19, 20, 21, 22, 25, 26, 27, 28, 31, 32, 35, 36, 37, 39, 41, 45, 46, 51, 52, 55, 56, 57, 60, 61, 62, 65, 66], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\eval_o2d.py": {"executed_lines": [1, 2, 3, 6, 7, 8, 12, 13, 15, 20, 21, 22, 25, 26, 29, 30, 31, 32, 35, 36, 37, 38], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 8, 12, 13, 15, 20, 21, 22, 25, 26, 29, 30, 31, 32, 35, 36, 37, 38], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"EvalO2DInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalO2DOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalO2DOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalO2DOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalO2DSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalO2DSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 8, 12, 13, 15, 20, 21, 22, 25, 26, 29, 30, 31, 32, 35, 36, 37, 38], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\eval_o3d.py": {"executed_lines": [1, 2, 3, 6, 7, 8, 12, 13, 15, 20, 21, 22, 25, 26, 29, 30, 31, 32, 35, 36, 37, 38], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 8, 12, 13, 15, 20, 21, 22, 25, 26, 29, 30, 31, 32, 35, 36, 37, 38], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"EvalO3DInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalO3DOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalO3DOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalO3DOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalO3DSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalO3DSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 8, 12, 13, 15, 20, 21, 22, 25, 26, 29, 30, 31, 32, 35, 36, 37, 38], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\eval_s2d.py": {"executed_lines": [1, 2, 3, 6, 7, 9, 13, 14, 16, 19, 24, 25, 26, 27, 30, 31, 32, 35, 36, 37], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 9, 13, 14, 16, 19, 24, 25, 26, 27, 30, 31, 32, 35, 36, 37], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"EvalS2DInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalS2DOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalS2DOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalS2DSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalS2DSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 9, 13, 14, 16, 19, 24, 25, 26, 27, 30, 31, 32, 35, 36, 37], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\eval_s3d.py": {"executed_lines": [1, 2, 3, 6, 7, 9, 13, 14, 16, 19, 24, 25, 26, 27, 30, 31, 32, 35, 36, 37], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 9, 13, 14, 16, 19, 24, 25, 26, 27, 30, 31, 32, 35, 36, 37], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"EvalS3DInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalS3DOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalS3DOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalS3DSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalS3DSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 9, 13, 14, 16, 19, 24, 25, 26, 27, 30, 31, 32, 35, 36, 37], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\eval_sortho.py": {"executed_lines": [1, 2, 3, 6, 7, 9, 13, 14, 16, 19, 24, 25, 26, 27, 30, 31, 32, 35, 36, 37], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 9, 13, 14, 16, 19, 24, 25, 26, 27, 30, 31, 32, 35, 36, 37], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"EvalSOrthoInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalSOrthoOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalSOrthoOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalSOrthoSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalSOrthoSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 9, 13, 14, 16, 19, 24, 25, 26, 27, 30, 31, 32, 35, 36, 37], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\fill_image_properties.py": {"executed_lines": [1, 2, 3, 6, 7, 10, 13, 16, 19, 22, 23, 26, 29, 30, 33, 34, 37, 38, 41, 44, 50, 51, 54, 55, 56, 59, 60, 63, 66, 67, 70, 71, 73, 76, 77], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 10, 13, 16, 19, 22, 23, 26, 29, 30, 33, 34, 37, 38, 41, 44, 50, 51, 54, 55, 56, 59, 60, 63, 66, 67, 70, 71, 73, 76, 77], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"FillImagePropertiesInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FillImagePropertiesOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AltitudeReference": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FillImagePropertiesOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FillImagePropertiesSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FillImagePropertiesOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FillImagePropertiesSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FillImagePropertiesCost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 10, 13, 16, 19, 22, 23, 26, 29, 30, 33, 34, 37, 38, 41, 44, 50, 51, 54, 55, 56, 59, 60, 63, 66, 67, 70, 71, 73, 76, 77], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\gaussian_splats.py": {"executed_lines": [1, 2, 3, 6, 7, 8, 11, 15, 17, 21, 22, 23, 27, 28, 29, 32, 33, 34, 35, 36, 39, 40, 41, 42, 45, 46, 48, 50, 54, 58, 59, 60, 61, 64, 65, 66, 67], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 8, 11, 15, 17, 21, 22, 23, 27, 28, 29, 32, 33, 34, 35, 36, 39, 40, 41, 42, 45, 46, 48, 50, 54, 58, 59, 60, 61, 64, 65, 66, 67], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"GaussianSplatsInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GaussianSplatsOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GaussianSplatsOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GSFormat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GSQuality": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GaussianSplatsOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GaussianSplatsSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GaussianSplatsSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 8, 11, 15, 17, 21, 22, 23, 27, 28, 29, 32, 33, 34, 35, 36, 39, 40, 41, 42, 45, 46, 48, 50, 54, 58, 59, 60, 61, 64, 65, 66, 67], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\geometry.py": {"executed_lines": [1, 2, 5, 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, 20, 21, 22, 25, 26, 27, 30, 31, 32, 33, 34], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 5, 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, 20, 21, 22, 25, 26, 27, 30, 31, 32, 33, 34], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BoundingBox": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Point3d": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Coords2d": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Polygon2DWithHoles": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RegionOfInterest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 5, 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, 20, 21, 22, 25, 26, 27, 30, 31, 32, 33, 34], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\import_point_cloud.py": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 13, 14, 15, 19, 20, 21, 24, 25, 26, 29, 30, 31, 34, 35, 38, 39, 42, 43, 44, 45, 46, 47, 49, 50, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 13, 14, 15, 19, 20, 21, 24, 25, 26, 29, 30, 31, 34, 35, 38, 39, 42, 43, 44, 45, 46, 47, 49, 50, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ImportPCInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ImportPCOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ImportPCSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ImportPCOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ImportPCSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ImportPCCost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Point3dTime": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Scan": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PodMetadata": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 13, 14, 15, 19, 20, 21, 24, 25, 26, 29, 30, 31, 34, 35, 38, 39, 42, 43, 44, 45, 46, 47, 49, 50, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\mesh_sampling.py": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 23, 24, 25, 28, 29, 30, 33, 34, 35, 36], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 23, 24, 25, 28, 29, 30, 33, 34, 35, 36], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"MeshSamplingInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MeshSamplingFormat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MeshSamplingOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MeshSamplingSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MeshSamplingSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 23, 24, 25, 28, 29, 30, 33, 34, 35, 36], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\objects2d.py": {"executed_lines": [1, 2, 3, 6, 7, 8, 12, 16, 21, 22, 24, 26, 29, 32, 35, 41, 42, 43, 44, 45, 46, 47, 50, 51, 53, 55, 56, 60, 61, 62, 63, 66, 67, 68, 69], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 8, 12, 16, 21, 22, 24, 26, 29, 32, 35, 41, 42, 43, 44, 45, 46, 47, 50, 51, 53, 55, 56, 60, 61, 62, 63, 66, 67, 68, 69], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"Objects2DInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Objects2DOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Objects2DOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Objects2DOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Objects2DSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Objects2DSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 8, 12, 16, 21, 22, 24, 26, 29, 32, 35, 41, 42, 43, 44, 45, 46, 47, 50, 51, 53, 55, 56, 60, 61, 62, 63, 66, 67, 68, 69], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\point_cloud_conversion.py": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 23, 24, 27, 28, 29, 32, 33, 34, 35], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 23, 24, 27, 28, 29, 32, 33, 34, 35], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"PCConversionInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PCConversionFormat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PCConversionOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PointCloudConversionSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PointCloudConversionSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 23, 24, 27, 28, 29, 32, 33, 34, 35], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\point_cloud_optimization.py": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 23, 24, 27, 28, 29, 32, 33, 34, 35], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 23, 24, 27, 28, 29, 32, 33, 34, 35], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"PCOptimizationInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PCOptimizationFormat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PCOptimizationOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PCOptimizationSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PCOptimizationSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 23, 24, 27, 28, 29, 32, 33, 34, 35], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\production.py": {"executed_lines": [1, 2, 3, 4, 5, 8, 9, 10, 12, 15, 16, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 39, 40, 41, 42, 45, 46, 47, 50, 51, 52, 53, 54, 55, 56, 59, 60, 61, 64, 65, 67, 70, 73, 75, 77, 79, 80, 81, 84, 85, 87, 90, 93, 95, 97, 99, 100, 102, 104, 105, 106, 107, 109, 112, 113, 115, 118, 121, 124, 127, 130, 131, 133, 134, 138, 139, 141, 145, 149, 152, 155, 158, 161, 162, 163, 166, 167, 168, 171, 172, 173, 175, 176, 177, 178, 182, 183, 184, 186, 187, 188, 189, 193, 194, 195, 197, 198, 202, 203, 205, 208, 211, 214, 217, 220, 222, 224, 226, 227, 228, 229, 232, 233, 234, 237, 238, 239, 240, 243, 244, 245, 246, 249, 250, 251, 252, 253, 256, 257, 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 276, 277, 278, 282, 284, 285, 286, 287, 288, 290, 291, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 312, 314, 317, 318, 321, 322, 325, 326, 329, 330, 331, 334, 335, 336, 339, 340, 341, 342], "summary": {"covered_lines": 205, "num_statements": 205, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"ExportCreate.validate_options": {"executed_lines": [287, 288, 290, 291, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 312, 314], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 8, 9, 10, 12, 15, 16, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 39, 40, 41, 42, 45, 46, 47, 50, 51, 52, 53, 54, 55, 56, 59, 60, 61, 64, 65, 67, 70, 73, 75, 77, 79, 80, 81, 84, 85, 87, 90, 93, 95, 97, 99, 100, 102, 104, 105, 106, 107, 109, 112, 113, 115, 118, 121, 124, 127, 130, 131, 133, 134, 138, 139, 141, 145, 149, 152, 155, 158, 161, 162, 163, 166, 167, 168, 171, 172, 173, 175, 176, 177, 178, 182, 183, 184, 186, 187, 188, 189, 193, 194, 195, 197, 198, 202, 203, 205, 208, 211, 214, 217, 220, 222, 224, 226, 227, 228, 229, 232, 233, 234, 237, 238, 239, 240, 243, 244, 245, 246, 249, 250, 251, 252, 253, 256, 257, 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 276, 277, 278, 282, 284, 285, 286, 317, 318, 321, 322, 325, 326, 329, 330, 331, 334, 335, 336, 339, 340, 341, 342], "summary": {"covered_lines": 181, "num_statements": 181, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ProductionInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Format": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ColorSource": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThermalUnit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LODScope": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LODType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CesiumCompression": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Options3DTiles": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptionsOBJ": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Options3MX": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptionsI3S": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SamplingStrategy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LasCompression": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptionsLAS": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptionsPLY": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptionsOPC": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptionsOSGB": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProjectionMode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OrthoFormat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DSMFormat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OrthoColorSource": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OverviewType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptionsOrthoDSM": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ExportCreate": {"executed_lines": [287, 288, 290, 291, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 312, 314], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Export": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProductionOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProductionOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProductionSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProductionSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProductionCost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 8, 9, 10, 12, 15, 16, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 39, 40, 41, 42, 45, 46, 47, 50, 51, 52, 53, 54, 55, 56, 59, 60, 61, 64, 65, 67, 70, 73, 75, 77, 79, 80, 81, 84, 85, 87, 90, 93, 95, 97, 99, 100, 102, 104, 105, 106, 107, 109, 112, 113, 115, 118, 121, 124, 127, 130, 131, 133, 134, 138, 139, 141, 145, 149, 152, 155, 158, 161, 162, 163, 166, 167, 168, 171, 172, 173, 175, 176, 177, 178, 182, 183, 184, 186, 187, 188, 189, 193, 194, 195, 197, 198, 202, 203, 205, 208, 211, 214, 217, 220, 222, 224, 226, 227, 228, 229, 232, 233, 234, 237, 238, 239, 240, 243, 244, 245, 246, 249, 250, 251, 252, 253, 256, 257, 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 276, 277, 278, 282, 284, 285, 286, 317, 318, 321, 322, 325, 326, 329, 330, 331, 334, 335, 336, 339, 340, 341, 342], "summary": {"covered_lines": 181, "num_statements": 181, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\reconstruction.py": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 13, 16, 18, 19, 23, 24, 26, 29, 30, 31, 34, 35, 36, 37, 40, 41, 42, 43, 46, 47, 48], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 13, 16, 18, 19, 23, 24, 26, 29, 30, 31, 34, 35, 36, 37, 40, 41, 42, 43, 46, 47, 48], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ReconstructionInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ReconstructionOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ReconstructionOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ReconstructionSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ReconstructionSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ReconstructionCost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 13, 16, 18, 19, 23, 24, 26, 29, 30, 31, 34, 35, 36, 37, 40, 41, 42, 43, 46, 47, 48], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\segmentation2d.py": {"executed_lines": [1, 2, 3, 6, 7, 8, 13, 17, 22, 23, 25, 27, 29, 32, 35, 38, 41, 46, 47, 48, 49, 50, 51, 52, 53, 54, 57, 58, 60, 63, 67, 68, 69, 70, 73, 74, 75, 76], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 8, 13, 17, 22, 23, 25, 27, 29, 32, 35, 38, 41, 46, 47, 48, 49, 50, 51, 52, 53, 54, 57, 58, 60, 63, 67, 68, 69, 70, 73, 74, 75, 76], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"Segmentation2DInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Segmentation2DOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Segmentation2DOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Segmentation2DOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Segmentation2DSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Segmentation2DSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 8, 13, 17, 22, 23, 25, 27, 29, 32, 35, 38, 41, 46, 47, 48, 49, 50, 51, 52, 53, 54, 57, 58, 60, 63, 67, 68, 69, 70, 73, 74, 75, 76], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\segmentation3d.py": {"executed_lines": [1, 2, 3, 6, 7, 11, 17, 22, 26, 27, 30, 33, 37, 41, 45, 49, 52, 55, 58, 61, 64, 67, 70, 73, 76, 79, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 104, 105, 106, 108, 110, 113, 117, 118, 119, 120, 123, 124, 125, 126], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 11, 17, 22, 26, 27, 30, 33, 37, 41, 45, 49, 52, 55, 58, 61, 64, 67, 70, 73, 76, 79, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 104, 105, 106, 108, 110, 113, 117, 118, 119, 120, 123, 124, 125, 126], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"Segmentation3DInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Segmentation3DOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Segmentation3DOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Segmentation3DOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Segmentation3DSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Segmentation3DSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 11, 17, 22, 26, 27, 30, 33, 37, 41, 45, 49, 52, 55, 58, 61, 64, 67, 70, 73, 76, 79, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 104, 105, 106, 108, 110, 113, 117, 118, 119, 120, 123, 124, 125, 126], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\segmentation_orthophoto.py": {"executed_lines": [1, 2, 3, 6, 7, 9, 16, 17, 20, 22, 25, 28, 31, 34, 37, 42, 43, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 58, 59, 60], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 9, 16, 17, 20, 22, 25, 28, 31, 34, 37, 42, 43, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 58, 59, 60], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"SegmentationOrthophotoInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SegmentationOrthophotoOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SegmentationOrthophotoOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SegmentationOrthophotoSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SegmentationOrthophotoSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 9, 16, 17, 20, 22, 25, 28, 31, 34, 37, 42, 43, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 58, 59, 60], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\tile_map_optimization.py": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 14, 15, 16, 19, 20, 22, 23, 24, 25, 27, 28, 30, 34, 35, 36, 39, 40, 41, 42], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 14, 15, 16, 19, 20, 22, 23, 24, 25, 27, 28, 30, 34, 35, 36, 39, 40, 41, 42], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"TileMapOptimizationInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TileMapOptimizationFormat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TileMapImageFormat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TileMapOptimizationOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TileMapOptimizationSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TileMapOptimizationSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 14, 15, 16, 19, 20, 22, 23, 24, 25, 27, 28, 30, 34, 35, 36, 39, 40, 41, 42], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\tiling.py": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 13, 14, 18, 19, 20, 23, 24, 25, 26, 27, 30, 31, 32, 33, 34, 37, 38, 39, 40, 43, 44, 45, 46, 49, 50, 51, 54, 55, 56, 57, 60, 61, 62, 63, 64, 65, 68, 69, 70, 73, 74, 75, 76, 77, 80, 81, 82, 83, 86, 87, 90, 91, 92, 93, 95, 96, 98, 100, 102, 103, 104, 106, 108, 110, 113, 115, 116, 117, 119, 123, 124, 127, 128, 131, 132, 135, 136, 137, 138, 141, 142, 143, 144, 147, 148, 149, 152, 153, 154, 155, 157, 160, 161, 162, 163, 164], "summary": {"covered_lines": 103, "num_statements": 103, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 13, 14, 18, 19, 20, 23, 24, 25, 26, 27, 30, 31, 32, 33, 34, 37, 38, 39, 40, 43, 44, 45, 46, 49, 50, 51, 54, 55, 56, 57, 60, 61, 62, 63, 64, 65, 68, 69, 70, 73, 74, 75, 76, 77, 80, 81, 82, 83, 86, 87, 90, 91, 92, 93, 95, 96, 98, 100, 102, 103, 104, 106, 108, 110, 113, 115, 116, 117, 119, 123, 124, 127, 128, 131, 132, 135, 136, 137, 138, 141, 142, 143, 144, 147, 148, 149, 152, 153, 154, 155, 157, 160, 161, 162, 163, 164], "summary": {"covered_lines": 103, "num_statements": 103, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"TilingInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ModelingReferenceType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TilingMode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GeometricPrecision": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TilingPairSelection": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PhotoUsedForGeometry": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "HoleFilling": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Simplification": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ColorCorrection": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UntexturedRepresentation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PointCloudColorSource": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TextureSource": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TilingOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ModelingReference": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TilingOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TilingOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TilingSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TilingSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TilingCost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LayoutTile": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Layout": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 13, 14, 18, 19, 20, 23, 24, 25, 26, 27, 30, 31, 32, 33, 34, 37, 38, 39, 40, 43, 44, 45, 46, 49, 50, 51, 54, 55, 56, 57, 60, 61, 62, 63, 64, 65, 68, 69, 70, 73, 74, 75, 76, 77, 80, 81, 82, 83, 86, 87, 90, 91, 92, 93, 95, 96, 98, 100, 102, 103, 104, 106, 108, 110, 113, 115, 116, 117, 119, 123, 124, 127, 128, 131, 132, 135, 136, 137, 138, 141, 142, 143, 144, 147, 148, 149, 152, 153, 154, 155, 157, 160, 161, 162, 163, 164], "summary": {"covered_lines": 103, "num_statements": 103, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\touchup.py": {"executed_lines": [1, 2, 3, 6, 7, 8, 12, 13, 14, 17, 18, 19, 22, 23, 26, 27, 30, 31, 32, 33, 36, 37, 38, 39, 42, 43, 46, 47, 48, 51, 52, 55, 56, 61, 62, 63, 66, 67, 68, 71, 72, 75, 76, 77, 80, 81], "summary": {"covered_lines": 46, "num_statements": 46, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 8, 12, 13, 14, 17, 18, 19, 22, 23, 26, 27, 30, 31, 32, 33, 36, 37, 38, 39, 42, 43, 46, 47, 48, 51, 52, 55, 56, 61, 62, 63, 66, 67, 68, 71, 72, 75, 76, 77, 80, 81], "summary": {"covered_lines": 46, "num_statements": 46, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"TouchUpExportInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchLevel": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchUpExportOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchUpExportOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchUpExportOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchUpExportSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchUpExportSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchUpExportCost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchUpImportInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchUpImportOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchUpImportOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchUpImportSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchUpImportSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchUpImportCost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ImportTileInfo": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ImportInfo": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 8, 12, 13, 14, 17, 18, 19, 22, 23, 26, 27, 30, 31, 32, 33, 36, 37, 38, 39, 42, 43, 46, 47, 48, 51, 52, 55, 56, 61, 62, 63, 66, 67, 68, 71, 72, 75, 76, 77, 80, 81], "summary": {"covered_lines": 46, "num_statements": 46, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\vector_optimization.py": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 12, 15, 16, 18, 19, 20, 24, 25, 26, 29, 30, 31, 32], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 12, 15, 16, 18, 19, 20, 24, 25, 26, 29, 30, 31, 32], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"VectorOptimizationInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "VectorOptimizationFormat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "VectorOptimizationOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "VectorOptimizationSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "VectorOptimizationSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 12, 15, 16, 18, 19, 20, 24, 25, 26, 29, 30, 31, 32], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\water_constraints.py": {"executed_lines": [1, 2, 3, 6, 7, 8, 9, 13, 14, 18, 19, 22, 23, 27, 28, 29, 30, 33, 34, 35, 36, 39, 40], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 8, 9, 13, 14, 18, 19, 22, 23, 27, 28, 29, 30, 33, 34, 35, 36, 39, 40], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"WaterConstraintsInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "WaterConstraintsOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "WaterConstraintsOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "WaterConstraintsOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "WaterConstraintsSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "WaterConstraintsSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "WaterConstraintsCost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 8, 9, 13, 14, 18, 19, 22, 23, 27, 28, 29, 30, 33, 34, 35, 36, 39, 40], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_conversion_model.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_data_handler.py": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 12, 13, 14, 15, 18, 19, 20, 23, 24, 27, 28, 29, 30, 31, 32, 35, 36, 37, 38, 39, 40, 42, 43, 44, 46, 47, 48, 49, 55, 56, 57, 58, 60, 61, 62, 63, 65, 66, 67, 68, 72, 73, 74, 75, 77, 78, 79, 80, 85, 86, 87, 88, 90, 91, 92, 93, 94, 95, 98, 103, 104, 105, 106, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 121, 125, 126, 127, 128, 129, 131, 132, 133, 134, 136, 137, 138, 139, 140, 141, 144, 148, 149, 150, 151, 153, 154, 155, 156, 158, 159, 160, 161, 162, 163, 166, 170, 171, 172, 173, 175, 176, 177, 178, 180, 181, 182, 183, 184, 185, 188, 191, 197, 198, 199, 200, 202, 203, 204, 205, 210, 211, 212, 213, 214, 216, 217, 218, 219, 220, 221, 223, 224, 225, 226, 230, 231, 232, 233, 234, 235, 237, 238, 239, 240, 241, 242, 244, 245, 246, 247, 251, 252, 253, 254, 255, 257, 258, 259, 260, 261, 262, 263, 264, 266, 267, 268, 269, 273, 274, 275, 276, 277, 279, 280, 281, 282, 288, 289, 290, 291, 293, 294, 295, 296, 298, 299, 300, 301, 305, 306, 307, 309, 310, 311, 312, 314, 315, 316, 317, 321, 322, 323, 326, 327, 328, 329, 330, 331, 333, 334, 335, 337, 338, 339, 340, 346, 347, 348, 349, 351, 352, 353, 354, 356, 357, 358, 359, 363, 364, 365, 366, 368, 369, 370, 371, 376, 377, 378, 379, 381, 382, 383, 384, 386, 387, 388, 389, 393, 394, 395, 396, 397, 399, 400, 401, 402, 404, 405, 406, 407, 411, 412, 413, 414, 416, 417, 418, 419, 421, 422, 423, 424, 428, 429, 430, 431, 433, 434, 435, 436, 441, 442, 443, 444, 445, 447, 448, 449, 450, 451, 452, 454, 455, 456, 457, 461, 462, 463, 464, 465, 466, 468, 469, 470, 471, 472, 473, 475, 476, 477, 478, 482, 483, 484, 485, 486, 488, 489, 490, 491, 492, 493, 494, 495, 497, 498, 499, 500, 504, 505, 506, 507, 508, 510, 511, 512, 513, 519, 520, 521, 522, 524, 525, 526, 527, 529, 530, 531, 532, 536, 537, 538, 540, 541, 542, 543, 545, 546, 547, 548, 552, 553, 554], "summary": {"covered_lines": 381, "num_statements": 381, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"FakeTokenFactory.get_token": {"executed_lines": [15], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "mock_blob": {"executed_lines": [19, 20], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "mock_blob_except": {"executed_lines": [24], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "mock_container_client_default": {"executed_lines": [29, 30, 31, 32], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.setup_method": {"executed_lines": [37, 38, 39, 40], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_set_hook": {"executed_lines": [43, 44], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_list_data_link_error": {"executed_lines": [48, 49, 55, 56, 57, 58], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_list_data_ok": {"executed_lines": [62, 63, 65, 66, 67, 68, 72, 73, 74, 75], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_upload_data_link_error": {"executed_lines": [79, 80, 85, 86, 87, 88], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_upload_data_authoring_error": {"executed_lines": [92, 93, 94, 95, 98, 103, 104, 105, 106], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_upload_data_interrupted": {"executed_lines": [110, 111, 113, 114, 115, 116, 117, 118, 121, 125, 126, 127, 128, 129], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_upload_data_exception": {"executed_lines": [133, 134, 136, 137, 138, 139, 140, 141, 144, 148, 149, 150, 151], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_upload_data_ok": {"executed_lines": [155, 156, 158, 159, 160, 161, 162, 163, 166, 170, 171, 172, 173], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_upload_data_authoring_error_end": {"executed_lines": [177, 178, 180, 181, 182, 183, 184, 185, 188, 191, 197, 198, 199, 200], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_download_data_link_error": {"executed_lines": [204, 205, 210, 211, 212, 213, 214], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_download_data_interrupted": {"executed_lines": [218, 219, 220, 221, 223, 224, 225, 226, 230, 231, 232, 233, 234, 235], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_download_data_exception": {"executed_lines": [239, 240, 241, 242, 244, 245, 246, 247, 251, 252, 253, 254, 255], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_download_data_ok": {"executed_lines": [259, 260, 261, 262, 263, 264, 266, 267, 268, 269, 273, 274, 275, 276, 277], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_delete_data_link_error": {"executed_lines": [281, 282, 288, 289, 290, 291], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_delete_bucket_fail": {"executed_lines": [295, 296, 298, 299, 300, 301, 305, 306, 307], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_delete_bucket_ok": {"executed_lines": [311, 312, 314, 315, 316, 317, 321, 322, 323], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.setup_method": {"executed_lines": [328, 329, 330, 331], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_set_hook": {"executed_lines": [334, 335], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_list_bucket_link_error": {"executed_lines": [339, 340, 346, 347, 348, 349], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_list_bucket_ok": {"executed_lines": [353, 354, 356, 357, 358, 359, 363, 364, 365, 366], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_upload_bucket_link_error": {"executed_lines": [370, 371, 376, 377, 378, 379], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_upload_bucket_interrupted": {"executed_lines": [383, 384, 386, 387, 388, 389, 393, 394, 395, 396, 397], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_upload_bucket_exception": {"executed_lines": [401, 402, 404, 405, 406, 407, 411, 412, 413, 414], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_upload_bucket_ok": {"executed_lines": [418, 419, 421, 422, 423, 424, 428, 429, 430, 431], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_download_bucket_link_error": {"executed_lines": [435, 436, 441, 442, 443, 444, 445], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_download_bucket_interrupted": {"executed_lines": [449, 450, 451, 452, 454, 455, 456, 457, 461, 462, 463, 464, 465, 466], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_download_bucket_exception": {"executed_lines": [470, 471, 472, 473, 475, 476, 477, 478, 482, 483, 484, 485, 486], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_download_bucket_ok": {"executed_lines": [490, 491, 492, 493, 494, 495, 497, 498, 499, 500, 504, 505, 506, 507, 508], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_delete_bucket_link_error": {"executed_lines": [512, 513, 519, 520, 521, 522], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_delete_bucket_fail": {"executed_lines": [526, 527, 529, 530, 531, 532, 536, 537, 538], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_delete_bucket_ok": {"executed_lines": [542, 543, 545, 546, 547, 548, 552, 553, 554], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 12, 13, 14, 18, 23, 27, 28, 35, 36, 42, 46, 47, 60, 61, 77, 78, 90, 91, 108, 109, 131, 132, 153, 154, 175, 176, 202, 203, 216, 217, 237, 238, 257, 258, 279, 280, 293, 294, 309, 310, 326, 327, 333, 337, 338, 351, 352, 368, 369, 381, 382, 399, 400, 416, 417, 433, 434, 447, 448, 468, 469, 488, 489, 510, 511, 524, 525, 540, 541], "summary": {"covered_lines": 77, "num_statements": 77, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"FakeTokenFactory": {"executed_lines": [15], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler": {"executed_lines": [37, 38, 39, 40, 43, 44, 48, 49, 55, 56, 57, 58, 62, 63, 65, 66, 67, 68, 72, 73, 74, 75, 79, 80, 85, 86, 87, 88, 92, 93, 94, 95, 98, 103, 104, 105, 106, 110, 111, 113, 114, 115, 116, 117, 118, 121, 125, 126, 127, 128, 129, 133, 134, 136, 137, 138, 139, 140, 141, 144, 148, 149, 150, 151, 155, 156, 158, 159, 160, 161, 162, 163, 166, 170, 171, 172, 173, 177, 178, 180, 181, 182, 183, 184, 185, 188, 191, 197, 198, 199, 200, 204, 205, 210, 211, 212, 213, 214, 218, 219, 220, 221, 223, 224, 225, 226, 230, 231, 232, 233, 234, 235, 239, 240, 241, 242, 244, 245, 246, 247, 251, 252, 253, 254, 255, 259, 260, 261, 262, 263, 264, 266, 267, 268, 269, 273, 274, 275, 276, 277, 281, 282, 288, 289, 290, 291, 295, 296, 298, 299, 300, 301, 305, 306, 307, 311, 312, 314, 315, 316, 317, 321, 322, 323], "summary": {"covered_lines": 164, "num_statements": 164, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler": {"executed_lines": [328, 329, 330, 331, 334, 335, 339, 340, 346, 347, 348, 349, 353, 354, 356, 357, 358, 359, 363, 364, 365, 366, 370, 371, 376, 377, 378, 379, 383, 384, 386, 387, 388, 389, 393, 394, 395, 396, 397, 401, 402, 404, 405, 406, 407, 411, 412, 413, 414, 418, 419, 421, 422, 423, 424, 428, 429, 430, 431, 435, 436, 441, 442, 443, 444, 445, 449, 450, 451, 452, 454, 455, 456, 457, 461, 462, 463, 464, 465, 466, 470, 471, 472, 473, 475, 476, 477, 478, 482, 483, 484, 485, 486, 490, 491, 492, 493, 494, 495, 497, 498, 499, 500, 504, 505, 506, 507, 508, 512, 513, 519, 520, 521, 522, 526, 527, 529, 530, 531, 532, 536, 537, 538, 542, 543, 545, 546, 547, 548, 552, 553, 554], "summary": {"covered_lines": 132, "num_statements": 132, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 12, 13, 14, 18, 19, 20, 23, 24, 27, 28, 29, 30, 31, 32, 35, 36, 42, 46, 47, 60, 61, 77, 78, 90, 91, 108, 109, 131, 132, 153, 154, 175, 176, 202, 203, 216, 217, 237, 238, 257, 258, 279, 280, 293, 294, 309, 310, 326, 327, 333, 337, 338, 351, 352, 368, 369, 381, 382, 399, 400, 416, 417, 433, 434, 447, 448, 468, 469, 488, 489, 510, 511, 524, 525, 540, 541], "summary": {"covered_lines": 84, "num_statements": 84, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_detectors.py": {"executed_lines": [1, 2, 3, 4, 5, 7, 10, 11, 12, 13, 16, 18, 19, 20, 21, 22, 24, 25, 27, 28, 29, 32, 33, 34, 36, 37, 38, 42, 43, 44, 46, 47, 48, 49, 50, 52, 53, 54, 56, 57, 58, 59, 60, 61, 63, 64, 65, 68, 69, 70, 72, 73, 74, 78, 79, 80, 82, 83, 84, 85, 86, 88, 89, 90, 92, 93, 94, 95, 96, 102, 103, 104, 105], "summary": {"covered_lines": 73, "num_statements": 73, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"FakeTokenFactory.get_token": {"executed_lines": [13], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceDetector.setup_method": {"executed_lines": [19, 20, 21, 22], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceDetector.teardown_method": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceDetector.test_get_detector_ill_formed": {"executed_lines": [29, 32, 33, 34], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceDetector.test_get_detector_401": {"executed_lines": [38, 42, 43, 44], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceDetector.test_get_detector_200": {"executed_lines": [48, 49, 50, 52, 53, 54], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceDetector.test_get_detector_unsupported_service": {"executed_lines": [57, 58, 59, 60, 61], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceDetector.test_get_detectors_ill_formed": {"executed_lines": [65, 68, 69, 70], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceDetector.test_get_detectors_401": {"executed_lines": [74, 78, 79, 80], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceDetector.test_get_detectors_200": {"executed_lines": [84, 85, 86, 88, 89, 90], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceDetector.test_get_detectors_with_filter_200": {"executed_lines": [94, 95, 96, 102, 103, 104, 105], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 7, 10, 11, 12, 16, 18, 24, 27, 28, 36, 37, 46, 47, 56, 63, 64, 72, 73, 82, 83, 92, 93], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"FakeTokenFactory": {"executed_lines": [13], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceDetector": {"executed_lines": [19, 20, 21, 22, 25, 29, 32, 33, 34, 38, 42, 43, 44, 48, 49, 50, 52, 53, 54, 57, 58, 59, 60, 61, 65, 68, 69, 70, 74, 78, 79, 80, 84, 85, 86, 88, 89, 90, 94, 95, 96, 102, 103, 104, 105], "summary": {"covered_lines": 45, "num_statements": 45, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 7, 10, 11, 12, 16, 18, 24, 27, 28, 36, 37, 46, 47, 56, 63, 64, 72, 73, 82, 83, 92, 93], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_doc_examples.py": {"executed_lines": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 15, 16, 17, 18, 20, 21, 22, 24, 25, 27], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"TestDocExamples.setup_method": {"executed_lines": [17, 18], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestDocExamples.test_example_runs": {"executed_lines": [22], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestDocExamples.test_example_runs_alternate": {"executed_lines": [27], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 15, 16, 20, 21, 24, 25], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"TestDocExamples": {"executed_lines": [17, 18, 22, 27], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 15, 16, 20, 21, 24, 25], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_job.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 11, 12, 13, 14, 15, 16, 18, 19, 20, 22, 23, 24, 26, 28, 29, 30, 31, 32, 35, 36, 37, 38, 39, 41, 42, 43, 44], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"TestJob.test_appropriate_service_job": {"executed_lines": [13, 14, 15, 16, 18, 19, 20, 22, 23, 24, 26], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJob.test_appropriate_service_job_create": {"executed_lines": [29, 30, 31, 32, 35, 36, 37, 38, 39], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJob.test_get_appropriate_service_unsupported_job_type": {"executed_lines": [42, 43, 44], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 11, 12, 28, 41], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"TestJob": {"executed_lines": [13, 14, 15, 16, 18, 19, 20, 22, 23, 24, 26, 29, 30, 31, 32, 35, 36, 37, 38, 39, 42, 43, 44], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 11, 12, 28, 41], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_job_validator.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 33, 34, 45, 46, 47, 48, 56, 57, 59, 60, 61, 62, 70, 71, 73, 74, 75, 76, 86, 87, 89, 90, 91, 92, 101, 102, 104, 105, 106, 107, 116, 117, 119, 120, 121, 122, 131, 132, 134, 135, 136, 137, 146, 147, 149, 150, 151, 152, 161, 162, 164, 165, 166, 167, 176, 177, 179, 180, 181, 182, 190, 191, 193, 194, 195, 196, 205, 206, 208, 209, 210, 211, 219, 220, 222, 223, 224, 225, 234, 235, 237, 238, 239, 240, 248, 249, 251, 252, 253, 254, 262, 263, 265, 266, 267, 268, 276, 277, 279, 280, 281, 282, 291, 292, 294, 295, 296, 297, 307, 308, 310, 311, 312, 313, 322, 323, 325, 326, 327, 328, 336, 337, 339, 340, 341, 342, 351, 352, 354, 355, 356, 357, 366, 367, 369, 370, 371, 372, 373, 374, 375, 378, 380, 381, 382, 383, 389, 390, 392, 393, 394, 395, 401, 402, 404, 405, 406, 407, 413, 414, 416, 417, 418, 419, 425, 426, 428, 429, 430, 431, 437, 438], "summary": {"covered_lines": 202, "num_statements": 202, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"TestJobValidator.test_validation_fip": {"executed_lines": [46, 47, 48, 56, 57], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_calibration": {"executed_lines": [60, 61, 62, 70, 71], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_change_detection": {"executed_lines": [74, 75, 76, 86, 87], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_constraints": {"executed_lines": [90, 91, 92, 101, 102], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_eval_o2d": {"executed_lines": [105, 106, 107, 116, 117], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_eval_o3d": {"executed_lines": [120, 121, 122, 131, 132], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_eval_s2d": {"executed_lines": [135, 136, 137, 146, 147], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_eval_s3d": {"executed_lines": [150, 151, 152, 161, 162], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_eval_sortho": {"executed_lines": [165, 166, 167, 176, 177], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_gs": {"executed_lines": [180, 181, 182, 190, 191], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_ipc": {"executed_lines": [194, 195, 196, 205, 206], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_o2d": {"executed_lines": [209, 210, 211, 219, 220], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_prod": {"executed_lines": [223, 224, 225, 234, 235], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_recons": {"executed_lines": [238, 239, 240, 248, 249], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_s2d": {"executed_lines": [252, 253, 254, 262, 263], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_s3d": {"executed_lines": [266, 267, 268, 276, 277], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_sortho": {"executed_lines": [280, 281, 282, 291, 292], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_tiling": {"executed_lines": [295, 296, 297, 307, 308], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_tui": {"executed_lines": [311, 312, 313, 322, 323], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_tue": {"executed_lines": [326, 327, 328, 336, 337], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_wc": {"executed_lines": [340, 341, 342, 351, 352], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_clearance": {"executed_lines": [355, 356, 357, 366, 367], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_unsupported_job_type_raises": {"executed_lines": [370, 371, 372, 373, 374, 375, 378], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_pc_conv": {"executed_lines": [381, 382, 383, 389, 390], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_pc_optim": {"executed_lines": [393, 394, 395, 401, 402], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_mesh_sampling": {"executed_lines": [405, 406, 407, 413, 414], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_tm_optim": {"executed_lines": [417, 418, 419, 425, 426], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_vector_optim": {"executed_lines": [429, 430, 431, 437, 438], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 33, 34, 45, 59, 73, 89, 104, 119, 134, 149, 164, 179, 193, 208, 222, 237, 251, 265, 279, 294, 310, 325, 339, 354, 369, 380, 392, 404, 416, 428], "summary": {"covered_lines": 60, "num_statements": 60, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"TestJobValidator": {"executed_lines": [46, 47, 48, 56, 57, 60, 61, 62, 70, 71, 74, 75, 76, 86, 87, 90, 91, 92, 101, 102, 105, 106, 107, 116, 117, 120, 121, 122, 131, 132, 135, 136, 137, 146, 147, 150, 151, 152, 161, 162, 165, 166, 167, 176, 177, 180, 181, 182, 190, 191, 194, 195, 196, 205, 206, 209, 210, 211, 219, 220, 223, 224, 225, 234, 235, 238, 239, 240, 248, 249, 252, 253, 254, 262, 263, 266, 267, 268, 276, 277, 280, 281, 282, 291, 292, 295, 296, 297, 307, 308, 311, 312, 313, 322, 323, 326, 327, 328, 336, 337, 340, 341, 342, 351, 352, 355, 356, 357, 366, 367, 370, 371, 372, 373, 374, 375, 378, 381, 382, 383, 389, 390, 393, 394, 395, 401, 402, 405, 406, 407, 413, 414, 417, 418, 419, 425, 426, 429, 430, 431, 437, 438], "summary": {"covered_lines": 142, "num_statements": 142, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 33, 34, 45, 59, 73, 89, 104, 119, 134, 149, 164, 179, 193, 208, 222, 237, 251, 265, 279, 294, 310, 325, 339, 354, 369, 380, 392, 404, 416, 428], "summary": {"covered_lines": 60, "num_statements": 60, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_service_base.py": {"executed_lines": [1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 32], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"TestServiceBase.test_service_base": {"executed_lines": [10, 11, 12, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBase.test_service_base.FakeTokenFactory.get_token": {"executed_lines": [13], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBase.test_get_correct_url_unsupported_service_raises": {"executed_lines": [29, 30, 31, 32], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 8, 9, 28], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"TestServiceBase": {"executed_lines": [10, 11, 12, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 29, 30, 31, 32], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBase.test_service_base.FakeTokenFactory": {"executed_lines": [13], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 8, 9, 28], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_service_bucket.py": {"executed_lines": [1, 2, 3, 4, 6, 9, 10, 11, 12, 15, 17, 18, 19, 20, 21, 22, 24, 25, 27, 28, 29, 32, 33, 34, 36, 37, 38, 42, 43, 44, 46, 47, 48, 49, 50, 52, 53, 54], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"FakeTokenFactory.get_token": {"executed_lines": [12], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBucket.setup_method": {"executed_lines": [18, 19, 20, 21, 22], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBucket.teardown_method": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBucket.test_get_bucket_ill_formed": {"executed_lines": [29, 32, 33, 34], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBucket.test_get_bucket_401": {"executed_lines": [38, 42, 43, 44], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBucket.test_get_bucket_200": {"executed_lines": [48, 49, 50, 52, 53, 54], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 6, 9, 10, 11, 15, 17, 24, 27, 28, 36, 37, 46, 47], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"FakeTokenFactory": {"executed_lines": [12], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBucket": {"executed_lines": [18, 19, 20, 21, 22, 25, 29, 32, 33, 34, 38, 42, 43, 44, 48, 49, 50, 52, 53, 54], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 6, 9, 10, 11, 15, 17, 24, 27, 28, 36, 37, 46, 47], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_service_files.py": {"executed_lines": [1, 2, 3, 5, 8, 9, 10, 11, 14, 16, 17, 18, 19, 20, 22, 23, 25, 26, 27, 30, 31, 32, 34, 35, 36, 40, 41, 42, 44, 45, 46, 47, 48, 50, 51, 52, 53, 54, 55, 56], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"FakeTokenFactory.get_token": {"executed_lines": [11], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBucket.setup_method": {"executed_lines": [17, 18, 19, 20], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBucket.teardown_method": {"executed_lines": [23], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBucket.test_get_files_ill_formed": {"executed_lines": [27, 30, 31, 32], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBucket.test_get_files_401": {"executed_lines": [36, 40, 41, 42], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBucket.test_get_files_200": {"executed_lines": [46, 47, 48, 50, 51, 52, 53, 54, 55, 56], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 8, 9, 10, 14, 16, 22, 25, 26, 34, 35, 44, 45], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"FakeTokenFactory": {"executed_lines": [11], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBucket": {"executed_lines": [17, 18, 19, 20, 23, 27, 30, 31, 32, 36, 40, 41, 42, 46, 47, 48, 50, 51, 52, 53, 54, 55, 56], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 8, 9, 10, 14, 16, 22, 25, 26, 34, 35, 44, 45], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_service_job_crud.py": {"executed_lines": [1, 2, 3, 5, 6, 7, 10, 11, 12, 13, 16, 18, 19, 20, 21, 22, 24, 25, 27, 28, 29, 31, 32, 33, 34, 35, 38, 39, 40, 42, 43, 44, 46, 47, 48, 49, 50, 54, 55, 56, 58, 59, 60, 62, 63, 64, 65, 67, 68, 70, 73, 74, 75, 77, 78, 79, 82, 83, 84, 86, 87, 88, 89, 91, 94, 95, 96, 98, 99, 100, 103, 104, 105, 107, 108, 109, 110, 112, 115, 116, 117, 119, 120, 121, 124, 125, 126, 128, 129, 131, 132, 133, 136, 137, 138, 140, 141, 142, 145, 146, 147, 149, 150, 151, 155, 156, 157, 159, 160, 161, 162, 164, 167, 168, 169], "summary": {"covered_lines": 115, "num_statements": 115, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"FakeTokenFactory.get_token": {"executed_lines": [13], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.setup_method": {"executed_lines": [19, 20, 21, 22], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.teardown_method": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.test_submit_job_ill_formed": {"executed_lines": [29, 31, 32, 33, 34, 35, 38, 39, 40], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.test_submit_job_401": {"executed_lines": [44, 46, 47, 48, 49, 50, 54, 55, 56], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.test_submit_job_201": {"executed_lines": [60, 62, 63, 64, 65, 67, 68, 70, 73, 74, 75], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.test_get_job_ill_formed": {"executed_lines": [79, 82, 83, 84], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.test_get_job_200": {"executed_lines": [88, 89, 91, 94, 95, 96], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.test_get_job_progress_ill_formed": {"executed_lines": [100, 103, 104, 105], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.test_get_job_progress_200": {"executed_lines": [109, 110, 112, 115, 116, 117], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.test_cancel_job_ill_formed": {"executed_lines": [121, 124, 125, 126], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.test_cancel_job_200": {"executed_lines": [131, 132, 133, 136, 137, 138], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.test_get_job_messages_ill_formed": {"executed_lines": [142, 145, 146, 147], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.test_get_job_messages_401": {"executed_lines": [151, 155, 156, 157], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.test_get_job_messages_200": {"executed_lines": [161, 162, 164, 167, 168, 169], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 10, 11, 12, 16, 18, 24, 27, 28, 42, 43, 58, 59, 77, 78, 86, 87, 98, 99, 107, 108, 119, 120, 128, 129, 140, 141, 149, 150, 159, 160], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"FakeTokenFactory": {"executed_lines": [13], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud": {"executed_lines": [19, 20, 21, 22, 25, 29, 31, 32, 33, 34, 35, 38, 39, 40, 44, 46, 47, 48, 49, 50, 54, 55, 56, 60, 62, 63, 64, 65, 67, 68, 70, 73, 74, 75, 79, 82, 83, 84, 88, 89, 91, 94, 95, 96, 100, 103, 104, 105, 109, 110, 112, 115, 116, 117, 121, 124, 125, 126, 131, 132, 133, 136, 137, 138, 142, 145, 146, 147, 151, 155, 156, 157, 161, 162, 164, 167, 168, 169], "summary": {"covered_lines": 78, "num_statements": 78, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 10, 11, 12, 16, 18, 24, 27, 28, 42, 43, 58, 59, 77, 78, 86, 87, 98, 99, 107, 108, 119, 120, 128, 129, 140, 141, 149, 150, 159, 160], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_service_jobs.py": {"executed_lines": [1, 2, 3, 4, 5, 7, 8, 9, 12, 13, 14, 15, 18, 20, 21, 22, 23, 24, 26, 27, 29, 30, 31, 34, 35, 36, 38, 39, 40, 44, 45, 46, 48, 49, 50, 51, 52, 54, 58, 59, 60, 61, 63, 64, 72, 73, 74, 77, 78, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 91, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 106, 108, 109, 110, 111, 112, 113, 115, 116, 117, 118, 119, 120, 122, 123, 124, 125, 126, 127, 129, 130, 131, 133, 134, 135, 136, 138, 139, 140, 143, 144, 145, 146, 148, 149, 150, 153, 154, 155], "summary": {"covered_lines": 111, "num_statements": 111, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"FakeTokenFactory.get_token": {"executed_lines": [15], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.setup_method": {"executed_lines": [21, 22, 23, 24], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.teardown_method": {"executed_lines": [27], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_get_jobs_ill_formed": {"executed_lines": [31, 34, 35, 36], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_get_files_401": {"executed_lines": [40, 44, 45, 46], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_get_files_200": {"executed_lines": [50, 51, 52, 54, 58, 59, 60, 61], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_no_continuation_token": {"executed_lines": [64, 72, 73, 74, 77, 78], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_get_jobs_unsupported_service": {"executed_lines": [81, 82, 83, 84, 85], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs._make_fip_job_create": {"executed_lines": [88, 89, 90, 91], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_submit_job_unsupported_service": {"executed_lines": [94, 95, 96, 97, 98, 99], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_get_job_unsupported_service": {"executed_lines": [102, 103, 104, 105, 106], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_get_job_messages_unsupported_service": {"executed_lines": [109, 110, 111, 112, 113], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_get_job_progress_unsupported_service": {"executed_lines": [116, 117, 118, 119, 120], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_cancel_job_unsupported_service": {"executed_lines": [123, 124, 125, 126, 127], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_get_jobs_network_error": {"executed_lines": [131, 133, 134, 135, 136], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_get_jobs_ill_formed_success": {"executed_lines": [140, 143, 144, 145, 146], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_get_jobs_non_json_error": {"executed_lines": [150, 153, 154, 155], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 7, 8, 9, 12, 13, 14, 18, 20, 26, 29, 30, 38, 39, 48, 49, 63, 80, 87, 93, 101, 108, 115, 122, 129, 130, 138, 139, 148, 149], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"FakeTokenFactory": {"executed_lines": [15], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs": {"executed_lines": [21, 22, 23, 24, 27, 31, 34, 35, 36, 40, 44, 45, 46, 50, 51, 52, 54, 58, 59, 60, 61, 64, 72, 73, 74, 77, 78, 81, 82, 83, 84, 85, 88, 89, 90, 91, 94, 95, 96, 97, 98, 99, 102, 103, 104, 105, 106, 109, 110, 111, 112, 113, 116, 117, 118, 119, 120, 123, 124, 125, 126, 127, 131, 133, 134, 135, 136, 140, 143, 144, 145, 146, 150, 153, 154, 155], "summary": {"covered_lines": 76, "num_statements": 76, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 7, 8, 9, 12, 13, 14, 18, 20, 26, 29, 30, 38, 39, 48, 49, 63, 80, 87, 93, 101, 108, 115, 122, 129, 130, 138, 139, 148, 149], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_service_reality_data.py": {"executed_lines": [1, 2, 6, 7, 8, 9, 10, 11, 12, 15, 16, 17, 18, 21, 23, 24, 25, 26, 27, 29, 30, 33, 34, 35, 36, 37, 38, 39, 41, 42, 43, 44, 46, 47, 48, 50, 51, 52, 53, 57, 58, 59, 61, 62, 63, 64, 65, 66, 69, 70, 71, 74, 75, 76, 77, 79, 80, 81, 83, 84, 85, 86, 93, 94, 95, 96, 98, 99, 100, 101, 105, 106, 107, 109, 110, 111, 112, 113, 114, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 130, 131, 132, 133, 136, 137, 138, 139, 140, 141, 142, 143, 145, 146, 147, 148, 151, 152, 153, 154, 156, 157, 158, 159, 164, 165, 166, 167, 169, 170, 171, 172, 173, 174, 178, 179, 180, 181, 182, 185, 186, 187, 188, 191, 192, 193, 195, 196, 197, 198, 203, 204, 205, 207, 208, 209, 210, 213, 214, 215, 218, 219, 220, 221, 222, 225, 226, 227, 229, 230, 231, 232, 237, 238, 239, 241, 242, 243, 244, 245, 246, 249, 250, 251, 254, 255, 256, 257, 258, 261, 262, 263, 265, 266, 267, 268, 273, 274, 275, 276, 278, 279, 280, 281, 282, 283, 286, 287, 288, 291, 292, 293, 297, 298, 299, 300, 301, 302, 304, 305, 306, 307, 308, 312, 313, 314, 315, 316, 317, 319, 320, 321, 322, 323, 327, 328, 329, 330, 331, 332, 333, 334, 336, 337, 338, 339, 340, 344, 345, 346, 347, 348, 349, 350, 351, 353, 354, 364, 365, 367, 368, 369, 370, 389, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 403, 404, 405, 406, 407, 410, 411, 412, 414, 415, 416, 417, 418, 423, 424, 425, 427, 428, 429, 430, 431, 434, 435, 436, 437], "summary": {"covered_lines": 290, "num_statements": 290, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"FakeTokenFactory.get_token": {"executed_lines": [18], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.setup_method": {"executed_lines": [24, 25, 26, 27], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.teardown_method": {"executed_lines": [30], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_create_data_model_dump_error": {"executed_lines": [34, 35, 36, 37, 38, 39], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_create_data_ill_formed": {"executed_lines": [43, 44, 46, 47, 48], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_create_data_401": {"executed_lines": [52, 53, 57, 58, 59], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_create_data_201": {"executed_lines": [63, 64, 65, 66, 69, 70, 71], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_get_data_ill_formed": {"executed_lines": [76, 77, 79, 80, 81], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_get_data_ill_formed_text_response": {"executed_lines": [85, 86, 93, 94, 95, 96], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_get_data_401": {"executed_lines": [100, 101, 105, 106, 107], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_get_data_200": {"executed_lines": [111, 112, 113, 114, 116, 117, 118, 119], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_get_data_with_itwin_200": {"executed_lines": [123, 124, 125, 126, 127, 130, 131, 132, 133], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_update_data_model_dump_error": {"executed_lines": [137, 138, 139, 140, 141, 142, 143], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_update_data_ill_formed": {"executed_lines": [147, 148, 151, 152, 153, 154], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_update_data_401": {"executed_lines": [158, 159, 164, 165, 166, 167], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_update_data_200": {"executed_lines": [171, 172, 173, 174, 178, 179, 180, 181, 182], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_delete_data_ill_formed": {"executed_lines": [187, 188, 191, 192, 193], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_delete_data_401": {"executed_lines": [197, 198, 203, 204, 205], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_delete_data_204": {"executed_lines": [209, 210, 213, 214, 215], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_read_access_ill_formed": {"executed_lines": [220, 221, 222, 225, 226, 227], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_read_access_401": {"executed_lines": [231, 232, 237, 238, 239], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_read_access_200": {"executed_lines": [243, 244, 245, 246, 249, 250, 251], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_write_access_ill_formed": {"executed_lines": [256, 257, 258, 261, 262, 263], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_write_access_401": {"executed_lines": [267, 268, 273, 274, 275, 276], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_write_access_200": {"executed_lines": [280, 281, 282, 283, 286, 287, 288], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_list_data_ill_formed": {"executed_lines": [293, 297, 298, 299, 300, 301, 302], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_list_data_422": {"executed_lines": [306, 307, 308, 312, 313, 314, 315, 316, 317], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_list_data_minimal_200": {"executed_lines": [321, 322, 323, 327, 328, 329, 330, 331, 332, 333, 334], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_list_data_representation_200": {"executed_lines": [338, 339, 340, 344, 345, 346, 347, 348, 349, 350, 351], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_get_continuation_token_with_null_next": {"executed_lines": [354, 364, 365], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_reality_data_filter_serialization_matches_api_doc": {"executed_lines": [368, 369, 370, 389, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_move_data_ill_formed": {"executed_lines": [405, 406, 407, 410, 411, 412], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_move_data_401": {"executed_lines": [416, 417, 418, 423, 424, 425], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_move_data_204": {"executed_lines": [429, 430, 431, 434, 435, 436, 437], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 7, 8, 9, 10, 11, 12, 15, 16, 17, 21, 23, 29, 33, 41, 42, 50, 51, 61, 62, 74, 75, 83, 84, 98, 99, 109, 110, 121, 122, 136, 145, 146, 156, 157, 169, 170, 185, 186, 195, 196, 207, 208, 218, 219, 229, 230, 241, 242, 254, 255, 265, 266, 278, 279, 291, 292, 304, 305, 319, 320, 336, 337, 353, 367, 403, 404, 414, 415, 427, 428], "summary": {"covered_lines": 73, "num_statements": 73, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"FakeTokenFactory": {"executed_lines": [18], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData": {"executed_lines": [24, 25, 26, 27, 30, 34, 35, 36, 37, 38, 39, 43, 44, 46, 47, 48, 52, 53, 57, 58, 59, 63, 64, 65, 66, 69, 70, 71, 76, 77, 79, 80, 81, 85, 86, 93, 94, 95, 96, 100, 101, 105, 106, 107, 111, 112, 113, 114, 116, 117, 118, 119, 123, 124, 125, 126, 127, 130, 131, 132, 133, 137, 138, 139, 140, 141, 142, 143, 147, 148, 151, 152, 153, 154, 158, 159, 164, 165, 166, 167, 171, 172, 173, 174, 178, 179, 180, 181, 182, 187, 188, 191, 192, 193, 197, 198, 203, 204, 205, 209, 210, 213, 214, 215, 220, 221, 222, 225, 226, 227, 231, 232, 237, 238, 239, 243, 244, 245, 246, 249, 250, 251, 256, 257, 258, 261, 262, 263, 267, 268, 273, 274, 275, 276, 280, 281, 282, 283, 286, 287, 288, 293, 297, 298, 299, 300, 301, 302, 306, 307, 308, 312, 313, 314, 315, 316, 317, 321, 322, 323, 327, 328, 329, 330, 331, 332, 333, 334, 338, 339, 340, 344, 345, 346, 347, 348, 349, 350, 351, 354, 364, 365, 368, 369, 370, 389, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 405, 406, 407, 410, 411, 412, 416, 417, 418, 423, 424, 425, 429, 430, 431, 434, 435, 436, 437], "summary": {"covered_lines": 216, "num_statements": 216, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 7, 8, 9, 10, 11, 12, 15, 16, 17, 21, 23, 29, 33, 41, 42, 50, 51, 61, 62, 74, 75, 83, 84, 98, 99, 109, 110, 121, 122, 136, 145, 146, 156, 157, 169, 170, 185, 186, 195, 196, 207, 208, 218, 219, 229, 230, 241, 242, 254, 255, 265, 266, 278, 279, 291, 292, 304, 305, 319, 320, 336, 337, 353, 367, 403, 404, 414, 415, 427, 428], "summary": {"covered_lines": 73, "num_statements": 73, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_specifications.py": {"executed_lines": [1, 2, 3, 6, 8, 9, 15, 16, 18, 24, 25, 27, 28, 29, 31, 32, 33, 35, 36, 37, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 53, 55, 56, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 77], "summary": {"covered_lines": 50, "num_statements": 50, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"TestSpecifications.test_export_options_parsing": {"executed_lines": [9, 15, 16, 18, 24, 25, 27, 28, 29, 31, 32, 33, 35, 36, 37, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 53], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestSpecifications.test_export_options_from_object": {"executed_lines": [56], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestSpecifications.test_validate_options_unsupported_format_raises_value_error": {"executed_lines": [59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 77], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 8, 55, 58], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"TestSpecifications": {"executed_lines": [9, 15, 16, 18, 24, 25, 27, 28, 29, 31, 32, 33, 35, 36, 37, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 53, 56, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 77], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 8, 55, 58], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_version.py": {"executed_lines": [1, 2, 3, 4, 9, 13, 14, 15, 16, 18, 19, 20, 22, 23, 24, 25], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"TestVersion.test_version": {"executed_lines": [15, 16], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestVersion.test_version_fails": {"executed_lines": [19, 20, 22, 23, 24, 25], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 9, 13, 14, 18], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"TestVersion": {"executed_lines": [15, 16, 19, 20, 22, 23, 24, 25], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 9, 13, 14, 18], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}}, "totals": {"covered_lines": 3640, "num_statements": 3647, "percent_covered": 99.8080614203455, "percent_covered_display": "99", "missing_lines": 7, "excluded_lines": 0}} \ No newline at end of file diff --git a/python_sdk/docs/specifications/cs_tiler.rst b/python_sdk/docs/specifications/cs_tiler.rst deleted file mode 100644 index e8bbca5b..00000000 --- a/python_sdk/docs/specifications/cs_tiler.rst +++ /dev/null @@ -1,37 +0,0 @@ -================== -ContextScene Tiler -================== - -The *ContextScene Tiler* job allows you to transform a part of a ContextScene to 3D Tiles for viewing purposes. - -.. contents:: Quick access - :local: - :depth: 2 - -Examples -======== - -In this example, we will create a specification for submitting a ContextScene Tiler job tiling Cameras. - -.. literalinclude:: examples/cs_tiler_specs.py - :language: Python - -Classes -======= - -.. currentmodule:: reality_capture.specifications.cs_tiler - -.. autopydantic_model:: ContextSceneTilerSpecificationsCreate - -.. autopydantic_model:: ContextSceneTilerSpecifications - -.. autopydantic_model:: CSTilerInputs - :model-show-json: False - -.. autopydantic_model:: CSTilerOptions - :model-show-json: False - -.. autoclass:: CSObject - :show-inheritance: - :members: - :undoc-members: diff --git a/python_sdk/docs/specifications/examples/cs_tiler_specs.py b/python_sdk/docs/specifications/examples/cs_tiler_specs.py deleted file mode 100644 index cdab3b45..00000000 --- a/python_sdk/docs/specifications/examples/cs_tiler_specs.py +++ /dev/null @@ -1,7 +0,0 @@ -from reality_capture.specifications.cs_tiler import (ContextSceneTilerSpecificationsCreate, CSTilerInputs, - CSTilerOptions, CSObject) - -inputs = CSTilerInputs(scene="dbad181b-5079-4224-8561-96ad218bcfc9") -options = CSTilerOptions(objectToTile=CSObject.CAMERAS) - -specs = ContextSceneTilerSpecificationsCreate(inputs=inputs, options=options) diff --git a/python_sdk/docs/specifications/index.rst b/python_sdk/docs/specifications/index.rst index 4ece0dca..415361f9 100644 --- a/python_sdk/docs/specifications/index.rst +++ b/python_sdk/docs/specifications/index.rst @@ -39,7 +39,6 @@ Specifications regroup all the settings used to create jobs with our APIs. mesh_sampling tile_map_optimization vector_optimization - cs_tiler Modeling ======== @@ -74,7 +73,6 @@ Conversion * :doc:`/specifications/mesh_sampling` will sample meshes and consolidate them to a given format. * :doc:`/specifications/tile_map_optimization` will consolidate tile maps to a given format. * :doc:`/specifications/vector_optimization` will consolidate vector data to a given format. -* :doc:`/specifications/cs_tiler` will transform a ContextScene to a 3D Tile tileset. Utilities ========= diff --git a/python_sdk/src/reality_capture/service/job.py b/python_sdk/src/reality_capture/service/job.py index a25aab0b..9b32f910 100644 --- a/python_sdk/src/reality_capture/service/job.py +++ b/python_sdk/src/reality_capture/service/job.py @@ -35,8 +35,8 @@ TileMapOptimizationSpecifications) from reality_capture.specifications.vector_optimization import (VectorOptimizationSpecificationsCreate, VectorOptimizationSpecifications) -from reality_capture.specifications.cs_tiler import (ContextSceneTilerSpecifications, - ContextSceneTilerSpecificationsCreate) +# from reality_capture.specifications.cs_tiler import (ContextSceneTilerSpecifications, +# ContextSceneTilerSpecificationsCreate) from reality_capture.specifications.gaussian_splats import (GaussianSplatsSpecificationsCreate, GaussianSplatsSpecifications) @@ -78,7 +78,7 @@ class JobType(Enum): MESH_SAMPLING = "MeshSampling" TILE_MAP_OPTIMIZATION = "TileMapOptimization" VECTOR_OPTIMIZATION = "VectorOptimization" - CONTEXTSCENE_TILER = "ContextSceneTiler" + # CONTEXTSCENE_TILER = "ContextSceneTiler" class Service(Enum): @@ -97,7 +97,7 @@ def _get_appropriate_service(jt: JobType): JobType.EVAL_S3D, JobType.EVAL_SORTHO, JobType.CLEARANCE_CALCULATION]: return Service.ANALYSIS if jt in [JobType.POINT_CLOUD_CONVERSION, JobType.POINT_CLOUD_OPTIMIZATION, JobType.MESH_SAMPLING, - JobType.TILE_MAP_OPTIMIZATION, JobType.VECTOR_OPTIMIZATION, JobType.CONTEXTSCENE_TILER]: + JobType.TILE_MAP_OPTIMIZATION, JobType.VECTOR_OPTIMIZATION]: # JobType.CONTEXTSCENE_TILER return Service.CONVERSION raise NotImplementedError("Other services not yet implemented") @@ -128,7 +128,7 @@ class JobCreate(BaseModel): TouchUpImportSpecificationsCreate, WaterConstraintsSpecificationsCreate, PointCloudConversionSpecificationsCreate, PCOptimizationSpecificationsCreate, MeshSamplingSpecificationsCreate, TileMapOptimizationSpecificationsCreate, - VectorOptimizationSpecificationsCreate, ContextSceneTilerSpecificationsCreate, + VectorOptimizationSpecificationsCreate, # ContextSceneTilerSpecificationsCreate, ClearanceSpecificationsCreate] = ( Field(description="Specifications aligned with the job type.")) itwin_id: str = Field(description="iTwin ID, used by the service for finding " @@ -176,7 +176,7 @@ class Job(BaseModel): TouchUpImportSpecifications, WaterConstraintsSpecifications, PointCloudConversionSpecifications, PCOptimizationSpecifications, MeshSamplingSpecifications, TileMapOptimizationSpecifications, - VectorOptimizationSpecifications, ContextSceneTilerSpecifications, + VectorOptimizationSpecifications, # ContextSceneTilerSpecifications, ClearanceSpecifications] = ( Field(description="Specifications aligned with the job type.")) @@ -241,8 +241,8 @@ def set_specification_validation_model(cls, raw_dict: dict[str, Any], validation specifications = TileMapOptimizationSpecifications(**raw_dict) elif job_type == JobType.VECTOR_OPTIMIZATION: specifications = VectorOptimizationSpecifications(**raw_dict) - elif job_type == JobType.CONTEXTSCENE_TILER: - specifications = ContextSceneTilerSpecifications(**raw_dict) + # elif job_type == JobType.CONTEXTSCENE_TILER: + # specifications = ContextSceneTilerSpecifications(**raw_dict) else: raise ValueError(f"Unsupported job type: {job_type}") diff --git a/python_sdk/src/reality_capture/specifications/cs_tiler.py b/python_sdk/src/reality_capture/specifications/cs_tiler.py index bb3b4ca8..f5d27415 100644 --- a/python_sdk/src/reality_capture/specifications/cs_tiler.py +++ b/python_sdk/src/reality_capture/specifications/cs_tiler.py @@ -1,28 +1,28 @@ -from typing import Optional -from pydantic import BaseModel, Field -from enum import Enum - - -class CSTilerInputs(BaseModel): - scene: str = Field(description="ContextScene reality data id to tile") - -class CSObject(Enum): - CAMERAS = "Cameras" - TIE_POINTS = "TiePoints" - ANNOTATIONS = "Annotations" - - -class CSTilerOptions(BaseModel): - object_to_tile: Optional[CSObject] = Field(None, description="Object to tile inside the ContextScene.", - alias="objectToTile") - - -class ContextSceneTilerSpecificationsCreate(BaseModel): - inputs: CSTilerInputs = Field(description="Inputs") - options: Optional[CSTilerOptions] = Field(None, description="Options") - - -class ContextSceneTilerSpecifications(BaseModel): - inputs: CSTilerInputs = Field(description="Inputs") - output: str = Field(description="Reality Data id of tiled ContextScene") - options: Optional[CSTilerOptions] = Field(None, description="Options") +# from typing import Optional +# from pydantic import BaseModel, Field +# from enum import Enum +# +# +# class CSTilerInputs(BaseModel): +# scene: str = Field(description="ContextScene reality data id to tile") +# +# class CSObject(Enum): +# CAMERAS = "Cameras" +# TIE_POINTS = "TiePoints" +# ANNOTATIONS = "Annotations" +# +# +# class CSTilerOptions(BaseModel): +# object_to_tile: Optional[CSObject] = Field(None, description="Object to tile inside the ContextScene.", +# alias="objectToTile") +# +# +# class ContextSceneTilerSpecificationsCreate(BaseModel): +# inputs: CSTilerInputs = Field(description="Inputs") +# options: Optional[CSTilerOptions] = Field(None, description="Options") +# +# +# class ContextSceneTilerSpecifications(BaseModel): +# inputs: CSTilerInputs = Field(description="Inputs") +# output: str = Field(description="Reality Data id of tiled ContextScene") +# options: Optional[CSTilerOptions] = Field(None, description="Options") diff --git a/python_sdk/tests/test_job_validator.py b/python_sdk/tests/test_job_validator.py index b18cc40d..be649967 100644 --- a/python_sdk/tests/test_job_validator.py +++ b/python_sdk/tests/test_job_validator.py @@ -24,7 +24,7 @@ from reality_capture.specifications.mesh_sampling import MeshSamplingSpecifications from reality_capture.specifications.tile_map_optimization import TileMapOptimizationSpecifications from reality_capture.specifications.vector_optimization import VectorOptimizationSpecifications -from reality_capture.specifications.cs_tiler import ContextSceneTilerSpecifications +#from reality_capture.specifications.cs_tiler import ContextSceneTilerSpecifications from reality_capture.specifications.clearance import ClearanceSpecifications import pytest from unittest.mock import patch, MagicMock @@ -437,14 +437,14 @@ def test_validation_vector_optim(self): job = Job(**j) assert isinstance(job.specifications, VectorOptimizationSpecifications) - def test_validation_cs_tiler(self): - j = self.j_base.copy() - j["type"] = "ContextSceneTiler" - j["specifications"] = { - "inputs": { - "scene": "vId" - }, - "output": "outId" - } - job = Job(**j) - assert isinstance(job.specifications, ContextSceneTilerSpecifications) + # def test_validation_cs_tiler(self): + # j = self.j_base.copy() + # j["type"] = "ContextSceneTiler" + # j["specifications"] = { + # "inputs": { + # "scene": "vId" + # }, + # "output": "outId" + # } + # job = Job(**j) + # assert isinstance(job.specifications, ContextSceneTilerSpecifications) diff --git a/typescript/packages/reality-capture/src/service/job.ts b/typescript/packages/reality-capture/src/service/job.ts index be72e90c..874adcf1 100644 --- a/typescript/packages/reality-capture/src/service/job.ts +++ b/typescript/packages/reality-capture/src/service/job.ts @@ -115,10 +115,10 @@ import { TileMapOptimizationSpecificationsSchema, } from "../specifications/tile_map_optimization"; -import { - ContextSceneTilerSpecificationsCreateSchema, - ContextSceneTilerSpecificationsSchema, -} from "../specifications/cs_tiler"; +// import { +// ContextSceneTilerSpecificationsCreateSchema, +// ContextSceneTilerSpecificationsSchema, +// } from "../specifications/cs_tiler"; export enum JobType { CALIBRATION = "Calibration", @@ -150,7 +150,7 @@ export enum JobType { POINT_CLOUD_OPTIMIZATION = "PointCloudOptimization", VECTOR_OPTIMIZATION = "VectorOptimization", TILE_MAP_OPTIMIZATION = "TileMapOptimization", - CONTEXTSCENE_TILER = "ContextSceneTiler", + // CONTEXTSCENE_TILER = "ContextSceneTiler", } export enum Service { @@ -203,7 +203,7 @@ export function getAppropriateService(jt: JobType): Service { JobType.POINT_CLOUD_OPTIMIZATION, JobType.VECTOR_OPTIMIZATION, JobType.TILE_MAP_OPTIMIZATION, - JobType.CONTEXTSCENE_TILER, + // JobType.CONTEXTSCENE_TILER, ].includes(jt) ) { return Service.CONVERSION; @@ -255,7 +255,7 @@ export const JobCreateSchema = z.object({ PCOptimizationSpecificationsCreateSchema, VectorOptimizationSpecificationsCreateSchema, TileMapOptimizationSpecificationsCreateSchema, - ContextSceneTilerSpecificationsCreateSchema, + // ContextSceneTilerSpecificationsCreateSchema, ]) .describe("Specifications aligned with the job type."), iTwinId: z @@ -442,11 +442,11 @@ export const JobSchema = z.discriminatedUnion("type", [ type: z.literal("TileMapOptimization"), specifications: TileMapOptimizationSpecificationsSchema, }), - z.object({ - ...CommonFields, - type: z.literal("ContextSceneTiler"), - specifications: ContextSceneTilerSpecificationsSchema, - }), + // z.object({ + // ...CommonFields, + // type: z.literal("ContextSceneTiler"), + // specifications: ContextSceneTilerSpecificationsSchema, + // }), ]); export type Job = z.infer; diff --git a/typescript/packages/reality-capture/src/specifications/cs_tiler.ts b/typescript/packages/reality-capture/src/specifications/cs_tiler.ts index 0512a846..12cf781b 100644 --- a/typescript/packages/reality-capture/src/specifications/cs_tiler.ts +++ b/typescript/packages/reality-capture/src/specifications/cs_tiler.ts @@ -1,37 +1,37 @@ -import { z } from "zod"; +// import { z } from "zod"; -export const CSTilerInputsSchema = z.object({ - scene: z.string().describe("ContextScene reality data id to tile"), -}); -export type CSTilerInputs = z.infer; +// export const CSTilerInputsSchema = z.object({ +// scene: z.string().describe("ContextScene reality data id to tile"), +// }); +// export type CSTilerInputs = z.infer; -export enum CSObject { - CAMERAS = "Cameras", - TIE_POINTS = "TiePoints", - ANNOTATIONS = "Annotations", -} +// export enum CSObject { +// CAMERAS = "Cameras", +// TIE_POINTS = "TiePoints", +// ANNOTATIONS = "Annotations", +// } -export const CSTilerOptionsSchema = z.object({ - objectToTile: z - .nativeEnum(CSObject) - .describe("Object to tile inside the ContextScene.") - .optional(), -}); -export type CSTilerOptions = z.infer; +// export const CSTilerOptionsSchema = z.object({ +// objectToTile: z +// .nativeEnum(CSObject) +// .describe("Object to tile inside the ContextScene.") +// .optional(), +// }); +// export type CSTilerOptions = z.infer; -export const ContextSceneTilerSpecificationsCreateSchema = z.object({ - inputs: CSTilerInputsSchema.describe("Inputs"), - options: CSTilerOptionsSchema.describe("Options").optional(), -}); -export type ContextSceneTilerSpecificationsCreate = z.infer< - typeof ContextSceneTilerSpecificationsCreateSchema ->; +// export const ContextSceneTilerSpecificationsCreateSchema = z.object({ +// inputs: CSTilerInputsSchema.describe("Inputs"), +// options: CSTilerOptionsSchema.describe("Options").optional(), +// }); +// export type ContextSceneTilerSpecificationsCreate = z.infer< +// typeof ContextSceneTilerSpecificationsCreateSchema +// >; -export const ContextSceneTilerSpecificationsSchema = z.object({ - inputs: CSTilerInputsSchema.describe("Inputs"), - output: z.string().describe("Reality Data id of tiled ContextScene"), - options: CSTilerOptionsSchema.describe("Options").optional(), -}); -export type ContextSceneTilerSpecifications = z.infer< - typeof ContextSceneTilerSpecificationsSchema ->; +// export const ContextSceneTilerSpecificationsSchema = z.object({ +// inputs: CSTilerInputsSchema.describe("Inputs"), +// output: z.string().describe("Reality Data id of tiled ContextScene"), +// options: CSTilerOptionsSchema.describe("Options").optional(), +// }); +// export type ContextSceneTilerSpecifications = z.infer< +// typeof ContextSceneTilerSpecificationsSchema +// >; From a0c8c1de6e5db6f832180547bc9043f7efc4b7ff Mon Sep 17 00:00:00 2001 From: Cyril Novel <5690282+cnovel@users.noreply.github.com> Date: Fri, 5 Jun 2026 15:41:56 +0200 Subject: [PATCH 12/19] Fix some issues --- .../specifications/point_cloud_conversion.py | 2 +- .../reality-capture/src/service/service.ts | 140 +++++++++++++----- .../specifications/point_cloud_conversion.ts | 4 +- 3 files changed, 108 insertions(+), 38 deletions(-) diff --git a/python_sdk/src/reality_capture/specifications/point_cloud_conversion.py b/python_sdk/src/reality_capture/specifications/point_cloud_conversion.py index ec51c827..b544111e 100644 --- a/python_sdk/src/reality_capture/specifications/point_cloud_conversion.py +++ b/python_sdk/src/reality_capture/specifications/point_cloud_conversion.py @@ -4,7 +4,7 @@ class PCConversionInputs(BaseModel): - point_cloud: str = Field(description="Reality data Id of point cloud(s) to convert", alias="pointCloud") + point_cloud: str = Field(description="Reality data Id of point cloud to convert", alias="pointCloud") class PCConversionFormat(Enum): diff --git a/typescript/packages/reality-capture/src/service/service.ts b/typescript/packages/reality-capture/src/service/service.ts index b2c5a70d..30512fd6 100644 --- a/typescript/packages/reality-capture/src/service/service.ts +++ b/typescript/packages/reality-capture/src/service/service.ts @@ -5,7 +5,15 @@ import { DetectorsMinimalResponse, DetectorResponse } from "./detectors"; import { CostEstimationCreate, CostEstimation } from "./estimation"; import { Files } from "./files"; import { Response } from "./response"; -import { JobCreate, Job, Progress, Messages, Service, getAppropriateService, Jobs } from "./job"; +import { + JobCreate, + Job, + Progress, + Messages, + Service, + getAppropriateService, + Jobs, +} from "./job"; import { DetailedErrorResponse, DetailedError } from "./error"; export class RealityCaptureService { @@ -14,7 +22,10 @@ export class RealityCaptureService { private _serviceUrl: string; private _additionalUserAgent: string; - constructor(authorizationClient: AuthorizationClient, kwargs?: { env?: string, user_agent?: string }) { + constructor( + authorizationClient: AuthorizationClient, + kwargs?: { env?: string; user_agent?: string }, + ) { this._authorizationClient = authorizationClient; this._axios = axios.create(); const env = kwargs?.env; @@ -35,7 +46,8 @@ export class RealityCaptureService { private async _getHeader(version: "v1" | "v2") { return { Authorization: await this._authorizationClient.getAccessToken(), - "User-Agent": "Reality Capture TypeScript SDK/" + this._additionalUserAgent, + "User-Agent": + "Reality Capture TypeScript SDK/" + this._additionalUserAgent, "Content-type": "application/json", Accept: `application/vnd.bentley.itwin-platform.${version}+json`, }; @@ -49,14 +61,20 @@ export class RealityCaptureService { return this._serviceUrl + "reality-analysis/"; } + private _getConversionUrl() { + return this._serviceUrl + "reality-conversion/"; + } + private _getCorrectUrl(service: Service): string { switch (service) { - case Service.MODELING: - return this._getModelingUrl(); - case Service.ANALYSIS: - return this._getAnalysisUrl(); - default: - throw new Error("Other services not yet implemented"); + case Service.MODELING: + return this._getModelingUrl(); + case Service.ANALYSIS: + return this._getAnalysisUrl(); + case Service.CONVERSION: + return this._getConversionUrl(); + default: + throw new Error("Other services not yet implemented"); } } @@ -64,12 +82,17 @@ export class RealityCaptureService { return `Service response is ill-formed: ${JSON.stringify(response.data)}. Exception: ${exception}`; } - async getJobs(service: Service, filters: string, top: number = 100, continuationToken: string = ""): Promise> { + async getJobs( + service: Service, + filters: string, + top: number = 100, + continuationToken: string = "", + ): Promise> { const url = this._getCorrectUrl(service); try { const resp = await this._axios.get(url + "/jobs", { - params: {"$filter": filters, "$top": top, continuationToken }, - headers: await this._getHeader("v2") + params: { $filter: filters, $top: top, continuationToken }, + headers: await this._getHeader("v2"), }); return new Response(resp.status, null, resp.data as Jobs); } catch (error: any) { @@ -80,7 +103,9 @@ export class RealityCaptureService { async submitJob(job: JobCreate): Promise> { const url = this._getCorrectUrl(getAppropriateService(job.type)); try { - const resp = await this._axios.post(url + "/jobs", job, { headers: await this._getHeader("v2") }); + const resp = await this._axios.post(url + "/jobs", job, { + headers: await this._getHeader("v2"), + }); return new Response(resp.status, null, resp.data.job as Job); } catch (error: any) { return this._handleError(error); @@ -90,27 +115,39 @@ export class RealityCaptureService { async getJob(jobId: string, service: Service): Promise> { const url = this._getCorrectUrl(service); try { - const resp = await this._axios.get(url + "/jobs/" + jobId, { headers: await this._getHeader("v2") }); + const resp = await this._axios.get(url + "/jobs/" + jobId, { + headers: await this._getHeader("v2"), + }); return new Response(resp.status, null, resp.data.job as Job); } catch (error: any) { return this._handleError(error); } } - async getJobMessages(jobId: string, service: Service): Promise> { + async getJobMessages( + jobId: string, + service: Service, + ): Promise> { const url = this._getCorrectUrl(service); try { - const resp = await this._axios.get(url + `/jobs/${jobId}/messages`, { headers: await this._getHeader("v2") }); + const resp = await this._axios.get(url + `/jobs/${jobId}/messages`, { + headers: await this._getHeader("v2"), + }); return new Response(resp.status, null, resp.data.messages as Messages); } catch (error: any) { return this._handleError(error); } } - async getJobProgress(jobId: string, service: Service): Promise> { + async getJobProgress( + jobId: string, + service: Service, + ): Promise> { const url = this._getCorrectUrl(service); try { - const resp = await this._axios.get(url + `/jobs/${jobId}/progress`, { headers: await this._getHeader("v2") }); + const resp = await this._axios.get(url + `/jobs/${jobId}/progress`, { + headers: await this._getHeader("v2"), + }); return new Response(resp.status, null, resp.data.progress as Progress); } catch (error: any) { return this._handleError(error); @@ -120,18 +157,30 @@ export class RealityCaptureService { async cancelJob(jobId: string, service: Service): Promise> { const url = this._getCorrectUrl(service); try { - const resp = await this._axios.delete(url + `/jobs/${jobId}`, { headers: await this._getHeader("v2") }); + const resp = await this._axios.delete(url + `/jobs/${jobId}`, { + headers: await this._getHeader("v2"), + }); return new Response(resp.status, null, resp.data.job as Job); } catch (error: any) { return this._handleError(error); } } - async estimateCost(estimationCreate: CostEstimationCreate): Promise> { - const url = this._getCorrectUrl(getAppropriateService(estimationCreate.type)); + async estimateCost( + estimationCreate: CostEstimationCreate, + ): Promise> { + const url = this._getCorrectUrl( + getAppropriateService(estimationCreate.type), + ); try { - const resp = await this._axios.post(url + "/costs", estimationCreate, { headers: await this._getHeader("v2") }); - return new Response(resp.status, null, resp.data.costEstimation as CostEstimation); + const resp = await this._axios.post(url + "/costs", estimationCreate, { + headers: await this._getHeader("v2"), + }); + return new Response( + resp.status, + null, + resp.data.costEstimation as CostEstimation, + ); } catch (error: any) { return this._handleError(error); } @@ -140,7 +189,9 @@ export class RealityCaptureService { async getBucket(itwinId: string): Promise> { const url = this._getModelingUrl() + `itwins/${itwinId}/bucket`; try { - const resp = await this._axios.get(url, { headers: await this._getHeader("v2") }); + const resp = await this._axios.get(url, { + headers: await this._getHeader("v2"), + }); return new Response(resp.status, null, resp.data as BucketResponse); } catch (error: any) { return this._handleError(error); @@ -150,21 +201,29 @@ export class RealityCaptureService { async getServiceFiles(): Promise> { const url = this._getModelingUrl() + "files"; try { - const resp = await this._axios.get(url, { headers: await this._getHeader("v2") }); + const resp = await this._axios.get(url, { + headers: await this._getHeader("v2"), + }); return new Response(resp.status, null, resp.data as Files); } catch (error: any) { return this._handleError(error); } } - async getDetectors(detectorsFilter?: string): Promise> { + async getDetectors( + detectorsFilter?: string, + ): Promise> { const url = this._getAnalysisUrl() + "detectors"; try { const resp = await this._axios.get(url, { - params: detectorsFilter ? { "$filter": detectorsFilter } : undefined, - headers: await this._getHeader("v2") + params: detectorsFilter ? { $filter: detectorsFilter } : undefined, + headers: await this._getHeader("v2"), }); - return new Response(resp.status, null, resp.data as DetectorsMinimalResponse); + return new Response( + resp.status, + null, + resp.data as DetectorsMinimalResponse, + ); } catch (error: any) { return this._handleError(error); } @@ -173,7 +232,9 @@ export class RealityCaptureService { async getDetector(detectorName: string): Promise> { const url = this._getAnalysisUrl() + `detectors/${detectorName}`; try { - const resp = await this._axios.get(url, { headers: await this._getHeader("v2") }); + const resp = await this._axios.get(url, { + headers: await this._getHeader("v2"), + }); return new Response(resp.status, null, resp.data as DetectorResponse); } catch (error: any) { return this._handleError(error); @@ -186,11 +247,22 @@ export class RealityCaptureService { if (!data || typeof data !== "object" || !("error" in data)) { const detError = { code: "UnknownError", - message: this._getIllFormedMessage(error.response, "Malformed error data"), + message: this._getIllFormedMessage( + error.response, + "Malformed error data", + ), } as DetailedError; - return new Response(error.response.status, { error: detError }, null); + return new Response( + error.response.status, + { error: detError }, + null, + ); } - return new Response(error.response.status, data as DetailedErrorResponse, null); + return new Response( + error.response.status, + data as DetailedErrorResponse, + null, + ); } else { const detError = { code: "UnknownError", @@ -199,4 +271,4 @@ export class RealityCaptureService { return new Response(500, { error: detError }, null); } } -} \ No newline at end of file +} diff --git a/typescript/packages/reality-capture/src/specifications/point_cloud_conversion.ts b/typescript/packages/reality-capture/src/specifications/point_cloud_conversion.ts index f1517db2..5483db7b 100644 --- a/typescript/packages/reality-capture/src/specifications/point_cloud_conversion.ts +++ b/typescript/packages/reality-capture/src/specifications/point_cloud_conversion.ts @@ -1,9 +1,7 @@ import { z } from "zod"; export const PCConversionInputsSchema = z.object({ - pointCloud: z - .string() - .describe("Reality data Id of point cloud(s) to convert"), + pointCloud: z.string().describe("Reality data Id of point cloud to convert"), }); export type PCConversionInputs = z.infer; From 9b23495b7ca63ad7e1d1b29fd1c36b70924ac747 Mon Sep 17 00:00:00 2001 From: Cyril Novel <5690282+cnovel@users.noreply.github.com> Date: Fri, 5 Jun 2026 15:48:14 +0200 Subject: [PATCH 13/19] Fix indentation --- .../reality-capture/src/service/service.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/typescript/packages/reality-capture/src/service/service.ts b/typescript/packages/reality-capture/src/service/service.ts index 30512fd6..7f40ac17 100644 --- a/typescript/packages/reality-capture/src/service/service.ts +++ b/typescript/packages/reality-capture/src/service/service.ts @@ -67,14 +67,14 @@ export class RealityCaptureService { private _getCorrectUrl(service: Service): string { switch (service) { - case Service.MODELING: - return this._getModelingUrl(); - case Service.ANALYSIS: - return this._getAnalysisUrl(); - case Service.CONVERSION: - return this._getConversionUrl(); - default: - throw new Error("Other services not yet implemented"); + case Service.MODELING: + return this._getModelingUrl(); + case Service.ANALYSIS: + return this._getAnalysisUrl(); + case Service.CONVERSION: + return this._getConversionUrl(); + default: + throw new Error("Other services not yet implemented"); } } From 1d391a8d3ccdcd3eb142a08aadf3705d14949221 Mon Sep 17 00:00:00 2001 From: Cyril Novel <5690282+cnovel@users.noreply.github.com> Date: Mon, 8 Jun 2026 10:33:20 +0200 Subject: [PATCH 14/19] Remove --- python_sdk/coverage.json | 1 - 1 file changed, 1 deletion(-) delete mode 100644 python_sdk/coverage.json diff --git a/python_sdk/coverage.json b/python_sdk/coverage.json deleted file mode 100644 index c68517df..00000000 --- a/python_sdk/coverage.json +++ /dev/null @@ -1 +0,0 @@ -{"meta": {"format": 3, "version": "7.10.6", "timestamp": "2026-05-19T11:32:26.799258", "branch_coverage": false, "show_contexts": false}, "files": {"docs\\service\\examples\\cancel_job.py": {"executed_lines": [1, 4, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 4, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 4, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\service\\examples\\create_reality_data.py": {"executed_lines": [1, 2, 6, 7, 9, 12], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 6, 7, 9, 12], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 6, 7, 9, 12], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\service\\examples\\delete_reality_data.py": {"executed_lines": [1, 5, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 5, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\service\\examples\\error.py": {"executed_lines": [1, 4, 5, 6, 8, 9, 10, 11, 12], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [13, 14, 15], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 4, 5, 6, 8, 9, 10, 11, 12], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [13, 14, 15], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 4, 5, 6, 8, 9, 10, 11, 12], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [13, 14, 15], "excluded_lines": []}}}, "docs\\service\\examples\\get_job.py": {"executed_lines": [1, 4, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 4, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 4, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\service\\examples\\get_job_progress.py": {"executed_lines": [1, 4, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 4, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 4, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\service\\examples\\get_reality_data.py": {"executed_lines": [1, 5, 6, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 5, 6, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 6, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\service\\examples\\get_reality_data_read_access.py": {"executed_lines": [1, 5, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 5, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\service\\examples\\get_reality_data_write_access.py": {"executed_lines": [1, 5, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 5, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\service\\examples\\handle_bucket.py": {"executed_lines": [1, 2, 5, 6, 8, 9, 10, 12, 13, 14, 19, 21, 22], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [16, 17], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 5, 6, 8, 9, 10, 12, 13, 14, 19, 21, 22], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [16, 17], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 5, 6, 8, 9, 10, 12, 13, 14, 19, 21, 22], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [16, 17], "excluded_lines": []}}}, "docs\\service\\examples\\handle_data.py": {"executed_lines": [1, 2, 5, 6, 8, 9, 10, 12, 13, 14, 19, 21, 22], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [16, 17], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 5, 6, 8, 9, 10, 12, 13, 14, 19, 21, 22], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [16, 17], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 5, 6, 8, 9, 10, 12, 13, 14, 19, 21, 22], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [16, 17], "excluded_lines": []}}}, "docs\\service\\examples\\submit_job.py": {"executed_lines": [1, 2, 3, 7, 8, 10, 11, 12, 13, 15, 17, 19], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 7, 8, 10, 11, 12, 13, 15, 17, 19], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 7, 8, 10, 11, 12, 13, 15, 17, 19], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\service\\examples\\update_reality_data.py": {"executed_lines": [1, 2, 6, 7, 9, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 6, 7, 9, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 6, 7, 9, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\calib_specs_adjust.py": {"executed_lines": [1, 3, 4, 5, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\calib_specs_default.py": {"executed_lines": [1, 3, 4, 5, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\cd_specs_detect_changes_meshes.py": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\clearance_specs.py": {"executed_lines": [1, 3, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\constraints_specs_add.py": {"executed_lines": [1, 3, 7, 9, 10], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 7, 9, 10], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 7, 9, 10], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\constraints_specs_delete.py": {"executed_lines": [1, 3, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\convert_pc_specs.py": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\eval_o2d_specs.py": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\eval_o3d_specs.py": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\eval_s2d_specs.py": {"executed_lines": [1, 3, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\eval_s3d_specs.py": {"executed_lines": [1, 3, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\eval_sortho_specs.py": {"executed_lines": [1, 3, 5, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\fill_image_properties_specs.py": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\gaussian_specs_3dt.py": {"executed_lines": [1, 5, 6, 7, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 5, 6, 7, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 6, 7, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\import_pc_specs.py": {"executed_lines": [1, 3, 4, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\mesh_sampling_specs.py": {"executed_lines": [1, 4, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 4, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 4, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\o2d_specs_detect_o2d_and_o3d_objects.py": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\o2d_specs_detect_o2d_objects.py": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\o2d_specs_detect_o3d_objects_given_o2d_objects.py": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\pc_conv_specs.py": {"executed_lines": [1, 5, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 5, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\pc_optim_specs.py": {"executed_lines": [1, 5, 7, 9], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 5, 7, 9], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 7, 9], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\production_specs_3d_tiles.py": {"executed_lines": [1, 3, 5, 7, 11, 14, 16, 17], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 7, 11, 14, 16, 17], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 7, 11, 14, 16, 17], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\reconstruction_specs.py": {"executed_lines": [1, 2, 3, 5, 6, 8, 10, 11], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 5, 6, 8, 10, 11], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 5, 6, 8, 10, 11], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\s2d_specs_project_on_mesh_given_2d_segmentation.py": {"executed_lines": [1, 3, 6, 8, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 6, 8, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 6, 8, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\s2d_specs_segment_photos.py": {"executed_lines": [1, 3, 5, 7, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 7, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 7, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\s2d_specs_segment_photos_and_project_on_mesh.py": {"executed_lines": [1, 3, 6, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 6, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 6, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\s3d_specs_infer_3d_lines_given_3d_segmentation.py": {"executed_lines": [1, 3, 4, 5, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\s3d_specs_segment_meshes.py": {"executed_lines": [1, 3, 5, 7, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 7, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 7, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\s3d_specs_segment_pc.py": {"executed_lines": [1, 3, 5, 7, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 7, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 7, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\s3d_specs_segment_pc_and_infer_3d_lines.py": {"executed_lines": [1, 3, 5, 8, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 8, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 8, 9], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\sortho_specs_classify_pixels.py": {"executed_lines": [1, 3, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 6, 8], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\tiling_specs_default.py": {"executed_lines": [1, 3, 4, 5, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\tiling_specs_options.py": {"executed_lines": [1, 3, 5, 6, 10, 11], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 10, 11], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 10, 11], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\tm_optimization.py": {"executed_lines": [1, 5, 7, 9], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 5, 7, 9], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 7, 9], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\touchup_export.py": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\touchup_import.py": {"executed_lines": [1, 3, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\vector_optim.py": {"executed_lines": [1, 5, 7, 9], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 5, 7, 9], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 7, 9], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "docs\\specifications\\examples\\water_constraints_specs.py": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\__init__.py": {"executed_lines": [1, 3, 4, 5, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\service\\__init__.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\service\\bucket.py": {"executed_lines": [1, 2, 5, 6, 9, 10, 11], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 5, 6, 9, 10, 11], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"Bucket": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BucketResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 5, 6, 9, 10, 11], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\service\\data_handler.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 15, 16, 25, 26, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 40, 42, 43, 44, 46, 47, 49, 50, 52, 53, 54, 55, 57, 66, 67, 68, 69, 71, 72, 74, 76, 77, 78, 79, 80, 82, 83, 84, 86, 87, 89, 90, 91, 92, 93, 94, 95, 96, 98, 99, 101, 102, 104, 105, 106, 107, 109, 110, 111, 112, 123, 125, 126, 127, 128, 129, 131, 132, 133, 135, 136, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 158, 161, 162, 166, 174, 175, 177, 178, 179, 180, 182, 183, 184, 186, 198, 199, 200, 201, 202, 203, 204, 206, 207, 208, 209, 211, 222, 223, 224, 225, 227, 235, 236, 237, 238, 240, 250, 251, 252, 253, 255, 262, 265, 266, 270, 278, 279, 281, 282, 284, 294, 295, 296, 297, 299, 309, 310, 311, 312, 314, 321, 322, 323, 324, 326, 334, 335, 336, 337, 339, 346], "summary": {"covered_lines": 173, "num_statements": 173, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"_DataHandler._get_files_and_sizes": {"executed_lines": [15, 16, 25, 26], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_DataHandler._get_nb_threads": {"executed_lines": [30, 31, 32], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_DataHandler.download_data": {"executed_lines": [36, 37, 38, 40, 42, 43, 44, 46, 76, 77, 78, 79, 80, 82, 83, 84, 86, 87], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_DataHandler.download_data._download_blob": {"executed_lines": [47, 57, 66, 67, 68, 69, 71, 72, 74], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_DataHandler.download_data._download_blob._download_callback": {"executed_lines": [49, 50, 52, 53, 54, 55], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_DataHandler.upload_data": {"executed_lines": [91, 92, 93, 94, 95, 96, 98, 125, 126, 127, 128, 129, 131, 132, 133, 135, 136], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_DataHandler.upload_data._upload_file": {"executed_lines": [99, 109, 110, 111, 112, 123], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_DataHandler.upload_data._upload_file._upload_callback": {"executed_lines": [101, 102, 104, 105, 106, 107], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_DataHandler.list_data": {"executed_lines": [140, 141, 142], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_DataHandler.delete_data": {"executed_lines": [146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 158], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataHandler.__init__": {"executed_lines": [174, 175], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataHandler._get_link": {"executed_lines": [178, 179, 180], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataHandler._set_authoring": {"executed_lines": [183, 184], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataHandler.upload_data": {"executed_lines": [198, 199, 200, 201, 202, 203, 204, 206, 207, 208, 209], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataHandler.download_data": {"executed_lines": [222, 223, 224, 225], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataHandler.list_data": {"executed_lines": [235, 236, 237, 238], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataHandler.delete_data": {"executed_lines": [250, 251, 252, 253], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataHandler.set_progress_hook": {"executed_lines": [262], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BucketDataHandler.__init__": {"executed_lines": [278, 279], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BucketDataHandler._get_bucket": {"executed_lines": [282], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BucketDataHandler.upload_data": {"executed_lines": [294, 295, 296, 297], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BucketDataHandler.download_data": {"executed_lines": [309, 310, 311, 312], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BucketDataHandler.list_data": {"executed_lines": [321, 322, 323, 324], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BucketDataHandler.delete_data": {"executed_lines": [334, 335, 336, 337], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BucketDataHandler.set_progress_hook": {"executed_lines": [346], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 28, 29, 34, 35, 89, 90, 138, 139, 144, 145, 161, 162, 166, 177, 182, 186, 211, 227, 240, 255, 265, 266, 270, 281, 284, 299, 314, 326, 339], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"_DataHandler": {"executed_lines": [15, 16, 25, 26, 30, 31, 32, 36, 37, 38, 40, 42, 43, 44, 46, 47, 49, 50, 52, 53, 54, 55, 57, 66, 67, 68, 69, 71, 72, 74, 76, 77, 78, 79, 80, 82, 83, 84, 86, 87, 91, 92, 93, 94, 95, 96, 98, 99, 101, 102, 104, 105, 106, 107, 109, 110, 111, 112, 123, 125, 126, 127, 128, 129, 131, 132, 133, 135, 136, 140, 141, 142, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 158], "summary": {"covered_lines": 83, "num_statements": 83, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataHandler": {"executed_lines": [174, 175, 178, 179, 180, 183, 184, 198, 199, 200, 201, 202, 203, 204, 206, 207, 208, 209, 222, 223, 224, 225, 235, 236, 237, 238, 250, 251, 252, 253, 262], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BucketDataHandler": {"executed_lines": [278, 279, 282, 294, 295, 296, 297, 309, 310, 311, 312, 321, 322, 323, 324, 334, 335, 336, 337, 346], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 28, 29, 34, 35, 89, 90, 138, 139, 144, 145, 161, 162, 166, 177, 182, 186, 211, 227, 240, 255, 265, 266, 270, 281, 284, 299, 314, 326, 339], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\service\\detectors.py": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 10, 11, 14, 15, 16, 19, 20, 21, 24, 25, 26, 27, 28, 31, 32, 35, 36, 37, 38, 39, 42, 43, 44, 45, 46, 47, 51, 52, 55, 56, 59, 60, 65, 66], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 10, 11, 14, 15, 16, 19, 20, 21, 24, 25, 26, 27, 28, 31, 32, 35, 36, 37, 38, 39, 42, 43, 44, 45, 46, 47, 51, 52, 55, 56, 59, 60, 65, 66], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"DetectorExport": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Capabilities": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DetectorStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DetectorVersion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DetectorType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DetectorBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Detector": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DetectorResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DetectorMinimal": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DetectorsMinimalResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 10, 11, 14, 15, 16, 19, 20, 21, 24, 25, 26, 27, 28, 31, 32, 35, 36, 37, 38, 39, 42, 43, 44, 45, 46, 47, 51, 52, 55, 56, 59, 60, 65, 66], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\service\\error.py": {"executed_lines": [1, 2, 5, 6, 7, 8, 11, 12, 13, 14, 15, 18, 19], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 5, 6, 7, 8, 11, 12, 13, 14, 15, 18, 19], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"Error": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DetailedError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DetailedErrorResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 5, 6, 7, 8, 11, 12, 13, 14, 15, 18, 19], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\service\\files.py": {"executed_lines": [1, 2, 4, 7, 8, 11, 12, 13, 14, 15, 16, 19, 20], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 4, 7, 8, 11, 12, 13, 14, 15, 16, 19, 20], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"FileType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "File": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Files": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 7, 8, 11, 12, 13, 14, 15, 16, 19, 20], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\service\\job.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 11, 13, 14, 15, 16, 18, 20, 22, 24, 25, 27, 29, 31, 33, 34, 36, 41, 43, 44, 45, 46, 47, 49, 51, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 84, 85, 86, 87, 90, 91, 94, 95, 98, 99, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 115, 116, 117, 118, 134, 138, 144, 147, 148, 149, 150, 151, 155, 156, 157, 158, 159, 162, 163, 164, 166, 183, 184, 185, 186, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 247, 249, 251, 257, 260, 261, 264, 265, 268, 269, 270, 274, 280, 281, 282, 283, 284, 285, 286, 287, 290, 291, 292, 295, 296, 299, 300, 301, 302, 303, 307, 308, 309, 312, 313], "summary": {"covered_lines": 195, "num_statements": 195, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"_get_appropriate_service": {"executed_lines": [91, 94, 95, 98, 99, 101, 102], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "JobCreate.get_appropriate_service": {"executed_lines": [144], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Job.set_specification_validation_model": {"executed_lines": [186, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 247, 249], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Job.get_appropriate_service": {"executed_lines": [257], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Jobs.get_continuation_token": {"executed_lines": [280, 281, 282, 283, 284, 285, 286, 287], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 11, 13, 14, 15, 16, 18, 20, 22, 24, 25, 27, 29, 31, 33, 34, 36, 41, 43, 44, 45, 46, 47, 49, 51, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 84, 85, 86, 87, 90, 105, 106, 107, 108, 109, 110, 111, 112, 115, 116, 117, 118, 134, 138, 147, 148, 149, 150, 151, 155, 156, 157, 158, 159, 162, 163, 164, 166, 183, 184, 185, 251, 260, 261, 264, 265, 268, 269, 270, 274, 290, 291, 292, 295, 296, 299, 300, 301, 302, 303, 307, 308, 309, 312, 313], "summary": {"covered_lines": 120, "num_statements": 120, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"JobType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Service": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "JobState": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "JobCreate": {"executed_lines": [144], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Execution": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Job": {"executed_lines": [186, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 247, 249, 257], "summary": {"covered_lines": 59, "num_statements": 59, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "JobResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NextPageLink": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Jobs": {"executed_lines": [280, 281, 282, 283, 284, 285, 286, 287], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProgressResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Message": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Messages": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MessagesResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 11, 13, 14, 15, 16, 18, 20, 22, 24, 25, 27, 29, 31, 33, 34, 36, 41, 43, 44, 45, 46, 47, 49, 51, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 84, 85, 86, 87, 90, 91, 94, 95, 98, 99, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 115, 116, 117, 118, 134, 138, 147, 148, 149, 150, 151, 155, 156, 157, 158, 159, 162, 163, 164, 166, 183, 184, 185, 251, 260, 261, 264, 265, 268, 269, 270, 274, 290, 291, 292, 295, 296, 299, 300, 301, 302, 303, 307, 308, 309, 312, 313], "summary": {"covered_lines": 127, "num_statements": 127, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\service\\reality_data.py": {"executed_lines": [1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 61, 64, 67, 70, 71, 72, 75, 76, 77, 82, 83, 84, 87, 88, 90, 91, 93, 96, 99, 101, 102, 104, 106, 107, 108, 109, 112, 113, 114, 115, 118, 119, 121, 122, 124, 126, 128, 130, 131, 134, 135, 136, 137, 140, 141, 144, 145, 146, 149, 150, 153, 154, 157, 158, 159, 160, 163, 164, 165, 168, 169, 171, 177, 179, 181, 185, 186, 187, 190, 193, 197, 202, 203, 204, 206, 207, 209, 210, 212, 213, 214, 215, 220, 221, 223, 226, 227, 229, 230, 234, 235, 238, 239, 241, 244, 245, 246, 247, 248, 249, 250], "summary": {"covered_lines": 155, "num_statements": 155, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"RealityDataFilter.as_dict_for_service_call": {"executed_lines": [207, 209, 210, 212, 213, 214, 215, 220, 221, 223], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "get_continuation_token": {"executed_lines": [245, 246, 247, 248, 249, 250], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 61, 64, 67, 70, 71, 72, 75, 76, 77, 82, 83, 84, 87, 88, 90, 91, 93, 96, 99, 101, 102, 104, 106, 107, 108, 109, 112, 113, 114, 115, 118, 119, 121, 122, 124, 126, 128, 130, 131, 134, 135, 136, 137, 140, 141, 144, 145, 146, 149, 150, 153, 154, 157, 158, 159, 160, 163, 164, 165, 168, 169, 171, 177, 179, 181, 185, 186, 187, 190, 193, 197, 202, 203, 204, 206, 226, 227, 229, 230, 234, 235, 238, 239, 241, 244], "summary": {"covered_lines": 139, "num_statements": 139, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"Classification": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Type": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Acquisition": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Coordinate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Crs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Extent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityData": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ContainerType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Access": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "URL": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ContainerLinks": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ContainerDetails": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Prefer": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataFilter": {"executed_lines": [207, 209, 210, 212, 213, 214, 215, 220, 221, 223], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDataMinimal": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NextPageLink": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityDatas": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 61, 64, 67, 70, 71, 72, 75, 76, 77, 82, 83, 84, 87, 88, 90, 91, 93, 96, 99, 101, 102, 104, 106, 107, 108, 109, 112, 113, 114, 115, 118, 119, 121, 122, 124, 126, 128, 130, 131, 134, 135, 136, 137, 140, 141, 144, 145, 146, 149, 150, 153, 154, 157, 158, 159, 160, 163, 164, 165, 168, 169, 171, 177, 179, 181, 185, 186, 187, 190, 193, 197, 202, 203, 204, 206, 226, 227, 229, 230, 234, 235, 238, 239, 241, 244, 245, 246, 247, 248, 249, 250], "summary": {"covered_lines": 145, "num_statements": 145, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\service\\response.py": {"executed_lines": [1, 2, 5, 8, 9, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 27, 34, 36, 43], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"Response.__new__": {"executed_lines": [21, 22, 23, 24, 25], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Response.get_response_status_code": {"executed_lines": [34], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Response.is_error": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 5, 8, 9, 13, 14, 15, 16, 17, 18, 20, 27, 36], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"Response": {"executed_lines": [21, 22, 23, 24, 25, 34, 43], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 5, 8, 9, 13, 14, 15, 16, 17, 18, 20, 27, 36], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\service\\service.py": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 19, 20, 24, 37, 38, 39, 41, 42, 43, 45, 52, 53, 54, 55, 56, 57, 58, 60, 62, 63, 64, 65, 67, 68, 70, 71, 73, 74, 76, 77, 79, 80, 82, 83, 85, 86, 87, 88, 89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 102, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 115, 116, 117, 119, 120, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 133, 143, 144, 145, 146, 148, 150, 151, 152, 153, 154, 156, 159, 166, 167, 168, 169, 170, 172, 174, 177, 185, 186, 187, 188, 190, 192, 195, 203, 204, 205, 206, 208, 210, 213, 222, 223, 224, 225, 227, 229, 232, 241, 242, 243, 244, 246, 248, 251, 259, 264, 271, 275, 285, 286, 287, 288, 290, 291, 292, 294, 299, 306, 307, 308, 309, 310, 312, 314, 317, 325, 326, 327, 328, 330, 332, 336, 345, 346, 347, 348, 351, 361, 362, 363, 364, 366, 368, 372, 380, 383, 393, 394, 395, 397, 400, 410, 411, 412, 414, 417, 426, 427, 428, 429, 430, 431, 432, 433, 434, 436, 438, 447], "summary": {"covered_lines": 201, "num_statements": 201, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"RealityCaptureService.__init__": {"executed_lines": [37, 38, 39, 41, 42, 43, 45, 52, 53, 54, 55, 56, 57, 58, 60], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService._get_header": {"executed_lines": [63, 64, 65], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService._get_header_v1": {"executed_lines": [68], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService._get_header_v2": {"executed_lines": [71], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService._get_reality_management_rd_url": {"executed_lines": [74], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService._get_modeling_url": {"executed_lines": [77], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService._get_analysis_url": {"executed_lines": [80], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService._get_conversion_url": {"executed_lines": [83], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService._get_correct_url": {"executed_lines": [86, 87, 88, 89, 90, 91, 92], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService._get_ill_formed_message": {"executed_lines": [96, 97, 98, 99, 100], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService._execute_request": {"executed_lines": [104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 115, 116, 117, 119, 120, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.get_jobs": {"executed_lines": [143, 144, 145, 146, 148, 150, 151, 152, 153, 154, 156], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.submit_job": {"executed_lines": [166, 167, 168, 169, 170, 172, 174], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.get_job": {"executed_lines": [185, 186, 187, 188, 190, 192], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.get_job_messages": {"executed_lines": [203, 204, 205, 206, 208, 210], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.get_job_progress": {"executed_lines": [222, 223, 224, 225, 227, 229], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.cancel_job": {"executed_lines": [241, 242, 243, 244, 246, 248], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.get_bucket": {"executed_lines": [259], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.get_service_files": {"executed_lines": [271], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.get_detectors": {"executed_lines": [285, 286, 287, 288, 290, 291, 292, 294], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.get_detector": {"executed_lines": [306, 307, 308, 309, 310, 312, 314], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.create_reality_data": {"executed_lines": [325, 326, 327, 328, 330, 332], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.get_reality_data": {"executed_lines": [345, 346, 347, 348], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.update_reality_data": {"executed_lines": [361, 362, 363, 364, 366, 368], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.delete_reality_data": {"executed_lines": [380], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.get_reality_data_write_access": {"executed_lines": [393, 394, 395, 397], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.get_reality_data_read_access": {"executed_lines": [410, 411, 412, 414], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.list_reality_data": {"executed_lines": [426, 427, 428, 429, 430, 431, 432, 433, 434, 436], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RealityCaptureService.move_reality_data": {"executed_lines": [447], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 19, 20, 24, 62, 67, 70, 73, 76, 79, 82, 85, 94, 95, 102, 133, 159, 177, 195, 213, 232, 251, 264, 275, 299, 317, 336, 351, 372, 383, 400, 417, 438], "summary": {"covered_lines": 45, "num_statements": 45, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"RealityCaptureService": {"executed_lines": [37, 38, 39, 41, 42, 43, 45, 52, 53, 54, 55, 56, 57, 58, 60, 63, 64, 65, 68, 71, 74, 77, 80, 83, 86, 87, 88, 89, 90, 91, 92, 96, 97, 98, 99, 100, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 115, 116, 117, 119, 120, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 143, 144, 145, 146, 148, 150, 151, 152, 153, 154, 156, 166, 167, 168, 169, 170, 172, 174, 185, 186, 187, 188, 190, 192, 203, 204, 205, 206, 208, 210, 222, 223, 224, 225, 227, 229, 241, 242, 243, 244, 246, 248, 259, 271, 285, 286, 287, 288, 290, 291, 292, 294, 306, 307, 308, 309, 310, 312, 314, 325, 326, 327, 328, 330, 332, 345, 346, 347, 348, 361, 362, 363, 364, 366, 368, 380, 393, 394, 395, 397, 410, 411, 412, 414, 426, 427, 428, 429, 430, 431, 432, 433, 434, 436, 447], "summary": {"covered_lines": 156, "num_statements": 156, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 19, 20, 24, 62, 67, 70, 73, 76, 79, 82, 85, 94, 95, 102, 133, 159, 177, 195, 213, 232, 251, 264, 275, 299, 317, 336, 351, 372, 383, 400, 417, 438], "summary": {"covered_lines": 45, "num_statements": 45, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\__init__.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\calibration.py": {"executed_lines": [1, 2, 3, 6, 7, 8, 9, 13, 14, 15, 17, 21, 22, 23, 24, 27, 28, 29, 30, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 45, 48, 49, 50, 53, 54, 55, 58, 59, 60, 63, 64, 65, 68, 69, 70, 71, 74, 75, 76, 77, 78, 81, 82, 83, 86, 87, 88, 91, 92, 93, 96, 97, 98, 99, 100, 101, 104, 105, 106, 109, 110, 111, 112, 113, 116, 117, 118, 119, 122, 123, 124, 125, 126, 127, 130, 131, 132, 133, 134, 135, 136, 139, 140, 141, 142, 143, 144, 145, 146, 149, 150, 151, 152, 153, 154, 155, 158, 159, 160, 162, 163, 167, 168, 170, 171, 173, 175, 178, 180, 181, 183, 185, 189, 191, 192, 193, 195, 198, 201, 205, 208, 212, 213, 214, 215, 218, 219, 220, 221, 224, 225, 226], "summary": {"covered_lines": 142, "num_statements": 142, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 8, 9, 13, 14, 15, 17, 21, 22, 23, 24, 27, 28, 29, 30, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 45, 48, 49, 50, 53, 54, 55, 58, 59, 60, 63, 64, 65, 68, 69, 70, 71, 74, 75, 76, 77, 78, 81, 82, 83, 86, 87, 88, 91, 92, 93, 96, 97, 98, 99, 100, 101, 104, 105, 106, 109, 110, 111, 112, 113, 116, 117, 118, 119, 122, 123, 124, 125, 126, 127, 130, 131, 132, 133, 134, 135, 136, 139, 140, 141, 142, 143, 144, 145, 146, 149, 150, 151, 152, 153, 154, 155, 158, 159, 160, 162, 163, 167, 168, 170, 171, 173, 175, 178, 180, 181, 183, 185, 189, 191, 192, 193, 195, 198, 201, 205, 208, 212, 213, 214, 215, 218, 219, 220, 221, 224, 225, 226], "summary": {"covered_lines": 142, "num_statements": 142, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"CalibrationInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CalibrationOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CalibrationOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RigSynchro": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RotationPolicy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CenterPolicy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FocalPolicy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PrincipalPolicy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RadialPolicy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TangentialPolicy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FisheyeFocalPolicy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FisheyeDistortionPolicy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AspectRatioPolicy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SkewPolicy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TiepointsPolicy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PairSelection": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "KeypointsDensity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Tag": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ColorEqualization": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AdjustmentConstraints": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RigidRegistrationPosition": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RigidRegistrationRotation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RigidRegistrationScale": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CalibrationOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CalibrationSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CalibrationSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CalibrationCost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 8, 9, 13, 14, 15, 17, 21, 22, 23, 24, 27, 28, 29, 30, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 45, 48, 49, 50, 53, 54, 55, 58, 59, 60, 63, 64, 65, 68, 69, 70, 71, 74, 75, 76, 77, 78, 81, 82, 83, 86, 87, 88, 91, 92, 93, 96, 97, 98, 99, 100, 101, 104, 105, 106, 109, 110, 111, 112, 113, 116, 117, 118, 119, 122, 123, 124, 125, 126, 127, 130, 131, 132, 133, 134, 135, 136, 139, 140, 141, 142, 143, 144, 145, 146, 149, 150, 151, 152, 153, 154, 155, 158, 159, 160, 162, 163, 167, 168, 170, 171, 173, 175, 178, 180, 181, 183, 185, 189, 191, 192, 193, 195, 198, 201, 205, 208, 212, 213, 214, 215, 218, 219, 220, 221, 224, 225, 226], "summary": {"covered_lines": 142, "num_statements": 142, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\change_detection.py": {"executed_lines": [1, 2, 3, 6, 7, 8, 9, 13, 14, 16, 19, 22, 23, 26, 27, 28, 29, 30, 31, 34, 35, 37, 40, 43, 45, 50, 51, 52, 53, 56, 57, 58, 59], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 8, 9, 13, 14, 16, 19, 22, 23, 26, 27, 28, 29, 30, 31, 34, 35, 37, 40, 43, 45, 50, 51, 52, 53, 56, 57, 58, 59], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ChangeDetectionInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ChangeDetectionOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ChangeDetectionOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ChangeDetectionOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ChangeDetectionSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ChangeDetectionSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 8, 9, 13, 14, 16, 19, 22, 23, 26, 27, 28, 29, 30, 31, 34, 35, 37, 40, 43, 45, 50, 51, 52, 53, 56, 57, 58, 59], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\clearance.py": {"executed_lines": [1, 2, 3, 6, 7, 8, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 25, 28, 29, 30], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 8, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 25, 28, 29, 30], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ClearanceInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ClearanceOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ClearanceOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ClearanceSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ClearanceSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 8, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 25, 28, 29, 30], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\constraints.py": {"executed_lines": [1, 2, 3, 6, 7, 8, 11, 12, 14, 15, 16, 17, 19, 20, 21, 22, 25, 26, 27, 28, 31, 32, 35, 36, 37, 39, 41, 45, 46, 51, 52, 55, 56, 57, 60, 61, 62, 65, 66], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 8, 11, 12, 14, 15, 16, 17, 19, 20, 21, 22, 25, 26, 27, 28, 31, 32, 35, 36, 37, 39, 41, 45, 46, 51, 52, 55, 56, 57, 60, 61, 62, 65, 66], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ConstraintType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConstraintToAdd": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConstraintInfo": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConstraintsInfo": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConstraintsInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConstraintsOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConstraintsOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConstraintsSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConstraintsSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConstraintsCost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 8, 11, 12, 14, 15, 16, 17, 19, 20, 21, 22, 25, 26, 27, 28, 31, 32, 35, 36, 37, 39, 41, 45, 46, 51, 52, 55, 56, 57, 60, 61, 62, 65, 66], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\eval_o2d.py": {"executed_lines": [1, 2, 3, 6, 7, 8, 12, 13, 15, 20, 21, 22, 25, 26, 29, 30, 31, 32, 35, 36, 37, 38], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 8, 12, 13, 15, 20, 21, 22, 25, 26, 29, 30, 31, 32, 35, 36, 37, 38], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"EvalO2DInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalO2DOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalO2DOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalO2DOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalO2DSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalO2DSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 8, 12, 13, 15, 20, 21, 22, 25, 26, 29, 30, 31, 32, 35, 36, 37, 38], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\eval_o3d.py": {"executed_lines": [1, 2, 3, 6, 7, 8, 12, 13, 15, 20, 21, 22, 25, 26, 29, 30, 31, 32, 35, 36, 37, 38], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 8, 12, 13, 15, 20, 21, 22, 25, 26, 29, 30, 31, 32, 35, 36, 37, 38], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"EvalO3DInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalO3DOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalO3DOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalO3DOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalO3DSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalO3DSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 8, 12, 13, 15, 20, 21, 22, 25, 26, 29, 30, 31, 32, 35, 36, 37, 38], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\eval_s2d.py": {"executed_lines": [1, 2, 3, 6, 7, 9, 13, 14, 16, 19, 24, 25, 26, 27, 30, 31, 32, 35, 36, 37], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 9, 13, 14, 16, 19, 24, 25, 26, 27, 30, 31, 32, 35, 36, 37], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"EvalS2DInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalS2DOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalS2DOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalS2DSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalS2DSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 9, 13, 14, 16, 19, 24, 25, 26, 27, 30, 31, 32, 35, 36, 37], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\eval_s3d.py": {"executed_lines": [1, 2, 3, 6, 7, 9, 13, 14, 16, 19, 24, 25, 26, 27, 30, 31, 32, 35, 36, 37], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 9, 13, 14, 16, 19, 24, 25, 26, 27, 30, 31, 32, 35, 36, 37], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"EvalS3DInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalS3DOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalS3DOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalS3DSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalS3DSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 9, 13, 14, 16, 19, 24, 25, 26, 27, 30, 31, 32, 35, 36, 37], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\eval_sortho.py": {"executed_lines": [1, 2, 3, 6, 7, 9, 13, 14, 16, 19, 24, 25, 26, 27, 30, 31, 32, 35, 36, 37], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 9, 13, 14, 16, 19, 24, 25, 26, 27, 30, 31, 32, 35, 36, 37], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"EvalSOrthoInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalSOrthoOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalSOrthoOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalSOrthoSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EvalSOrthoSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 9, 13, 14, 16, 19, 24, 25, 26, 27, 30, 31, 32, 35, 36, 37], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\fill_image_properties.py": {"executed_lines": [1, 2, 3, 6, 7, 10, 13, 16, 19, 22, 23, 26, 29, 30, 33, 34, 37, 38, 41, 44, 50, 51, 54, 55, 56, 59, 60, 63, 66, 67, 70, 71, 73, 76, 77], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 10, 13, 16, 19, 22, 23, 26, 29, 30, 33, 34, 37, 38, 41, 44, 50, 51, 54, 55, 56, 59, 60, 63, 66, 67, 70, 71, 73, 76, 77], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"FillImagePropertiesInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FillImagePropertiesOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AltitudeReference": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FillImagePropertiesOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FillImagePropertiesSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FillImagePropertiesOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FillImagePropertiesSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FillImagePropertiesCost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 10, 13, 16, 19, 22, 23, 26, 29, 30, 33, 34, 37, 38, 41, 44, 50, 51, 54, 55, 56, 59, 60, 63, 66, 67, 70, 71, 73, 76, 77], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\gaussian_splats.py": {"executed_lines": [1, 2, 3, 6, 7, 8, 11, 15, 17, 21, 22, 23, 27, 28, 29, 32, 33, 34, 35, 36, 39, 40, 41, 42, 45, 46, 48, 50, 54, 58, 59, 60, 61, 64, 65, 66, 67], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 8, 11, 15, 17, 21, 22, 23, 27, 28, 29, 32, 33, 34, 35, 36, 39, 40, 41, 42, 45, 46, 48, 50, 54, 58, 59, 60, 61, 64, 65, 66, 67], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"GaussianSplatsInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GaussianSplatsOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GaussianSplatsOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GSFormat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GSQuality": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GaussianSplatsOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GaussianSplatsSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GaussianSplatsSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 8, 11, 15, 17, 21, 22, 23, 27, 28, 29, 32, 33, 34, 35, 36, 39, 40, 41, 42, 45, 46, 48, 50, 54, 58, 59, 60, 61, 64, 65, 66, 67], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\geometry.py": {"executed_lines": [1, 2, 5, 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, 20, 21, 22, 25, 26, 27, 30, 31, 32, 33, 34], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 5, 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, 20, 21, 22, 25, 26, 27, 30, 31, 32, 33, 34], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BoundingBox": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Point3d": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Coords2d": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Polygon2DWithHoles": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RegionOfInterest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 5, 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, 20, 21, 22, 25, 26, 27, 30, 31, 32, 33, 34], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\import_point_cloud.py": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 13, 14, 15, 19, 20, 21, 24, 25, 26, 29, 30, 31, 34, 35, 38, 39, 42, 43, 44, 45, 46, 47, 49, 50, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 13, 14, 15, 19, 20, 21, 24, 25, 26, 29, 30, 31, 34, 35, 38, 39, 42, 43, 44, 45, 46, 47, 49, 50, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ImportPCInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ImportPCOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ImportPCSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ImportPCOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ImportPCSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ImportPCCost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Point3dTime": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Scan": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PodMetadata": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 13, 14, 15, 19, 20, 21, 24, 25, 26, 29, 30, 31, 34, 35, 38, 39, 42, 43, 44, 45, 46, 47, 49, 50, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\mesh_sampling.py": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 23, 24, 25, 28, 29, 30, 33, 34, 35, 36], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 23, 24, 25, 28, 29, 30, 33, 34, 35, 36], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"MeshSamplingInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MeshSamplingFormat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MeshSamplingOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MeshSamplingSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MeshSamplingSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 23, 24, 25, 28, 29, 30, 33, 34, 35, 36], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\objects2d.py": {"executed_lines": [1, 2, 3, 6, 7, 8, 12, 16, 21, 22, 24, 26, 29, 32, 35, 41, 42, 43, 44, 45, 46, 47, 50, 51, 53, 55, 56, 60, 61, 62, 63, 66, 67, 68, 69], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 8, 12, 16, 21, 22, 24, 26, 29, 32, 35, 41, 42, 43, 44, 45, 46, 47, 50, 51, 53, 55, 56, 60, 61, 62, 63, 66, 67, 68, 69], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"Objects2DInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Objects2DOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Objects2DOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Objects2DOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Objects2DSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Objects2DSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 8, 12, 16, 21, 22, 24, 26, 29, 32, 35, 41, 42, 43, 44, 45, 46, 47, 50, 51, 53, 55, 56, 60, 61, 62, 63, 66, 67, 68, 69], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\point_cloud_conversion.py": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 23, 24, 27, 28, 29, 32, 33, 34, 35], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 23, 24, 27, 28, 29, 32, 33, 34, 35], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"PCConversionInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PCConversionFormat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PCConversionOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PointCloudConversionSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PointCloudConversionSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 23, 24, 27, 28, 29, 32, 33, 34, 35], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\point_cloud_optimization.py": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 23, 24, 27, 28, 29, 32, 33, 34, 35], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 23, 24, 27, 28, 29, 32, 33, 34, 35], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"PCOptimizationInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PCOptimizationFormat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PCOptimizationOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PCOptimizationSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PCOptimizationSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 23, 24, 27, 28, 29, 32, 33, 34, 35], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\production.py": {"executed_lines": [1, 2, 3, 4, 5, 8, 9, 10, 12, 15, 16, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 39, 40, 41, 42, 45, 46, 47, 50, 51, 52, 53, 54, 55, 56, 59, 60, 61, 64, 65, 67, 70, 73, 75, 77, 79, 80, 81, 84, 85, 87, 90, 93, 95, 97, 99, 100, 102, 104, 105, 106, 107, 109, 112, 113, 115, 118, 121, 124, 127, 130, 131, 133, 134, 138, 139, 141, 145, 149, 152, 155, 158, 161, 162, 163, 166, 167, 168, 171, 172, 173, 175, 176, 177, 178, 182, 183, 184, 186, 187, 188, 189, 193, 194, 195, 197, 198, 202, 203, 205, 208, 211, 214, 217, 220, 222, 224, 226, 227, 228, 229, 232, 233, 234, 237, 238, 239, 240, 243, 244, 245, 246, 249, 250, 251, 252, 253, 256, 257, 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 276, 277, 278, 282, 284, 285, 286, 287, 288, 290, 291, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 312, 314, 317, 318, 321, 322, 325, 326, 329, 330, 331, 334, 335, 336, 339, 340, 341, 342], "summary": {"covered_lines": 205, "num_statements": 205, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"ExportCreate.validate_options": {"executed_lines": [287, 288, 290, 291, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 312, 314], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 8, 9, 10, 12, 15, 16, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 39, 40, 41, 42, 45, 46, 47, 50, 51, 52, 53, 54, 55, 56, 59, 60, 61, 64, 65, 67, 70, 73, 75, 77, 79, 80, 81, 84, 85, 87, 90, 93, 95, 97, 99, 100, 102, 104, 105, 106, 107, 109, 112, 113, 115, 118, 121, 124, 127, 130, 131, 133, 134, 138, 139, 141, 145, 149, 152, 155, 158, 161, 162, 163, 166, 167, 168, 171, 172, 173, 175, 176, 177, 178, 182, 183, 184, 186, 187, 188, 189, 193, 194, 195, 197, 198, 202, 203, 205, 208, 211, 214, 217, 220, 222, 224, 226, 227, 228, 229, 232, 233, 234, 237, 238, 239, 240, 243, 244, 245, 246, 249, 250, 251, 252, 253, 256, 257, 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 276, 277, 278, 282, 284, 285, 286, 317, 318, 321, 322, 325, 326, 329, 330, 331, 334, 335, 336, 339, 340, 341, 342], "summary": {"covered_lines": 181, "num_statements": 181, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ProductionInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Format": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ColorSource": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThermalUnit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LODScope": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LODType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CesiumCompression": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Options3DTiles": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptionsOBJ": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Options3MX": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptionsI3S": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SamplingStrategy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LasCompression": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptionsLAS": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptionsPLY": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptionsOPC": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptionsOSGB": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProjectionMode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OrthoFormat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DSMFormat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OrthoColorSource": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OverviewType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptionsOrthoDSM": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ExportCreate": {"executed_lines": [287, 288, 290, 291, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 312, 314], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Export": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProductionOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProductionOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProductionSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProductionSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProductionCost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 8, 9, 10, 12, 15, 16, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 39, 40, 41, 42, 45, 46, 47, 50, 51, 52, 53, 54, 55, 56, 59, 60, 61, 64, 65, 67, 70, 73, 75, 77, 79, 80, 81, 84, 85, 87, 90, 93, 95, 97, 99, 100, 102, 104, 105, 106, 107, 109, 112, 113, 115, 118, 121, 124, 127, 130, 131, 133, 134, 138, 139, 141, 145, 149, 152, 155, 158, 161, 162, 163, 166, 167, 168, 171, 172, 173, 175, 176, 177, 178, 182, 183, 184, 186, 187, 188, 189, 193, 194, 195, 197, 198, 202, 203, 205, 208, 211, 214, 217, 220, 222, 224, 226, 227, 228, 229, 232, 233, 234, 237, 238, 239, 240, 243, 244, 245, 246, 249, 250, 251, 252, 253, 256, 257, 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 276, 277, 278, 282, 284, 285, 286, 317, 318, 321, 322, 325, 326, 329, 330, 331, 334, 335, 336, 339, 340, 341, 342], "summary": {"covered_lines": 181, "num_statements": 181, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\reconstruction.py": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 13, 16, 18, 19, 23, 24, 26, 29, 30, 31, 34, 35, 36, 37, 40, 41, 42, 43, 46, 47, 48], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 13, 16, 18, 19, 23, 24, 26, 29, 30, 31, 34, 35, 36, 37, 40, 41, 42, 43, 46, 47, 48], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ReconstructionInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ReconstructionOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ReconstructionOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ReconstructionSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ReconstructionSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ReconstructionCost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 13, 16, 18, 19, 23, 24, 26, 29, 30, 31, 34, 35, 36, 37, 40, 41, 42, 43, 46, 47, 48], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\segmentation2d.py": {"executed_lines": [1, 2, 3, 6, 7, 8, 13, 17, 22, 23, 25, 27, 29, 32, 35, 38, 41, 46, 47, 48, 49, 50, 51, 52, 53, 54, 57, 58, 60, 63, 67, 68, 69, 70, 73, 74, 75, 76], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 8, 13, 17, 22, 23, 25, 27, 29, 32, 35, 38, 41, 46, 47, 48, 49, 50, 51, 52, 53, 54, 57, 58, 60, 63, 67, 68, 69, 70, 73, 74, 75, 76], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"Segmentation2DInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Segmentation2DOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Segmentation2DOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Segmentation2DOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Segmentation2DSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Segmentation2DSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 8, 13, 17, 22, 23, 25, 27, 29, 32, 35, 38, 41, 46, 47, 48, 49, 50, 51, 52, 53, 54, 57, 58, 60, 63, 67, 68, 69, 70, 73, 74, 75, 76], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\segmentation3d.py": {"executed_lines": [1, 2, 3, 6, 7, 11, 17, 22, 26, 27, 30, 33, 37, 41, 45, 49, 52, 55, 58, 61, 64, 67, 70, 73, 76, 79, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 104, 105, 106, 108, 110, 113, 117, 118, 119, 120, 123, 124, 125, 126], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 11, 17, 22, 26, 27, 30, 33, 37, 41, 45, 49, 52, 55, 58, 61, 64, 67, 70, 73, 76, 79, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 104, 105, 106, 108, 110, 113, 117, 118, 119, 120, 123, 124, 125, 126], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"Segmentation3DInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Segmentation3DOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Segmentation3DOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Segmentation3DOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Segmentation3DSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Segmentation3DSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 11, 17, 22, 26, 27, 30, 33, 37, 41, 45, 49, 52, 55, 58, 61, 64, 67, 70, 73, 76, 79, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 104, 105, 106, 108, 110, 113, 117, 118, 119, 120, 123, 124, 125, 126], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\segmentation_orthophoto.py": {"executed_lines": [1, 2, 3, 6, 7, 9, 16, 17, 20, 22, 25, 28, 31, 34, 37, 42, 43, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 58, 59, 60], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 9, 16, 17, 20, 22, 25, 28, 31, 34, 37, 42, 43, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 58, 59, 60], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"SegmentationOrthophotoInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SegmentationOrthophotoOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SegmentationOrthophotoOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SegmentationOrthophotoSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SegmentationOrthophotoSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 9, 16, 17, 20, 22, 25, 28, 31, 34, 37, 42, 43, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 58, 59, 60], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\tile_map_optimization.py": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 14, 15, 16, 19, 20, 22, 23, 24, 25, 27, 28, 30, 34, 35, 36, 39, 40, 41, 42], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 14, 15, 16, 19, 20, 22, 23, 24, 25, 27, 28, 30, 34, 35, 36, 39, 40, 41, 42], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"TileMapOptimizationInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TileMapOptimizationFormat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TileMapImageFormat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TileMapOptimizationOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TileMapOptimizationSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TileMapOptimizationSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 14, 15, 16, 19, 20, 22, 23, 24, 25, 27, 28, 30, 34, 35, 36, 39, 40, 41, 42], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\tiling.py": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 13, 14, 18, 19, 20, 23, 24, 25, 26, 27, 30, 31, 32, 33, 34, 37, 38, 39, 40, 43, 44, 45, 46, 49, 50, 51, 54, 55, 56, 57, 60, 61, 62, 63, 64, 65, 68, 69, 70, 73, 74, 75, 76, 77, 80, 81, 82, 83, 86, 87, 90, 91, 92, 93, 95, 96, 98, 100, 102, 103, 104, 106, 108, 110, 113, 115, 116, 117, 119, 123, 124, 127, 128, 131, 132, 135, 136, 137, 138, 141, 142, 143, 144, 147, 148, 149, 152, 153, 154, 155, 157, 160, 161, 162, 163, 164], "summary": {"covered_lines": 103, "num_statements": 103, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 13, 14, 18, 19, 20, 23, 24, 25, 26, 27, 30, 31, 32, 33, 34, 37, 38, 39, 40, 43, 44, 45, 46, 49, 50, 51, 54, 55, 56, 57, 60, 61, 62, 63, 64, 65, 68, 69, 70, 73, 74, 75, 76, 77, 80, 81, 82, 83, 86, 87, 90, 91, 92, 93, 95, 96, 98, 100, 102, 103, 104, 106, 108, 110, 113, 115, 116, 117, 119, 123, 124, 127, 128, 131, 132, 135, 136, 137, 138, 141, 142, 143, 144, 147, 148, 149, 152, 153, 154, 155, 157, 160, 161, 162, 163, 164], "summary": {"covered_lines": 103, "num_statements": 103, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"TilingInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ModelingReferenceType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TilingMode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GeometricPrecision": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TilingPairSelection": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PhotoUsedForGeometry": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "HoleFilling": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Simplification": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ColorCorrection": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UntexturedRepresentation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PointCloudColorSource": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TextureSource": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TilingOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ModelingReference": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TilingOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TilingOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TilingSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TilingSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TilingCost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LayoutTile": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Layout": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 13, 14, 18, 19, 20, 23, 24, 25, 26, 27, 30, 31, 32, 33, 34, 37, 38, 39, 40, 43, 44, 45, 46, 49, 50, 51, 54, 55, 56, 57, 60, 61, 62, 63, 64, 65, 68, 69, 70, 73, 74, 75, 76, 77, 80, 81, 82, 83, 86, 87, 90, 91, 92, 93, 95, 96, 98, 100, 102, 103, 104, 106, 108, 110, 113, 115, 116, 117, 119, 123, 124, 127, 128, 131, 132, 135, 136, 137, 138, 141, 142, 143, 144, 147, 148, 149, 152, 153, 154, 155, 157, 160, 161, 162, 163, 164], "summary": {"covered_lines": 103, "num_statements": 103, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\touchup.py": {"executed_lines": [1, 2, 3, 6, 7, 8, 12, 13, 14, 17, 18, 19, 22, 23, 26, 27, 30, 31, 32, 33, 36, 37, 38, 39, 42, 43, 46, 47, 48, 51, 52, 55, 56, 61, 62, 63, 66, 67, 68, 71, 72, 75, 76, 77, 80, 81], "summary": {"covered_lines": 46, "num_statements": 46, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 8, 12, 13, 14, 17, 18, 19, 22, 23, 26, 27, 30, 31, 32, 33, 36, 37, 38, 39, 42, 43, 46, 47, 48, 51, 52, 55, 56, 61, 62, 63, 66, 67, 68, 71, 72, 75, 76, 77, 80, 81], "summary": {"covered_lines": 46, "num_statements": 46, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"TouchUpExportInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchLevel": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchUpExportOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchUpExportOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchUpExportOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchUpExportSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchUpExportSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchUpExportCost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchUpImportInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchUpImportOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchUpImportOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchUpImportSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchUpImportSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TouchUpImportCost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ImportTileInfo": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ImportInfo": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 8, 12, 13, 14, 17, 18, 19, 22, 23, 26, 27, 30, 31, 32, 33, 36, 37, 38, 39, 42, 43, 46, 47, 48, 51, 52, 55, 56, 61, 62, 63, 66, 67, 68, 71, 72, 75, 76, 77, 80, 81], "summary": {"covered_lines": 46, "num_statements": 46, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\vector_optimization.py": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 12, 15, 16, 18, 19, 20, 24, 25, 26, 29, 30, 31, 32], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 12, 15, 16, 18, 19, 20, 24, 25, 26, 29, 30, 31, 32], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"VectorOptimizationInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "VectorOptimizationFormat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "VectorOptimizationOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "VectorOptimizationSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "VectorOptimizationSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 10, 11, 12, 15, 16, 18, 19, 20, 24, 25, 26, 29, 30, 31, 32], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src\\reality_capture\\specifications\\water_constraints.py": {"executed_lines": [1, 2, 3, 6, 7, 8, 9, 13, 14, 18, 19, 22, 23, 27, 28, 29, 30, 33, 34, 35, 36, 39, 40], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 6, 7, 8, 9, 13, 14, 18, 19, 22, 23, 27, 28, 29, 30, 33, 34, 35, 36, 39, 40], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"WaterConstraintsInputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "WaterConstraintsOptions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "WaterConstraintsOutputsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "WaterConstraintsOutputs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "WaterConstraintsSpecificationsCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "WaterConstraintsSpecifications": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "WaterConstraintsCost": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 7, 8, 9, 13, 14, 18, 19, 22, 23, 27, 28, 29, 30, 33, 34, 35, 36, 39, 40], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_conversion_model.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_data_handler.py": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 12, 13, 14, 15, 18, 19, 20, 23, 24, 27, 28, 29, 30, 31, 32, 35, 36, 37, 38, 39, 40, 42, 43, 44, 46, 47, 48, 49, 55, 56, 57, 58, 60, 61, 62, 63, 65, 66, 67, 68, 72, 73, 74, 75, 77, 78, 79, 80, 85, 86, 87, 88, 90, 91, 92, 93, 94, 95, 98, 103, 104, 105, 106, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 121, 125, 126, 127, 128, 129, 131, 132, 133, 134, 136, 137, 138, 139, 140, 141, 144, 148, 149, 150, 151, 153, 154, 155, 156, 158, 159, 160, 161, 162, 163, 166, 170, 171, 172, 173, 175, 176, 177, 178, 180, 181, 182, 183, 184, 185, 188, 191, 197, 198, 199, 200, 202, 203, 204, 205, 210, 211, 212, 213, 214, 216, 217, 218, 219, 220, 221, 223, 224, 225, 226, 230, 231, 232, 233, 234, 235, 237, 238, 239, 240, 241, 242, 244, 245, 246, 247, 251, 252, 253, 254, 255, 257, 258, 259, 260, 261, 262, 263, 264, 266, 267, 268, 269, 273, 274, 275, 276, 277, 279, 280, 281, 282, 288, 289, 290, 291, 293, 294, 295, 296, 298, 299, 300, 301, 305, 306, 307, 309, 310, 311, 312, 314, 315, 316, 317, 321, 322, 323, 326, 327, 328, 329, 330, 331, 333, 334, 335, 337, 338, 339, 340, 346, 347, 348, 349, 351, 352, 353, 354, 356, 357, 358, 359, 363, 364, 365, 366, 368, 369, 370, 371, 376, 377, 378, 379, 381, 382, 383, 384, 386, 387, 388, 389, 393, 394, 395, 396, 397, 399, 400, 401, 402, 404, 405, 406, 407, 411, 412, 413, 414, 416, 417, 418, 419, 421, 422, 423, 424, 428, 429, 430, 431, 433, 434, 435, 436, 441, 442, 443, 444, 445, 447, 448, 449, 450, 451, 452, 454, 455, 456, 457, 461, 462, 463, 464, 465, 466, 468, 469, 470, 471, 472, 473, 475, 476, 477, 478, 482, 483, 484, 485, 486, 488, 489, 490, 491, 492, 493, 494, 495, 497, 498, 499, 500, 504, 505, 506, 507, 508, 510, 511, 512, 513, 519, 520, 521, 522, 524, 525, 526, 527, 529, 530, 531, 532, 536, 537, 538, 540, 541, 542, 543, 545, 546, 547, 548, 552, 553, 554], "summary": {"covered_lines": 381, "num_statements": 381, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"FakeTokenFactory.get_token": {"executed_lines": [15], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "mock_blob": {"executed_lines": [19, 20], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "mock_blob_except": {"executed_lines": [24], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "mock_container_client_default": {"executed_lines": [29, 30, 31, 32], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.setup_method": {"executed_lines": [37, 38, 39, 40], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_set_hook": {"executed_lines": [43, 44], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_list_data_link_error": {"executed_lines": [48, 49, 55, 56, 57, 58], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_list_data_ok": {"executed_lines": [62, 63, 65, 66, 67, 68, 72, 73, 74, 75], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_upload_data_link_error": {"executed_lines": [79, 80, 85, 86, 87, 88], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_upload_data_authoring_error": {"executed_lines": [92, 93, 94, 95, 98, 103, 104, 105, 106], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_upload_data_interrupted": {"executed_lines": [110, 111, 113, 114, 115, 116, 117, 118, 121, 125, 126, 127, 128, 129], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_upload_data_exception": {"executed_lines": [133, 134, 136, 137, 138, 139, 140, 141, 144, 148, 149, 150, 151], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_upload_data_ok": {"executed_lines": [155, 156, 158, 159, 160, 161, 162, 163, 166, 170, 171, 172, 173], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_upload_data_authoring_error_end": {"executed_lines": [177, 178, 180, 181, 182, 183, 184, 185, 188, 191, 197, 198, 199, 200], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_download_data_link_error": {"executed_lines": [204, 205, 210, 211, 212, 213, 214], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_download_data_interrupted": {"executed_lines": [218, 219, 220, 221, 223, 224, 225, 226, 230, 231, 232, 233, 234, 235], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_download_data_exception": {"executed_lines": [239, 240, 241, 242, 244, 245, 246, 247, 251, 252, 253, 254, 255], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_download_data_ok": {"executed_lines": [259, 260, 261, 262, 263, 264, 266, 267, 268, 269, 273, 274, 275, 276, 277], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_delete_data_link_error": {"executed_lines": [281, 282, 288, 289, 290, 291], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_delete_bucket_fail": {"executed_lines": [295, 296, 298, 299, 300, 301, 305, 306, 307], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler.test_delete_bucket_ok": {"executed_lines": [311, 312, 314, 315, 316, 317, 321, 322, 323], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.setup_method": {"executed_lines": [328, 329, 330, 331], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_set_hook": {"executed_lines": [334, 335], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_list_bucket_link_error": {"executed_lines": [339, 340, 346, 347, 348, 349], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_list_bucket_ok": {"executed_lines": [353, 354, 356, 357, 358, 359, 363, 364, 365, 366], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_upload_bucket_link_error": {"executed_lines": [370, 371, 376, 377, 378, 379], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_upload_bucket_interrupted": {"executed_lines": [383, 384, 386, 387, 388, 389, 393, 394, 395, 396, 397], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_upload_bucket_exception": {"executed_lines": [401, 402, 404, 405, 406, 407, 411, 412, 413, 414], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_upload_bucket_ok": {"executed_lines": [418, 419, 421, 422, 423, 424, 428, 429, 430, 431], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_download_bucket_link_error": {"executed_lines": [435, 436, 441, 442, 443, 444, 445], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_download_bucket_interrupted": {"executed_lines": [449, 450, 451, 452, 454, 455, 456, 457, 461, 462, 463, 464, 465, 466], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_download_bucket_exception": {"executed_lines": [470, 471, 472, 473, 475, 476, 477, 478, 482, 483, 484, 485, 486], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_download_bucket_ok": {"executed_lines": [490, 491, 492, 493, 494, 495, 497, 498, 499, 500, 504, 505, 506, 507, 508], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_delete_bucket_link_error": {"executed_lines": [512, 513, 519, 520, 521, 522], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_delete_bucket_fail": {"executed_lines": [526, 527, 529, 530, 531, 532, 536, 537, 538], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler.test_delete_bucket_ok": {"executed_lines": [542, 543, 545, 546, 547, 548, 552, 553, 554], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 12, 13, 14, 18, 23, 27, 28, 35, 36, 42, 46, 47, 60, 61, 77, 78, 90, 91, 108, 109, 131, 132, 153, 154, 175, 176, 202, 203, 216, 217, 237, 238, 257, 258, 279, 280, 293, 294, 309, 310, 326, 327, 333, 337, 338, 351, 352, 368, 369, 381, 382, 399, 400, 416, 417, 433, 434, 447, 448, 468, 469, 488, 489, 510, 511, 524, 525, 540, 541], "summary": {"covered_lines": 77, "num_statements": 77, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"FakeTokenFactory": {"executed_lines": [15], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityDataHandler": {"executed_lines": [37, 38, 39, 40, 43, 44, 48, 49, 55, 56, 57, 58, 62, 63, 65, 66, 67, 68, 72, 73, 74, 75, 79, 80, 85, 86, 87, 88, 92, 93, 94, 95, 98, 103, 104, 105, 106, 110, 111, 113, 114, 115, 116, 117, 118, 121, 125, 126, 127, 128, 129, 133, 134, 136, 137, 138, 139, 140, 141, 144, 148, 149, 150, 151, 155, 156, 158, 159, 160, 161, 162, 163, 166, 170, 171, 172, 173, 177, 178, 180, 181, 182, 183, 184, 185, 188, 191, 197, 198, 199, 200, 204, 205, 210, 211, 212, 213, 214, 218, 219, 220, 221, 223, 224, 225, 226, 230, 231, 232, 233, 234, 235, 239, 240, 241, 242, 244, 245, 246, 247, 251, 252, 253, 254, 255, 259, 260, 261, 262, 263, 264, 266, 267, 268, 269, 273, 274, 275, 276, 277, 281, 282, 288, 289, 290, 291, 295, 296, 298, 299, 300, 301, 305, 306, 307, 311, 312, 314, 315, 316, 317, 321, 322, 323], "summary": {"covered_lines": 164, "num_statements": 164, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestBucketDataHandler": {"executed_lines": [328, 329, 330, 331, 334, 335, 339, 340, 346, 347, 348, 349, 353, 354, 356, 357, 358, 359, 363, 364, 365, 366, 370, 371, 376, 377, 378, 379, 383, 384, 386, 387, 388, 389, 393, 394, 395, 396, 397, 401, 402, 404, 405, 406, 407, 411, 412, 413, 414, 418, 419, 421, 422, 423, 424, 428, 429, 430, 431, 435, 436, 441, 442, 443, 444, 445, 449, 450, 451, 452, 454, 455, 456, 457, 461, 462, 463, 464, 465, 466, 470, 471, 472, 473, 475, 476, 477, 478, 482, 483, 484, 485, 486, 490, 491, 492, 493, 494, 495, 497, 498, 499, 500, 504, 505, 506, 507, 508, 512, 513, 519, 520, 521, 522, 526, 527, 529, 530, 531, 532, 536, 537, 538, 542, 543, 545, 546, 547, 548, 552, 553, 554], "summary": {"covered_lines": 132, "num_statements": 132, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 12, 13, 14, 18, 19, 20, 23, 24, 27, 28, 29, 30, 31, 32, 35, 36, 42, 46, 47, 60, 61, 77, 78, 90, 91, 108, 109, 131, 132, 153, 154, 175, 176, 202, 203, 216, 217, 237, 238, 257, 258, 279, 280, 293, 294, 309, 310, 326, 327, 333, 337, 338, 351, 352, 368, 369, 381, 382, 399, 400, 416, 417, 433, 434, 447, 448, 468, 469, 488, 489, 510, 511, 524, 525, 540, 541], "summary": {"covered_lines": 84, "num_statements": 84, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_detectors.py": {"executed_lines": [1, 2, 3, 4, 5, 7, 10, 11, 12, 13, 16, 18, 19, 20, 21, 22, 24, 25, 27, 28, 29, 32, 33, 34, 36, 37, 38, 42, 43, 44, 46, 47, 48, 49, 50, 52, 53, 54, 56, 57, 58, 59, 60, 61, 63, 64, 65, 68, 69, 70, 72, 73, 74, 78, 79, 80, 82, 83, 84, 85, 86, 88, 89, 90, 92, 93, 94, 95, 96, 102, 103, 104, 105], "summary": {"covered_lines": 73, "num_statements": 73, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"FakeTokenFactory.get_token": {"executed_lines": [13], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceDetector.setup_method": {"executed_lines": [19, 20, 21, 22], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceDetector.teardown_method": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceDetector.test_get_detector_ill_formed": {"executed_lines": [29, 32, 33, 34], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceDetector.test_get_detector_401": {"executed_lines": [38, 42, 43, 44], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceDetector.test_get_detector_200": {"executed_lines": [48, 49, 50, 52, 53, 54], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceDetector.test_get_detector_unsupported_service": {"executed_lines": [57, 58, 59, 60, 61], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceDetector.test_get_detectors_ill_formed": {"executed_lines": [65, 68, 69, 70], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceDetector.test_get_detectors_401": {"executed_lines": [74, 78, 79, 80], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceDetector.test_get_detectors_200": {"executed_lines": [84, 85, 86, 88, 89, 90], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceDetector.test_get_detectors_with_filter_200": {"executed_lines": [94, 95, 96, 102, 103, 104, 105], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 7, 10, 11, 12, 16, 18, 24, 27, 28, 36, 37, 46, 47, 56, 63, 64, 72, 73, 82, 83, 92, 93], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"FakeTokenFactory": {"executed_lines": [13], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceDetector": {"executed_lines": [19, 20, 21, 22, 25, 29, 32, 33, 34, 38, 42, 43, 44, 48, 49, 50, 52, 53, 54, 57, 58, 59, 60, 61, 65, 68, 69, 70, 74, 78, 79, 80, 84, 85, 86, 88, 89, 90, 94, 95, 96, 102, 103, 104, 105], "summary": {"covered_lines": 45, "num_statements": 45, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 7, 10, 11, 12, 16, 18, 24, 27, 28, 36, 37, 46, 47, 56, 63, 64, 72, 73, 82, 83, 92, 93], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_doc_examples.py": {"executed_lines": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 15, 16, 17, 18, 20, 21, 22, 24, 25, 27], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"TestDocExamples.setup_method": {"executed_lines": [17, 18], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestDocExamples.test_example_runs": {"executed_lines": [22], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestDocExamples.test_example_runs_alternate": {"executed_lines": [27], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 15, 16, 20, 21, 24, 25], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"TestDocExamples": {"executed_lines": [17, 18, 22, 27], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 15, 16, 20, 21, 24, 25], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_job.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 11, 12, 13, 14, 15, 16, 18, 19, 20, 22, 23, 24, 26, 28, 29, 30, 31, 32, 35, 36, 37, 38, 39, 41, 42, 43, 44], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"TestJob.test_appropriate_service_job": {"executed_lines": [13, 14, 15, 16, 18, 19, 20, 22, 23, 24, 26], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJob.test_appropriate_service_job_create": {"executed_lines": [29, 30, 31, 32, 35, 36, 37, 38, 39], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJob.test_get_appropriate_service_unsupported_job_type": {"executed_lines": [42, 43, 44], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 11, 12, 28, 41], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"TestJob": {"executed_lines": [13, 14, 15, 16, 18, 19, 20, 22, 23, 24, 26, 29, 30, 31, 32, 35, 36, 37, 38, 39, 42, 43, 44], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 11, 12, 28, 41], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_job_validator.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 33, 34, 45, 46, 47, 48, 56, 57, 59, 60, 61, 62, 70, 71, 73, 74, 75, 76, 86, 87, 89, 90, 91, 92, 101, 102, 104, 105, 106, 107, 116, 117, 119, 120, 121, 122, 131, 132, 134, 135, 136, 137, 146, 147, 149, 150, 151, 152, 161, 162, 164, 165, 166, 167, 176, 177, 179, 180, 181, 182, 190, 191, 193, 194, 195, 196, 205, 206, 208, 209, 210, 211, 219, 220, 222, 223, 224, 225, 234, 235, 237, 238, 239, 240, 248, 249, 251, 252, 253, 254, 262, 263, 265, 266, 267, 268, 276, 277, 279, 280, 281, 282, 291, 292, 294, 295, 296, 297, 307, 308, 310, 311, 312, 313, 322, 323, 325, 326, 327, 328, 336, 337, 339, 340, 341, 342, 351, 352, 354, 355, 356, 357, 366, 367, 369, 370, 371, 372, 373, 374, 375, 378, 380, 381, 382, 383, 389, 390, 392, 393, 394, 395, 401, 402, 404, 405, 406, 407, 413, 414, 416, 417, 418, 419, 425, 426, 428, 429, 430, 431, 437, 438], "summary": {"covered_lines": 202, "num_statements": 202, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"TestJobValidator.test_validation_fip": {"executed_lines": [46, 47, 48, 56, 57], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_calibration": {"executed_lines": [60, 61, 62, 70, 71], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_change_detection": {"executed_lines": [74, 75, 76, 86, 87], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_constraints": {"executed_lines": [90, 91, 92, 101, 102], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_eval_o2d": {"executed_lines": [105, 106, 107, 116, 117], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_eval_o3d": {"executed_lines": [120, 121, 122, 131, 132], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_eval_s2d": {"executed_lines": [135, 136, 137, 146, 147], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_eval_s3d": {"executed_lines": [150, 151, 152, 161, 162], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_eval_sortho": {"executed_lines": [165, 166, 167, 176, 177], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_gs": {"executed_lines": [180, 181, 182, 190, 191], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_ipc": {"executed_lines": [194, 195, 196, 205, 206], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_o2d": {"executed_lines": [209, 210, 211, 219, 220], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_prod": {"executed_lines": [223, 224, 225, 234, 235], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_recons": {"executed_lines": [238, 239, 240, 248, 249], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_s2d": {"executed_lines": [252, 253, 254, 262, 263], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_s3d": {"executed_lines": [266, 267, 268, 276, 277], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_sortho": {"executed_lines": [280, 281, 282, 291, 292], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_tiling": {"executed_lines": [295, 296, 297, 307, 308], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_tui": {"executed_lines": [311, 312, 313, 322, 323], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_tue": {"executed_lines": [326, 327, 328, 336, 337], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_wc": {"executed_lines": [340, 341, 342, 351, 352], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_clearance": {"executed_lines": [355, 356, 357, 366, 367], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_unsupported_job_type_raises": {"executed_lines": [370, 371, 372, 373, 374, 375, 378], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_pc_conv": {"executed_lines": [381, 382, 383, 389, 390], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_pc_optim": {"executed_lines": [393, 394, 395, 401, 402], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_mesh_sampling": {"executed_lines": [405, 406, 407, 413, 414], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_tm_optim": {"executed_lines": [417, 418, 419, 425, 426], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestJobValidator.test_validation_vector_optim": {"executed_lines": [429, 430, 431, 437, 438], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 33, 34, 45, 59, 73, 89, 104, 119, 134, 149, 164, 179, 193, 208, 222, 237, 251, 265, 279, 294, 310, 325, 339, 354, 369, 380, 392, 404, 416, 428], "summary": {"covered_lines": 60, "num_statements": 60, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"TestJobValidator": {"executed_lines": [46, 47, 48, 56, 57, 60, 61, 62, 70, 71, 74, 75, 76, 86, 87, 90, 91, 92, 101, 102, 105, 106, 107, 116, 117, 120, 121, 122, 131, 132, 135, 136, 137, 146, 147, 150, 151, 152, 161, 162, 165, 166, 167, 176, 177, 180, 181, 182, 190, 191, 194, 195, 196, 205, 206, 209, 210, 211, 219, 220, 223, 224, 225, 234, 235, 238, 239, 240, 248, 249, 252, 253, 254, 262, 263, 266, 267, 268, 276, 277, 280, 281, 282, 291, 292, 295, 296, 297, 307, 308, 311, 312, 313, 322, 323, 326, 327, 328, 336, 337, 340, 341, 342, 351, 352, 355, 356, 357, 366, 367, 370, 371, 372, 373, 374, 375, 378, 381, 382, 383, 389, 390, 393, 394, 395, 401, 402, 405, 406, 407, 413, 414, 417, 418, 419, 425, 426, 429, 430, 431, 437, 438], "summary": {"covered_lines": 142, "num_statements": 142, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 33, 34, 45, 59, 73, 89, 104, 119, 134, 149, 164, 179, 193, 208, 222, 237, 251, 265, 279, 294, 310, 325, 339, 354, 369, 380, 392, 404, 416, 428], "summary": {"covered_lines": 60, "num_statements": 60, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_service_base.py": {"executed_lines": [1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 32], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"TestServiceBase.test_service_base": {"executed_lines": [10, 11, 12, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBase.test_service_base.FakeTokenFactory.get_token": {"executed_lines": [13], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBase.test_get_correct_url_unsupported_service_raises": {"executed_lines": [29, 30, 31, 32], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 8, 9, 28], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"TestServiceBase": {"executed_lines": [10, 11, 12, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 29, 30, 31, 32], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBase.test_service_base.FakeTokenFactory": {"executed_lines": [13], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 8, 9, 28], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_service_bucket.py": {"executed_lines": [1, 2, 3, 4, 6, 9, 10, 11, 12, 15, 17, 18, 19, 20, 21, 22, 24, 25, 27, 28, 29, 32, 33, 34, 36, 37, 38, 42, 43, 44, 46, 47, 48, 49, 50, 52, 53, 54], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"FakeTokenFactory.get_token": {"executed_lines": [12], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBucket.setup_method": {"executed_lines": [18, 19, 20, 21, 22], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBucket.teardown_method": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBucket.test_get_bucket_ill_formed": {"executed_lines": [29, 32, 33, 34], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBucket.test_get_bucket_401": {"executed_lines": [38, 42, 43, 44], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBucket.test_get_bucket_200": {"executed_lines": [48, 49, 50, 52, 53, 54], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 6, 9, 10, 11, 15, 17, 24, 27, 28, 36, 37, 46, 47], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"FakeTokenFactory": {"executed_lines": [12], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBucket": {"executed_lines": [18, 19, 20, 21, 22, 25, 29, 32, 33, 34, 38, 42, 43, 44, 48, 49, 50, 52, 53, 54], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 6, 9, 10, 11, 15, 17, 24, 27, 28, 36, 37, 46, 47], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_service_files.py": {"executed_lines": [1, 2, 3, 5, 8, 9, 10, 11, 14, 16, 17, 18, 19, 20, 22, 23, 25, 26, 27, 30, 31, 32, 34, 35, 36, 40, 41, 42, 44, 45, 46, 47, 48, 50, 51, 52, 53, 54, 55, 56], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"FakeTokenFactory.get_token": {"executed_lines": [11], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBucket.setup_method": {"executed_lines": [17, 18, 19, 20], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBucket.teardown_method": {"executed_lines": [23], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBucket.test_get_files_ill_formed": {"executed_lines": [27, 30, 31, 32], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBucket.test_get_files_401": {"executed_lines": [36, 40, 41, 42], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBucket.test_get_files_200": {"executed_lines": [46, 47, 48, 50, 51, 52, 53, 54, 55, 56], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 8, 9, 10, 14, 16, 22, 25, 26, 34, 35, 44, 45], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"FakeTokenFactory": {"executed_lines": [11], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceBucket": {"executed_lines": [17, 18, 19, 20, 23, 27, 30, 31, 32, 36, 40, 41, 42, 46, 47, 48, 50, 51, 52, 53, 54, 55, 56], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 8, 9, 10, 14, 16, 22, 25, 26, 34, 35, 44, 45], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_service_job_crud.py": {"executed_lines": [1, 2, 3, 5, 6, 7, 10, 11, 12, 13, 16, 18, 19, 20, 21, 22, 24, 25, 27, 28, 29, 31, 32, 33, 34, 35, 38, 39, 40, 42, 43, 44, 46, 47, 48, 49, 50, 54, 55, 56, 58, 59, 60, 62, 63, 64, 65, 67, 68, 70, 73, 74, 75, 77, 78, 79, 82, 83, 84, 86, 87, 88, 89, 91, 94, 95, 96, 98, 99, 100, 103, 104, 105, 107, 108, 109, 110, 112, 115, 116, 117, 119, 120, 121, 124, 125, 126, 128, 129, 131, 132, 133, 136, 137, 138, 140, 141, 142, 145, 146, 147, 149, 150, 151, 155, 156, 157, 159, 160, 161, 162, 164, 167, 168, 169], "summary": {"covered_lines": 115, "num_statements": 115, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"FakeTokenFactory.get_token": {"executed_lines": [13], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.setup_method": {"executed_lines": [19, 20, 21, 22], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.teardown_method": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.test_submit_job_ill_formed": {"executed_lines": [29, 31, 32, 33, 34, 35, 38, 39, 40], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.test_submit_job_401": {"executed_lines": [44, 46, 47, 48, 49, 50, 54, 55, 56], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.test_submit_job_201": {"executed_lines": [60, 62, 63, 64, 65, 67, 68, 70, 73, 74, 75], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.test_get_job_ill_formed": {"executed_lines": [79, 82, 83, 84], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.test_get_job_200": {"executed_lines": [88, 89, 91, 94, 95, 96], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.test_get_job_progress_ill_formed": {"executed_lines": [100, 103, 104, 105], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.test_get_job_progress_200": {"executed_lines": [109, 110, 112, 115, 116, 117], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.test_cancel_job_ill_formed": {"executed_lines": [121, 124, 125, 126], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.test_cancel_job_200": {"executed_lines": [131, 132, 133, 136, 137, 138], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.test_get_job_messages_ill_formed": {"executed_lines": [142, 145, 146, 147], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.test_get_job_messages_401": {"executed_lines": [151, 155, 156, 157], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud.test_get_job_messages_200": {"executed_lines": [161, 162, 164, 167, 168, 169], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 10, 11, 12, 16, 18, 24, 27, 28, 42, 43, 58, 59, 77, 78, 86, 87, 98, 99, 107, 108, 119, 120, 128, 129, 140, 141, 149, 150, 159, 160], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"FakeTokenFactory": {"executed_lines": [13], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobCrud": {"executed_lines": [19, 20, 21, 22, 25, 29, 31, 32, 33, 34, 35, 38, 39, 40, 44, 46, 47, 48, 49, 50, 54, 55, 56, 60, 62, 63, 64, 65, 67, 68, 70, 73, 74, 75, 79, 82, 83, 84, 88, 89, 91, 94, 95, 96, 100, 103, 104, 105, 109, 110, 112, 115, 116, 117, 121, 124, 125, 126, 131, 132, 133, 136, 137, 138, 142, 145, 146, 147, 151, 155, 156, 157, 161, 162, 164, 167, 168, 169], "summary": {"covered_lines": 78, "num_statements": 78, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 10, 11, 12, 16, 18, 24, 27, 28, 42, 43, 58, 59, 77, 78, 86, 87, 98, 99, 107, 108, 119, 120, 128, 129, 140, 141, 149, 150, 159, 160], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_service_jobs.py": {"executed_lines": [1, 2, 3, 4, 5, 7, 8, 9, 12, 13, 14, 15, 18, 20, 21, 22, 23, 24, 26, 27, 29, 30, 31, 34, 35, 36, 38, 39, 40, 44, 45, 46, 48, 49, 50, 51, 52, 54, 58, 59, 60, 61, 63, 64, 72, 73, 74, 77, 78, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 91, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 106, 108, 109, 110, 111, 112, 113, 115, 116, 117, 118, 119, 120, 122, 123, 124, 125, 126, 127, 129, 130, 131, 133, 134, 135, 136, 138, 139, 140, 143, 144, 145, 146, 148, 149, 150, 153, 154, 155], "summary": {"covered_lines": 111, "num_statements": 111, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"FakeTokenFactory.get_token": {"executed_lines": [15], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.setup_method": {"executed_lines": [21, 22, 23, 24], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.teardown_method": {"executed_lines": [27], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_get_jobs_ill_formed": {"executed_lines": [31, 34, 35, 36], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_get_files_401": {"executed_lines": [40, 44, 45, 46], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_get_files_200": {"executed_lines": [50, 51, 52, 54, 58, 59, 60, 61], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_no_continuation_token": {"executed_lines": [64, 72, 73, 74, 77, 78], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_get_jobs_unsupported_service": {"executed_lines": [81, 82, 83, 84, 85], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs._make_fip_job_create": {"executed_lines": [88, 89, 90, 91], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_submit_job_unsupported_service": {"executed_lines": [94, 95, 96, 97, 98, 99], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_get_job_unsupported_service": {"executed_lines": [102, 103, 104, 105, 106], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_get_job_messages_unsupported_service": {"executed_lines": [109, 110, 111, 112, 113], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_get_job_progress_unsupported_service": {"executed_lines": [116, 117, 118, 119, 120], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_cancel_job_unsupported_service": {"executed_lines": [123, 124, 125, 126, 127], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_get_jobs_network_error": {"executed_lines": [131, 133, 134, 135, 136], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_get_jobs_ill_formed_success": {"executed_lines": [140, 143, 144, 145, 146], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs.test_get_jobs_non_json_error": {"executed_lines": [150, 153, 154, 155], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 7, 8, 9, 12, 13, 14, 18, 20, 26, 29, 30, 38, 39, 48, 49, 63, 80, 87, 93, 101, 108, 115, 122, 129, 130, 138, 139, 148, 149], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"FakeTokenFactory": {"executed_lines": [15], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestServiceJobs": {"executed_lines": [21, 22, 23, 24, 27, 31, 34, 35, 36, 40, 44, 45, 46, 50, 51, 52, 54, 58, 59, 60, 61, 64, 72, 73, 74, 77, 78, 81, 82, 83, 84, 85, 88, 89, 90, 91, 94, 95, 96, 97, 98, 99, 102, 103, 104, 105, 106, 109, 110, 111, 112, 113, 116, 117, 118, 119, 120, 123, 124, 125, 126, 127, 131, 133, 134, 135, 136, 140, 143, 144, 145, 146, 150, 153, 154, 155], "summary": {"covered_lines": 76, "num_statements": 76, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 7, 8, 9, 12, 13, 14, 18, 20, 26, 29, 30, 38, 39, 48, 49, 63, 80, 87, 93, 101, 108, 115, 122, 129, 130, 138, 139, 148, 149], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_service_reality_data.py": {"executed_lines": [1, 2, 6, 7, 8, 9, 10, 11, 12, 15, 16, 17, 18, 21, 23, 24, 25, 26, 27, 29, 30, 33, 34, 35, 36, 37, 38, 39, 41, 42, 43, 44, 46, 47, 48, 50, 51, 52, 53, 57, 58, 59, 61, 62, 63, 64, 65, 66, 69, 70, 71, 74, 75, 76, 77, 79, 80, 81, 83, 84, 85, 86, 93, 94, 95, 96, 98, 99, 100, 101, 105, 106, 107, 109, 110, 111, 112, 113, 114, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 130, 131, 132, 133, 136, 137, 138, 139, 140, 141, 142, 143, 145, 146, 147, 148, 151, 152, 153, 154, 156, 157, 158, 159, 164, 165, 166, 167, 169, 170, 171, 172, 173, 174, 178, 179, 180, 181, 182, 185, 186, 187, 188, 191, 192, 193, 195, 196, 197, 198, 203, 204, 205, 207, 208, 209, 210, 213, 214, 215, 218, 219, 220, 221, 222, 225, 226, 227, 229, 230, 231, 232, 237, 238, 239, 241, 242, 243, 244, 245, 246, 249, 250, 251, 254, 255, 256, 257, 258, 261, 262, 263, 265, 266, 267, 268, 273, 274, 275, 276, 278, 279, 280, 281, 282, 283, 286, 287, 288, 291, 292, 293, 297, 298, 299, 300, 301, 302, 304, 305, 306, 307, 308, 312, 313, 314, 315, 316, 317, 319, 320, 321, 322, 323, 327, 328, 329, 330, 331, 332, 333, 334, 336, 337, 338, 339, 340, 344, 345, 346, 347, 348, 349, 350, 351, 353, 354, 364, 365, 367, 368, 369, 370, 389, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 403, 404, 405, 406, 407, 410, 411, 412, 414, 415, 416, 417, 418, 423, 424, 425, 427, 428, 429, 430, 431, 434, 435, 436, 437], "summary": {"covered_lines": 290, "num_statements": 290, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"FakeTokenFactory.get_token": {"executed_lines": [18], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.setup_method": {"executed_lines": [24, 25, 26, 27], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.teardown_method": {"executed_lines": [30], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_create_data_model_dump_error": {"executed_lines": [34, 35, 36, 37, 38, 39], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_create_data_ill_formed": {"executed_lines": [43, 44, 46, 47, 48], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_create_data_401": {"executed_lines": [52, 53, 57, 58, 59], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_create_data_201": {"executed_lines": [63, 64, 65, 66, 69, 70, 71], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_get_data_ill_formed": {"executed_lines": [76, 77, 79, 80, 81], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_get_data_ill_formed_text_response": {"executed_lines": [85, 86, 93, 94, 95, 96], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_get_data_401": {"executed_lines": [100, 101, 105, 106, 107], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_get_data_200": {"executed_lines": [111, 112, 113, 114, 116, 117, 118, 119], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_get_data_with_itwin_200": {"executed_lines": [123, 124, 125, 126, 127, 130, 131, 132, 133], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_update_data_model_dump_error": {"executed_lines": [137, 138, 139, 140, 141, 142, 143], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_update_data_ill_formed": {"executed_lines": [147, 148, 151, 152, 153, 154], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_update_data_401": {"executed_lines": [158, 159, 164, 165, 166, 167], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_update_data_200": {"executed_lines": [171, 172, 173, 174, 178, 179, 180, 181, 182], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_delete_data_ill_formed": {"executed_lines": [187, 188, 191, 192, 193], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_delete_data_401": {"executed_lines": [197, 198, 203, 204, 205], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_delete_data_204": {"executed_lines": [209, 210, 213, 214, 215], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_read_access_ill_formed": {"executed_lines": [220, 221, 222, 225, 226, 227], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_read_access_401": {"executed_lines": [231, 232, 237, 238, 239], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_read_access_200": {"executed_lines": [243, 244, 245, 246, 249, 250, 251], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_write_access_ill_formed": {"executed_lines": [256, 257, 258, 261, 262, 263], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_write_access_401": {"executed_lines": [267, 268, 273, 274, 275, 276], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_write_access_200": {"executed_lines": [280, 281, 282, 283, 286, 287, 288], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_list_data_ill_formed": {"executed_lines": [293, 297, 298, 299, 300, 301, 302], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_list_data_422": {"executed_lines": [306, 307, 308, 312, 313, 314, 315, 316, 317], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_list_data_minimal_200": {"executed_lines": [321, 322, 323, 327, 328, 329, 330, 331, 332, 333, 334], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_list_data_representation_200": {"executed_lines": [338, 339, 340, 344, 345, 346, 347, 348, 349, 350, 351], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_get_continuation_token_with_null_next": {"executed_lines": [354, 364, 365], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_reality_data_filter_serialization_matches_api_doc": {"executed_lines": [368, 369, 370, 389, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_move_data_ill_formed": {"executed_lines": [405, 406, 407, 410, 411, 412], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_move_data_401": {"executed_lines": [416, 417, 418, 423, 424, 425], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData.test_move_data_204": {"executed_lines": [429, 430, 431, 434, 435, 436, 437], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 7, 8, 9, 10, 11, 12, 15, 16, 17, 21, 23, 29, 33, 41, 42, 50, 51, 61, 62, 74, 75, 83, 84, 98, 99, 109, 110, 121, 122, 136, 145, 146, 156, 157, 169, 170, 185, 186, 195, 196, 207, 208, 218, 219, 229, 230, 241, 242, 254, 255, 265, 266, 278, 279, 291, 292, 304, 305, 319, 320, 336, 337, 353, 367, 403, 404, 414, 415, 427, 428], "summary": {"covered_lines": 73, "num_statements": 73, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"FakeTokenFactory": {"executed_lines": [18], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestRealityData": {"executed_lines": [24, 25, 26, 27, 30, 34, 35, 36, 37, 38, 39, 43, 44, 46, 47, 48, 52, 53, 57, 58, 59, 63, 64, 65, 66, 69, 70, 71, 76, 77, 79, 80, 81, 85, 86, 93, 94, 95, 96, 100, 101, 105, 106, 107, 111, 112, 113, 114, 116, 117, 118, 119, 123, 124, 125, 126, 127, 130, 131, 132, 133, 137, 138, 139, 140, 141, 142, 143, 147, 148, 151, 152, 153, 154, 158, 159, 164, 165, 166, 167, 171, 172, 173, 174, 178, 179, 180, 181, 182, 187, 188, 191, 192, 193, 197, 198, 203, 204, 205, 209, 210, 213, 214, 215, 220, 221, 222, 225, 226, 227, 231, 232, 237, 238, 239, 243, 244, 245, 246, 249, 250, 251, 256, 257, 258, 261, 262, 263, 267, 268, 273, 274, 275, 276, 280, 281, 282, 283, 286, 287, 288, 293, 297, 298, 299, 300, 301, 302, 306, 307, 308, 312, 313, 314, 315, 316, 317, 321, 322, 323, 327, 328, 329, 330, 331, 332, 333, 334, 338, 339, 340, 344, 345, 346, 347, 348, 349, 350, 351, 354, 364, 365, 368, 369, 370, 389, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 405, 406, 407, 410, 411, 412, 416, 417, 418, 423, 424, 425, 429, 430, 431, 434, 435, 436, 437], "summary": {"covered_lines": 216, "num_statements": 216, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 7, 8, 9, 10, 11, 12, 15, 16, 17, 21, 23, 29, 33, 41, 42, 50, 51, 61, 62, 74, 75, 83, 84, 98, 99, 109, 110, 121, 122, 136, 145, 146, 156, 157, 169, 170, 185, 186, 195, 196, 207, 208, 218, 219, 229, 230, 241, 242, 254, 255, 265, 266, 278, 279, 291, 292, 304, 305, 319, 320, 336, 337, 353, 367, 403, 404, 414, 415, 427, 428], "summary": {"covered_lines": 73, "num_statements": 73, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_specifications.py": {"executed_lines": [1, 2, 3, 6, 8, 9, 15, 16, 18, 24, 25, 27, 28, 29, 31, 32, 33, 35, 36, 37, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 53, 55, 56, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 77], "summary": {"covered_lines": 50, "num_statements": 50, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"TestSpecifications.test_export_options_parsing": {"executed_lines": [9, 15, 16, 18, 24, 25, 27, 28, 29, 31, 32, 33, 35, 36, 37, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 53], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestSpecifications.test_export_options_from_object": {"executed_lines": [56], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestSpecifications.test_validate_options_unsupported_format_raises_value_error": {"executed_lines": [59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 77], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 8, 55, 58], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"TestSpecifications": {"executed_lines": [9, 15, 16, 18, 24, 25, 27, 28, 29, 31, 32, 33, 35, 36, 37, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 53, 56, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 77], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 6, 8, 55, 58], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "tests\\test_version.py": {"executed_lines": [1, 2, 3, 4, 9, 13, 14, 15, 16, 18, 19, 20, 22, 23, 24, 25], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"TestVersion.test_version": {"executed_lines": [15, 16], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestVersion.test_version_fails": {"executed_lines": [19, 20, 22, 23, 24, 25], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 9, 13, 14, 18], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"TestVersion": {"executed_lines": [15, 16, 19, 20, 22, 23, 24, 25], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 9, 13, 14, 18], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}}, "totals": {"covered_lines": 3640, "num_statements": 3647, "percent_covered": 99.8080614203455, "percent_covered_display": "99", "missing_lines": 7, "excluded_lines": 0}} \ No newline at end of file From 5cd6ee00893b26a57f99391ee2c3008cf8a63b5f Mon Sep 17 00:00:00 2001 From: dbiguenet <110406974+dbiguenet@users.noreply.github.com> Date: Mon, 8 Jun 2026 17:07:54 +0200 Subject: [PATCH 15/19] Update index.node.ts --- typescript/packages/reality-capture/src/index.node.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/typescript/packages/reality-capture/src/index.node.ts b/typescript/packages/reality-capture/src/index.node.ts index c41ea8a8..a74ce20f 100644 --- a/typescript/packages/reality-capture/src/index.node.ts +++ b/typescript/packages/reality-capture/src/index.node.ts @@ -34,3 +34,9 @@ export * from "./specifications/tiling"; export * from "./specifications/training"; export * from "./specifications/touchup"; export * from "./specifications/water_constraints"; +//export * from "./specifications/cs_tiler" +export * from "./specifications/mesh_sampling" +export * from "./specifications/point_cloud_conversion" +export * from "./specifications/point_cloud_optimization" +export * from "./specifications/tile_map_optimization" +export * from "./specifications/vector_optimization" From 5126d77151b0057555bc59289ad43a3ab8070594 Mon Sep 17 00:00:00 2001 From: dbiguenet <110406974+dbiguenet@users.noreply.github.com> Date: Mon, 8 Jun 2026 17:08:45 +0200 Subject: [PATCH 16/19] Update index.web.ts --- typescript/packages/reality-capture/src/index.web.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/typescript/packages/reality-capture/src/index.web.ts b/typescript/packages/reality-capture/src/index.web.ts index c539280a..b554ef69 100644 --- a/typescript/packages/reality-capture/src/index.web.ts +++ b/typescript/packages/reality-capture/src/index.web.ts @@ -34,3 +34,9 @@ export * from "./specifications/tiling"; export * from "./specifications/training"; export * from "./specifications/touchup"; export * from "./specifications/water_constraints"; +//export * from "./specifications/cs_tiler" +export * from "./specifications/mesh_sampling" +export * from "./specifications/point_cloud_conversion" +export * from "./specifications/point_cloud_optimization" +export * from "./specifications/tile_map_optimization" +export * from "./specifications/vector_optimization" From e88242e146661d44ca9115b1d01cc0b91b069d90 Mon Sep 17 00:00:00 2001 From: dbiguenet <110406974+dbiguenet@users.noreply.github.com> Date: Mon, 8 Jun 2026 17:15:10 +0200 Subject: [PATCH 17/19] Update index.node.ts --- .../packages/reality-capture/src/index.node.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/typescript/packages/reality-capture/src/index.node.ts b/typescript/packages/reality-capture/src/index.node.ts index a74ce20f..5f899c59 100644 --- a/typescript/packages/reality-capture/src/index.node.ts +++ b/typescript/packages/reality-capture/src/index.node.ts @@ -34,9 +34,9 @@ export * from "./specifications/tiling"; export * from "./specifications/training"; export * from "./specifications/touchup"; export * from "./specifications/water_constraints"; -//export * from "./specifications/cs_tiler" -export * from "./specifications/mesh_sampling" -export * from "./specifications/point_cloud_conversion" -export * from "./specifications/point_cloud_optimization" -export * from "./specifications/tile_map_optimization" -export * from "./specifications/vector_optimization" +//export * from "./specifications/cs_tiler"; +export * from "./specifications/mesh_sampling"; +export * from "./specifications/point_cloud_conversion"; +export * from "./specifications/point_cloud_optimization"; +export * from "./specifications/tile_map_optimization"; +export * from "./specifications/vector_optimization"; From d1f2a7b912584ed8789e5778d1a3a6499378b92a Mon Sep 17 00:00:00 2001 From: dbiguenet <110406974+dbiguenet@users.noreply.github.com> Date: Mon, 8 Jun 2026 17:15:24 +0200 Subject: [PATCH 18/19] Update index.web.ts --- typescript/packages/reality-capture/src/index.web.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/typescript/packages/reality-capture/src/index.web.ts b/typescript/packages/reality-capture/src/index.web.ts index b554ef69..28cedde7 100644 --- a/typescript/packages/reality-capture/src/index.web.ts +++ b/typescript/packages/reality-capture/src/index.web.ts @@ -34,9 +34,9 @@ export * from "./specifications/tiling"; export * from "./specifications/training"; export * from "./specifications/touchup"; export * from "./specifications/water_constraints"; -//export * from "./specifications/cs_tiler" -export * from "./specifications/mesh_sampling" -export * from "./specifications/point_cloud_conversion" -export * from "./specifications/point_cloud_optimization" -export * from "./specifications/tile_map_optimization" +//export * from "./specifications/cs_tiler"; +export * from "./specifications/mesh_sampling"; +export * from "./specifications/point_cloud_conversion"; +export * from "./specifications/point_cloud_optimization"; +export * from "./specifications/tile_map_optimization"; export * from "./specifications/vector_optimization" From d819fab2743deb23c7004a4fb12c2441a884111b Mon Sep 17 00:00:00 2001 From: dbiguenet <110406974+dbiguenet@users.noreply.github.com> Date: Mon, 8 Jun 2026 17:17:12 +0200 Subject: [PATCH 19/19] Update index.web.ts --- typescript/packages/reality-capture/src/index.web.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/typescript/packages/reality-capture/src/index.web.ts b/typescript/packages/reality-capture/src/index.web.ts index 28cedde7..8a737ab4 100644 --- a/typescript/packages/reality-capture/src/index.web.ts +++ b/typescript/packages/reality-capture/src/index.web.ts @@ -39,4 +39,4 @@ export * from "./specifications/mesh_sampling"; export * from "./specifications/point_cloud_conversion"; export * from "./specifications/point_cloud_optimization"; export * from "./specifications/tile_map_optimization"; -export * from "./specifications/vector_optimization" +export * from "./specifications/vector_optimization";