All notable changes to the cuvis Python wrapper are documented here.
The format follows Keep a Changelog.
Entry wording follows the conventions in CONTRIBUTING.md - every API entry names the fully qualified symbol first, then states the change with one of the fixed predicates.
Versions are MAJOR.MINOR.PATCH.TWEAK.
MAJOR.MINOR.PATCH is the cuvis SDK release the wrapper targets; TWEAK counts wrapper-only revisions against that same SDK.
See CONTRIBUTING.md for the full scheme.
Entries for versions released before this file existed were reconstructed from the published PyPI artifacts and from an AST-level diff of the public cuvis API surface between the corresponding commits.
Pre-releases (b*, rc*) are not listed.
CI-.github/workflows/ci.ymlruns the test suite and a lint job enforcingruff checkandruff format --checkon every pull request and on every push todevelopandmain.CI-.github/workflows/release.ymlis driven byv*.*.*.*tags: it validates the tag againstpyproject.tomland against this file, builds, publishes to TestPyPI, and publishes to PyPI plus a GitHub Release after manual approval.CI-scripts/check_changelog.pyvalidates this file's structure (header format, allowed section names, descending versions) and the tag/version/changelog agreement at release time.CONTRIBUTING.md- documents the branch model, the version scheme, the changelog conventions and the release checklist.pyproject.toml-devextra pinningruff==0.16.3, plus[tool.ruff]configuration selecting theE4,E7,E9andFrule sets.
- Whole tree reformatted with
ruff format; no behaviour change. README.md- documents the version scheme, and lists Python 3.14 among the supported interpreters aspyproject.tomlalready did.prebuild.py- writescuvis/git-hash.txtinstead ofgit-hash.txtat the repository root, so the file lands inside the package that declares it as package data.cuvis.FileWriteSettings.GeneralExportSettings.__repr__,cuvis.FileWriteSettings.ViewerSettings.__repr__- the docstring that sat below the nested helper, where it was a dead expression rather than a docstring, moved to the top of the method.
CI-.github/workflows/tests.ymland.github/workflows/publish_version.ymlremoved; their jobs moved intoci.ymlandrelease.yml.git-hash.txtat the repository root - removed; the file is generated intocuvis/byprebuild.pyand is no longer tracked.- Unused imports and locals dropped from
cuvis.AcquisitionContext,cuvis.Export,cuvis.General,cuvis.Measurement,cuvis.Viewer,cuvis.Worker,cuvis.cuvis_aux,cuvis.docand the test modules; no public name was removed.
cuvis.General.wrapper_version- raisedFileNotFoundErroron every pip-installed release since 3.3.1, because it readgit-hash.txtfrom the directory above the package while no distribution ever shipped that file. The hash is now read fromcuvis/git-hash.txt, which the wheel and the sdist do ship, and a missing file degrades to reporting the version alone instead of raising.tests/test_general.py-test_wrapper_versionasserted the literal3.5.3, so it had to be edited on every SDK bump and passed only because an editable install exposed the untracked rootgit-hash.txt. It now compares against the installed distribution version.
Targets cuvis SDK 3.5.3. Wrapper-only revision.
cuvis.cube_utils.ImageData.spectrum- new property returning the single spectrum of a point-spectrometer measurement as a 1-Dnp.ndarray.cuvis.cube_utils.ImageData.is_spectrum- new property,Truewhen the buffer is a1 x 1 x Npoint spectrum rather than a cube.cuvis.cube_utils.ImageData.shape- new property returning the buffer shape as a tuple, orNonewhen no buffer is attached.cuvis.cube_utils.ImageData.dtype- new property returning the numpy dtype of the underlying buffer.cuvis.cube_utils.ImageData.__array__- new method, sonp.asarray(image_data)and any numpy call accepting an array-like now work directly.cuvis.cube_utils.ImageData.__array_ufunc__- new method, so numpy ufuncs applied to anImageDatareturn plainnp.ndarrayresults.cuvis.cube_utils.ImageData.__repr__- new method reporting shape, dtype and spectrum-ness.
cuvis.cube_utils.ImageData.from_array- parameterswidth,heightandchannelsgained the defaultNone; they are inferred from the array shape when omitted.cuvis.cube_utils.ImageData.__getitem__- return type changed fromUnion[np.ndarray, tuple[np.ndarray, np.ndarray], object]toUnion[np.ndarray, tuple, ImageData, np.generic]; band slices now come back wrapped asImageDataand scalar reads as numpy scalars.
cuvis.cube_utils.ImageData- reading a qmini point spectrum failed because the1 x 1 x Nbuffer shape was not handled in the indexing path.cuvis.cube_utils.ImageData- comparing against a scalar (cube > 500) raisedTypeError; comparisons now dispatch through the numpy protocol and return a boolean array.
Targets cuvis SDK 3.5.3. Wrapper-only revision.
cuvis.FileWriteSettings.SaveArgs.allow_overwrite- new field, defaultFalse, mapping to the SDK'sallow_overwritesave flag.
cuvis.FileWriteSettings.PanSharpeningSettings.spectra_multiplier- type changed frominttofloat, matching the SDK field.cuvis.cuvis_aux.SensorInfo.temperature- type changed frominttofloat, matching the SDK field.
cuvis.FileWriteSettings.SaveArgs.allow_fragmentation- removed; the field never mapped to an SDK flag of that name. Useallow_overwrite, orSaveArgs.merge_modefor fragmentation behaviour.
cuvis.FileWriteSettings.SaveArgs-pan_scalewas coerced withfloat()on the way into the SDK struct although the SDK expects the value unconverted; the redundant cast was removed.
Targets cuvis SDK 3.5.3. SDK synchronisation release; the wrapper's public API is unchanged from 3.5.1.0.
README.md- the link to the cuvis C SDK was made more prominent.
Targets cuvis SDK 3.5.1. SDK synchronisation release; the wrapper's public API is unchanged from 3.5.0.2.
CI-.github/workflows/publish_version.yml, a manually dispatched PyPI/TestPyPI publish workflow restricted to repository admins.
Targets cuvis SDK 3.5.0. Wrapper-only revision.
tests/- first unit-test suite for the wrapper, covering acquisition, cube utilities, export, general, measurement, processing context, session file and worker.
cuvis.FileWriteSettings.WorkerSettings.input_queue_size- default changed from0to10;0disabled the input queue entirely, which is never what a caller constructingWorkerSettings()wants.
cuvis.FileWriteSettings.ViewerSettings.__post_init__- constructingViewerSettings()without arguments took the deprecation path for the pan-sharpening keywords, because a value equal to the class default was indistinguishable from an explicitly passed one. Defaults are now compared against the class attribute and skipped.
Targets cuvis SDK 3.5.0. Wrapper-only revision.
cuvis.FileWriteSettings.GeneralExportSettings,cuvis.FileWriteSettings.ViewerSettings-channel_selection,spectra_multiplier,pan_scale,pan_sharpening_interpolation_type,pan_sharpening_algorithm,pre_pan_sharpen_cubeandadd_pancould no longer be passed to the constructor after 3.5.0 turned them into properties. They are accepted again as deprecatedInitVarkeywords that forward topan_sharpening.
Targets cuvis SDK 3.5.0.
cuvis.FileWriteSettings.PanSharpeningSettings- new dataclass grouping every pan-sharpening option (channel_selection,spectra_multiplier,pan_scale,pan_sharpening_interpolation_type,pan_sharpening_algorithm,pre_pan_sharpen_cube,add_pan).cuvis.FileWriteSettings.GeneralExportSettings.pan_sharpening,cuvis.FileWriteSettings.ViewerSettings.pan_sharpening- new field holding a default-constructedPanSharpeningSettings.cuvis.cuvis_types.SessionMergeMode- new enum with membersDefault = 0,Fragmentation = 1,Merge = 2.cuvis.FileWriteSettings.SaveArgs.merge_mode- new field, defaultSessionMergeMode.Default.cuvis.cuvis_types.PanSharpeningAlgorithm.PCAFusion- new enum member with value4.cuvis.AcquisitionContext.AcquisitionContext.dead_pixel_correction- new property setter.cuvis.AcquisitionContext.AcquisitionContext.dead_pixel_correction_available- new read-only property.
cuvis.FileWriteSettings.GeneralExportSettings.channel_selection,.spectra_multiplier,.pan_scale,.pan_sharpening_interpolation_type,.pan_sharpening_algorithm,.pre_pan_sharpen_cube,.add_pan- fields became properties with setters that delegate topan_sharpening.cuvis.FileWriteSettings.ViewerSettings.channel_selection,.spectra_multiplier,.pan_scale,.pan_sharpening_interpolation_type,.pan_sharpening_algorithm,.pre_pan_sharpen_cube,.add_pan- fields became properties with setters that delegate topan_sharpening.cuvis.ProcessingContext.ProcessingContext.__init__- new parameterload_references: bool = True, so reference loading can be skipped explicitly.cuvis.General.version- version reporting switched frompkg_resourcestoimportlib.metadata.version.pyproject.toml-cuvis-ilrequirement raised from>3.3.1to>=3.5.0,<3.6.0.
cuvis.cuvis_types.PanSharpeningAlgorithm.AlphaBlendOverlay- removed; the SDK dropped the algorithm. Value4is nowPCAFusion.cuvis.FileWriteSettings.ViewerSettings.blend_opacity- removed together withAlphaBlendOverlay.cuvis.FileWriteSettings.SaveArgs.allow_overwrite- removed in favour ofSaveArgs.merge_mode. Reinstated in 3.5.3.1.
cuvis- dead-pixel-correction and pan-sharpening wrapper code wrote wrong values into the SDK structs.
Targets cuvis SDK 3.4.1.
Wrapper-only revision, released from release/v3.4 after the 3.5 line had already opened.
The wrapper's public API is unchanged from 3.4.1.
cuvis.General.version- version reporting switched frompkg_resourcestoimportlib.metadata.version, so the wrapper no longer depends on the removedpkg_resourcesAPI. Backport of the same change made onmainfor 3.5.0.
Targets cuvis SDK 3.4.1.
cuvis.Viewer.Viewer.apply- return type changed fromdict[str, ImageData]toUnion[dict[str, ImageData], ImageData]; a single-view configuration returns the image directly.pyproject.toml-cuvis-ilrequirement raised from>3.3.1to>=3.4.0,<3.5.0.
Targets cuvis SDK 3.4.0. Packaging-only re-release.
pyproject.toml-cuvis-ilrequirement capped at<3.5.0, so a 3.4 wrapper install cannot pull a 3.5 interface layer.
Targets cuvis SDK 3.4.0.
cuvis.cuvis_aux.ComponentInfo- new dataclass with fieldsdisplay_name,pixel_format,sensor_info,typeanduser_field. Replacescuvis.General.ComponentInfo.cuvis.cuvis_aux.CalibrationInfo.cube_width,.cube_height,.cube_channels,.cube_wavelengths- new fields exposing the calibrated cube geometry.cuvis.cuvis_aux.SensorInfo.integration_time- new field of typefloat.cuvis.FileWriteSettings.ViewExportSettings.pan_failback,cuvis.FileWriteSettings.ViewerSettings.pan_failback- new field, defaultTrue.cuvis.General.init- new parameterlogfile_name: Optional[str] = None, making the log file name configurable.- The settings directory can be supplied through an environment variable instead of only through
cuvis.General.init(settings_path=...).
cuvis.General.init- parameterglobal_logleveltype changed frominttoUnion[int, str], so level names are accepted.cuvis.General.set_log_level- parameterlvltype changed from unannotated toUnion[int, str].
cuvis.General.init- parameterlog_pathremoved; uselogfile_name.cuvis.General.ComponentInfo- removed; moved tocuvis.cuvis_aux.ComponentInfo.cuvis.AcquisitionContext.AcquisitionContext.binning- property setter removed; the SDK no longer exposes a binning toggle.cuvis.AcquisitionContext.AcquisitionContext.set_binning_async- removed together with thebinningsetter.cuvis.cuvis_aux.SensorInfo.binning- removed together with thebinningsetter.
cuvis- type annotations that were invalid on Python 3.9 corrected, restoring the declaredrequires-python = ">=3.9"floor.cuvis.Viewer.Viewer- incorrect return annotation corrected.
Targets cuvis SDK 3.3.3.
cuvis.Measurement.Measurement.name,.comment- fields became properties with setters, replacingset_nameandset_comment.cuvis.Measurement.Measurement.assembly,.averages,.capture_time,.distance,.factory_calibration,.frame_id,.integration_time,.measurement_flags,.path,.processing_mode,.product_name,.serial_number,.session_info- fields became read-only properties, so the values are read from the SDK on access instead of being snapshotted at construction.
cuvis.Measurement.Measurement.set_name- removed; assign to thenameproperty.cuvis.Measurement.Measurement.set_comment- removed; assign to thecommentproperty.
Targets cuvis SDK 3.3.2. The wrapper's public API is unchanged from 3.3.1.
- Build metadata moved from
setup.pytopyproject.toml; the package is built with the setuptools PEP 517 backend.
Targets cuvis SDK 3.3.1.
cuvis.cube_utils.ImageData- new class, moved out ofcuvis.Measurement.cuvis.cube_utils.ImageData.from_array- new classmethod building anImageDatafrom annp.ndarraypluswidth,height,channelsand optionalwavelength.cuvis.cube_utils.ImageData.to_numpy- new method returning the buffer as annp.ndarray.cuvis.Measurement.Measurement.cube- new property returning the cube asImageData.cuvis.SessionFile.SessionFile.thumbnail- new property returning the thumbnail asImageData, replacingget_thumbnail.cuvis.Calibration.Calibration.info- new property returning aCalibrationInfo, replacingget_info.cuvis.AcquisitionContext.AcquisitionContext.ready- new read-only property.cuvis.AcquisitionContext.AcquisitionContext.register_ready_callback- new method takingCallable[None, Awaitable[None]].cuvis.AcquisitionContext.AcquisitionContext.reset_ready_callback- new method clearing the registered callback.cuvis.FileWriteSettings.ViewerSettings- new dataclass forViewerconfiguration, withcomplete,blend_opacity,pan_scale,pan_sharpening_algorithm,pan_sharpening_interpolation_type,pre_pan_sharpen_cubeand auserpluginsetter.cuvis.General.sdk_version- new function returning the loaded SDK version.cuvis.General.wrapper_version- new function returning the wrapper's own version, distinct from the SDK version.
cuvis.Viewer.Viewer.__init__- parametersettingstype changed fromUnion[int, ViewExportSettings]toUnion[int, ViewerSettings].cuvis.AcquisitionContext.AcquisitionContext.capture- new parameterto_interal = False, and the return type changed fromAsyncMesutoOptional[AsyncMesu].cuvis.Measurement.Measurement.__init__- parameterbasetype changed fromUnion[int, str]toUnion[int, str, Path].cuvis.SessionFile.SessionFile.get_measurement- parameterframeNogained the default0.cuvis.Async.AsyncMesu.get,cuvis.Viewer.Viewer.apply,cuvis.cuvis_aux.Bitset.strings- return annotations switched fromtyping.Tuple/Dict/Listto the builtin generics.
cuvis.Measurement.ImageData- removed; moved tocuvis.cube_utils.ImageData.cuvis.SessionFile.SessionFile.get_thumbnail- removed; use thethumbnailproperty.cuvis.Calibration.Calibration.get_info- removed; use theinfoproperty, which returnsCalibrationInfoinstead of the rawcuvis_calibration_info_t.
Targets cuvis SDK 3.3.0. Packaging-only re-release; no source change is recorded in the repository for this version.
Targets cuvis SDK 3.3.0.
cuvis.General.init,cuvis.General.shutdown,cuvis.General.set_log_level,cuvis.General.version- new module-level functions replacing theGeneralclass.cuvis.cuvis_aux.WorkerState- new dataclass with fieldsframesInQueue,hasAcquisitionContext,isProcessing,measurementsBeingProcessed,measurementsInQueue,resultsInQueueandsessionFilesInQueue.cuvis.Worker.Worker.state- new property returning aWorkerState.cuvis.Worker.Worker.start_processing,.stop_processing,.drop_all_queued- new methods giving explicit control over the processing loop.cuvis.Worker.Worker.is_processing,.is_processing_mandatory,.threads_busy- new read-only properties.cuvis.Worker.Worker.can_drop_results,.can_skip_measurements,.can_skip_supplementary- new read-only properties replacing thedrop_behavioursetter.cuvis.Worker.Worker.input_queue_limit,.mandatory_queue_limit,.output_queue_limit,.supplementary_queue_limit- new read-only properties replacing thequeue_limitssetter.cuvis.Worker.Worker.ingest_session_file- new method takingsession: SessionFileandframe_selection: str = "all", replacingset_session_file.cuvis.FileWriteSettings.WorkerSettings.input_queue_size,.mandatory_queue_size,.output_queue_size,.supplementary_queue_size- new fields replacingsoft_limitandhard_limit.cuvis.FileWriteSettings.WorkerSettings.can_drop_results,.can_skip_measurements,.can_skip_supplementary_steps- new fields replacingcan_dropandkeep_out_of_sequence.cuvis.cuvis_aux.CalibrationInfo- new dataclass with fieldsannotation_name,calibration_date,file_path,model_name,serial_noandunique_id.cuvis.cuvis_aux.SensorInfo.width,.height,.pixel_format,.raw_frame_id,.binning- new fields.cuvis.Measurement.Measurement.averages,.distance,.frame_id- new fields.cuvis.Measurement.Measurement.thumbnail- new property, replacingget_thumbnail.cuvis.SessionFile.SessionFile.get_thumbnail- new method.cuvis.AcquisitionContext.AcquisitionContext.binning- new property setter, replacingpreview_mode.cuvis.AcquisitionContext.AcquisitionContext.set_binning_async- new method returningAsync.cuvis.AcquisitionContext.Component.pixel_format- new property setter.cuvis.AcquisitionContext.Component.available_pixel_formats- new read-only property returninglist[str].cuvis.Calibration.Calibration.get_info- new method returningcuvis_calibration_info_t.cuvis.Export.Exporter.flush- new method.cuvis.FileWriteSettings.SaveArgs.full_export- new field, defaultFalse.cuvis.FileWriteSettings.GeneralExportSettings.pre_pan_sharpen_cube- new field, defaultFalse.cuvis.doc.copydoc- new decorator copying a docstring from another callable.
cuvis.AcquisitionContext.Component.gain,.integration_time_factor- type changed frominttofloat, and both gained setters.cuvis.AcquisitionContext.Component.temperature- return type changed frominttofloat.cuvis.Worker.Worker.query_session_progress- changed from a method to a read-only property returningfloat.cuvis.FileWriteSettings.GeneralExportSettings.spectra_multiplier- type changed fromfloattoint, and the default from1.0to1.
cuvis.General.General- removed; replaced by module-levelinit,shutdown,set_log_levelandversion.cuvis.AcquisitionContext.AcquisitionContext.preview_mode- property setter removed; usebinning.cuvis.AcquisitionContext.AcquisitionContext.set_preview_mode_async- removed; useset_binning_async.cuvis.Worker.Worker.set_session_file- removed; useingest_session_file.cuvis.Worker.Worker.drop_behaviour- property setter removed; configure throughWorkerSettingsand read thecan_*properties.cuvis.Worker.Worker.queue_limits- property setter removed; configure throughWorkerSettingsand read the*_queue_limitproperties.cuvis.Measurement.Measurement.get_thumbnail- removed; use thethumbnailproperty.cuvis.Measurement.Measurement.get_data_info- removed.cuvis.FileWriteSettings.WorkerSettings.soft_limit,.hard_limit,.poll_intervall,.worker_count,.can_drop,.keep_out_of_sequence- removed; replaced by the*_queue_sizeandcan_*fields.
Targets cuvis SDK 3.2.1. First release covered by this changelog; the wrapper's history before this point is not reconstructed here.