Skip to main content

Typing stubs for NVIDIA DeepStream Python Bindings

Project description

Typing stubs for NVIDIA DeepStream Python Bindings

This project provides type stubs for pyds to improve the support of these important bindings in IDEs.

These are generated by pybind11-stubgen and further post-processed. For the post-processing steps, check out the Post-Processing Chapter

With the usage of this project, you agree to the license terms, found in the License chapter. This project is not affiliated with NVIDIA or the authors and maintainer of the pyds repository. It is the result of the need for type hints for a simpler and more stable implementation of DeepStream pipelines in Python.

Index

Installation

This library can be easily installed with pip:

pip install pyds-stubs

Usage

There is no magic, just only import pyds as you would normally do. This package is intended to be used during the development and can be omitted in runtime environments.

Versioning

The stub versions matches the versions of pyds. For example, stub version 1.1.0 fits to pyds version 1.1.0. If any fix has to be applied, the fourth position would be incremented. So the first fix of 1.1.0 results in 1.1.0.1.

Please pin your version directly or limit it upper-wise like:

pyds-stubs>=1.1.0,<1.1.1

Development

Installation of Prerequisites

pip install -r requirements/dev/requirements.txt
  • Installation of requirements:
pip install -r requirements/library/requirements.txt

Build wheel

python3 -m build

Generation

The stubs are generated by pybind11-stubgen (2.5.5). It is contained in the development requirements. The stubs can be generated with the following command, if it is executed in the environment, where pyds is installed.

pybind11-stubgen pyds

Post-Processing

For correct usage, the generated stubs are post-processed. Following steps are applied:

  • Format with ruff
  • add generic class for capsule with information about the class of the object.
  • remove class GList and add generic GList class with information about the class of the data.
  • cast functions with capsule datatype: capsule is replaced by capsule[class] where class is the target class.
  • array datatype: Replace with numpy.ndarray
  • numpy.ndarray[float32]: Replace with NDArray[numpy.float32] with from numpy.typing import NDArray
  • Returntype of eglImage property of NvBufSurfaceMappedAddr: typing.Any instead of capsule
  • Returntype of dataPtr property of NvBufSurfaceParams: typing.Any instead of capsule
  • Datatype of batch_meta of NvDsBaseMeta: NvDsBatchMeta instead of _NvDsBatchMeta
  • Datatype of uContext of NvDsBaseMeta: typing.Any instead of capsule
  • Datatype of batch_user_meta_list of NvDsBatchMeta: typing.Optional[GList[NvDsUserMeta]] instead of GList
  • Datatype of frame_meta_list of NvDsBatchMeta: typing.Optional[GList[NvDsFrameMeta]] instead of GList
  • Datatype of meta_mutexof NvDsBatchMeta: GLib.RecMutex instead of _GRecMutex with from gi.repository import GLib
  • Datatype of label_info_list of NvDsClassifierMeta: typing.Optional[GList[NvDsLabelInfo]] instead of GList
  • Datatype of extMsg of NvDsEventMsgMeta: typing.Any instead of capsule
  • Datatype of mask of NvDsFaceObjectWithExt: typing.Optional[GList[typing.Any]] instead of GList
  • Datatype of display_meta_list of NvDsFrameMeta: typing.Optional[GList[NvDsDisplayMeta]] instead of GList
  • Datatype of frame_user_meta_list of NvDsFrameMeta: typing.Optional[GList[NvDsUserMeta]] instead of GList
  • Datatype of obj_meta_list of NvDsFrameMeta: typing.Optional[GList[NvDsObjectMeta]] instead of GList
  • Returntype of buffer property of NvDsInferLayerInfo: typing.Any instead of capsule
  • Returntype of priv_data property of NvDsInferSegmentationMeta: typing.Any instead of capsule
  • Returntype of out_buf_ptrs_dev property of NvDsInferTensorMeta: typing.Any instead of capsule
  • Returntype of out_buf_ptrs_host property of NvDsInferTensorMeta: typing.Any instead of capsule
  • Returntype of priv_data property of NvDsInferTensorMeta: typing.Any instead of capsule
  • Datatype of meta of NvDsMeta: Gst.Meta instead of _GstMeta with from gi.repository import Gst
  • Datatype of meta_data of NvDsMeta: typing.Any instead of capsule
  • Datatype of user_data of NvDsMeta: typing.Any instead of capsule
  • Add NvDsMetaList as an alias of typing.Optional[GList[NvDsMeta]]
  • Datatype of empty_list of NvDsMetaPool: NvDsMetaList instead of GList
  • Datatype of full_list of NvDsMetaPool: NvDsMetaList instead of GList
  • Datatype of classifier_meta_list of NvDsObjectMeta: typing.Optional[GList[NvDsClassifierMeta]] instead of GList
  • Datatype of mask_params of NvDsObjectMeta: typing.Any instead of _NvOSD_MaskParams
  • Datatype of obj_user_meta_list of NvDsObjectMeta: typing.Optional[GList[NvDsUserMeta]] instead of GList
  • Datatype of data of NvDsOpticalFlowMeta: typing.Any instead of capsule
  • Datatype of priv of NvDsOpticalFlowMeta: typing.Any instead of capsule
  • Datatype of reserved of NvDsOpticalFlowMeta: typing.Any instead of capsule
  • Datatype of mask of NvDsPersonObjectExt: typing.Optional[GList[typing.Any]] instead of GList
  • Datatype of payload of NvDsPayload: typing.Any instead of capsule
  • Datatype of user_meta_data of NvDsUserMeta: typing.Any instead of capsule
  • Datatype of mask of NvDsVehicleObjectExt: typing.Optional[GList[typing.Any]] instead of GList
  • Datatype of text of RectDim: typing.Any instead of capsule
  • Rename dmabuf to dmabuf_fd of NvBufSurfaceFromFd
  • Datatype of buffer of NvBufSurfaceFromFd: capsule[NvBufSurface] instead of capsule
  • Datatype of buffer of free_gbuffer: typing.Any instead of capsule
  • Datatype of arg0 of get_detections: typing.Any instead of capsule
  • Datatype of arg0 of get_nvds_LayerInfo: typing.Any instead of capsule
  • Datatype of data of get_optical_flow_vectors: capsule[NvDsOpticalFlowMeta] instead of capsule
  • Rename data to of_meta of get_optical_flow_vectors
  • Datatype of ptr of get_ptr: typing.Any instead of capsule
  • Datatype of data of get_segmentation_masks: capsule[NvDsInferSegmentationMeta] instead of capsule
  • Datatype of arg0 of glist_get_nvds_Surface_Params: typing.Any instead of capsule
  • Datatype of arg0 of glist_get_nvds_batch_meta: typing.Any instead of capsule
  • Datatype of arg0 of glist_get_nvds_classifier_meta: typing.Any instead of capsule
  • Datatype of arg0 of glist_get_nvds_display_meta: typing.Any instead of capsule
  • Datatype of arg0 of glist_get_nvds_event_msg_meta: typing.Any instead of capsule
  • Datatype of arg0 of glist_get_nvds_frame_meta: typing.Any instead of capsule
  • Datatype of arg0 of glist_get_nvds_label_info: typing.Any instead of capsule
  • Datatype of arg0 of glist_get_nvds_object_meta: typing.Any instead of capsule
  • Datatype of arg0 of glist_get_nvds_person_object: typing.Any instead of capsule
  • Datatype of arg0 of glist_get_nvds_tensor_meta: typing.Any instead of capsule
  • Datatype of arg0 of glist_get_nvds_user_meta: typing.Any instead of capsule
  • Datatype of arg0 of glist_get_nvds_vehicle_object: typing.Any instead of capsule
  • Datatype of buffer of gst_buffer_add_nvds_meta: Gst.Buffer instead of _GstBuffer
  • Datatype of meta_data of gst_buffer_add_nvds_meta: typing.Any instead of capsule
  • Datatype of user_data of gst_buffer_add_nvds_meta: typing.Any instead of capsule
  • Returntype of gst_buffer_add_nvds_meta: NvDsMeta instead of _NvDsMeta
  • Datatype of data of nvds_batch_meta_copy_func: capsule[NvDsBatchMeta] instead of capsule
  • Datatype of user_meta of nvds_batch_meta_copy_func: typing.Any instead of capsule
  • Rename user_meta to user_data of nvds_batch_meta_copy_func
  • Returntype of nvds_batch_meta_copy_func: capsule[NvDsBatchMeta] instead of _capsule
  • Datatype of data of nvds_batch_meta_release_func: capsule[NvDsBatchMeta] instead of capsule
  • Datatype of user_data of nvds_batch_meta_release_func: typing.Any instead of capsule
  • Add NvDsUserMetaList as an alias of typing.Optional[GList[NvDsUserMeta]]
  • Datatype of meta_list of nvds_clear_batch_user_meta_list: NvDsUserMetaList instead of GList
  • Add NvDisplayMetaList as an alias of typing.Optional[GList[NvDsDisplayMeta]]
  • Datatype of meta_list of nvds_clear_display_meta_list: NvDisplayMetaList instead of GList
  • Add NvDsFrameMetaList as an alias of typing.Optional[GList[NvDsFrameMeta]]
  • Datatype of meta_list of nvds_clear_frame_meta_list: NvDsFrameMetaList instead of GList
  • Datatype of meta_list of nvds_clear_frame_user_meta_list: NvDsUserMetaList instead of GList
  • Datatype of meta_list of nvds_clear_meta_list: NvDsMetaList instead of GList
  • Returntype of nvds_clear_meta_list: NvDsMetaList instead of GList
  • Add NvDsObjectMetaList as an alias of typing.Optional[GList[NvDsObjectMeta]]
  • Datatype of meta_list of nvds_clear_obj_meta_list: NvDsObjectMetaList instead of GList
  • Datatype of meta_list of nvds_clear_obj_user_meta_list: NvDsObjectMetaList instead of GList
  • Datatype of src_user_meta_list of nvds_copy_batch_user_meta_list: NvDsObjectMetaList instead of GList
  • Datatype of src_display_meta of nvds_copy_display_meta_list: NvDisplayMetaList instead of GList
  • Rename src_display_meta to src_display_meta_list of nvds_copy_display_meta_list
  • Datatype of src_frame_meta_list of nvds_copy_frame_meta_list and its overload: NvDsFrameMetaList instead of GList
  • Datatype of src_user_meta_list of nvds_copy_frame_user_meta_list: NvDsUserMetaList instead of GList
  • Datatype of src_obj_meta_list of nvds_copy_obj_meta_list: NvDsObjectMetaList instead of GList
  • Rename dst_object_meta to dst_frame_meta of nvds_copy_obj_meta_list
  • Datatype of frame_meta_list of nvds_get_nth_frame_meta: GList[NvDsFrameMeta] instead of GList
  • Datatype of arg0 of register_user_copyfunc: typing.Callable[[typing.Any, typing.Any], typing.Any] instead of typing.Callable[[capsule, capsule], capsule]
  • Datatype of arg0 of register_user_releasefunc: typing.Callable[[typing.Any, typing.Any], None] instead of typing.Callable[[capsule, capsule], None]
  • Datatype of arg1 of set_user_copyfunc: typing.Callable[[typing.Any, typing.Any], typing.Any] instead of typing.Callable[[capsule, capsule], capsule]
  • Datatype of arg1 of set_user_releasefunc: typing.Callable[[typing.Any, typing.Any], None] instead of typing.Callable[[capsule, capsule], None]
  • Datatype of arg1 of user_copyfunc: typing.Callable[[typing.Any, typing.Any], typing.Any] instead of typing.Callable[[capsule, capsule], capsule]
  • Datatype of arg1 of user_releasefunc: typing.Callable[[typing.Any, typing.Any], None] instead of typing.Callable[[capsule, capsule], None]

License

This project is published under Apache License, Version 2.0 - please comply with it, if you use/modify/distribute it. The license can be found in "LICENSE".

Appendix

Python venv

python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip setuptools

Links

Notice for NVIDIA

I recently (Jun, 2025) saw a discussion on your forum. If there is any official stub support by NVIDIA, this project will be deprecated and publicly archived. I hope to hear from you ;)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyds_stubs-1.1.0.tar.gz (67.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyds_stubs-1.1.0-py3-none-any.whl (39.0 kB view details)

Uploaded Python 3

File details

Details for the file pyds_stubs-1.1.0.tar.gz.

File metadata

  • Download URL: pyds_stubs-1.1.0.tar.gz
  • Upload date:
  • Size: 67.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.6

File hashes

Hashes for pyds_stubs-1.1.0.tar.gz
Algorithm Hash digest
SHA256 beb838a98dd689ea9c6a1596bc8c9173759f554cddb60e7eb0344b3fd0f03383
MD5 170d4ddf28a132890ebf4010f5787107
BLAKE2b-256 6fb7fc2930c42a0fb1a355a1a5073f97ee279dc7843cf11743e3d5ff2b65f4bc

See more details on using hashes here.

File details

Details for the file pyds_stubs-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: pyds_stubs-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 39.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.6

File hashes

Hashes for pyds_stubs-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 38ccd02801ad78ce4f867ca3ed379d6f61feb17657fcdbc1bc632bb2005acf47
MD5 b31c0007c7ce9a7f3dbbff5ff79aac5b
BLAKE2b-256 25f9784f80358d81bc62724702b24510f03b2aa8c4291dd14cc62a6f24ff3fd7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page