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
- Python 3 (latest) (https://www.python.org/downloads)
- Python venv (optional, recommended) GoTo Installation
- Installation of development requirements:
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
capsulewith information about the class of the object. - remove class
GListand add genericGListclass with information about the class of the data. castfunctions withcapsuledatatype:capsuleis replaced bycapsule[class]whereclassis the target class.arraydatatype: Replace withnumpy.ndarraynumpy.ndarray[float32]: Replace withNDArray[numpy.float32]withfrom numpy.typing import NDArray- Returntype of
eglImageproperty ofNvBufSurfaceMappedAddr:typing.Anyinstead ofcapsule - Returntype of
dataPtrproperty ofNvBufSurfaceParams:typing.Anyinstead ofcapsule - Datatype of
batch_metaofNvDsBaseMeta:NvDsBatchMetainstead of_NvDsBatchMeta - Datatype of
uContextofNvDsBaseMeta:typing.Anyinstead ofcapsule - Datatype of
batch_user_meta_listofNvDsBatchMeta:typing.Optional[GList[NvDsUserMeta]]instead ofGList - Datatype of
frame_meta_listofNvDsBatchMeta:typing.Optional[GList[NvDsFrameMeta]]instead ofGList - Datatype of
meta_mutexofNvDsBatchMeta:GLib.RecMutexinstead of_GRecMutexwithfrom gi.repository import GLib - Datatype of
label_info_listofNvDsClassifierMeta:typing.Optional[GList[NvDsLabelInfo]]instead ofGList - Datatype of
extMsgofNvDsEventMsgMeta:typing.Anyinstead ofcapsule - Datatype of
maskofNvDsFaceObjectWithExt:typing.Optional[GList[typing.Any]]instead ofGList - Datatype of
display_meta_listofNvDsFrameMeta:typing.Optional[GList[NvDsDisplayMeta]]instead ofGList - Datatype of
frame_user_meta_listofNvDsFrameMeta:typing.Optional[GList[NvDsUserMeta]]instead ofGList - Datatype of
obj_meta_listofNvDsFrameMeta:typing.Optional[GList[NvDsObjectMeta]]instead ofGList - Returntype of
bufferproperty ofNvDsInferLayerInfo:typing.Anyinstead ofcapsule - Returntype of
priv_dataproperty ofNvDsInferSegmentationMeta:typing.Anyinstead ofcapsule - Returntype of
out_buf_ptrs_devproperty ofNvDsInferTensorMeta:typing.Anyinstead ofcapsule - Returntype of
out_buf_ptrs_hostproperty ofNvDsInferTensorMeta:typing.Anyinstead ofcapsule - Returntype of
priv_dataproperty ofNvDsInferTensorMeta:typing.Anyinstead ofcapsule - Datatype of
metaofNvDsMeta:Gst.Metainstead of_GstMetawithfrom gi.repository import Gst - Datatype of
meta_dataofNvDsMeta:typing.Anyinstead ofcapsule - Datatype of
user_dataofNvDsMeta:typing.Anyinstead ofcapsule - Add
NvDsMetaListas an alias oftyping.Optional[GList[NvDsMeta]] - Datatype of
empty_listofNvDsMetaPool:NvDsMetaListinstead ofGList - Datatype of
full_listofNvDsMetaPool:NvDsMetaListinstead ofGList - Datatype of
classifier_meta_listofNvDsObjectMeta:typing.Optional[GList[NvDsClassifierMeta]]instead ofGList - Datatype of
mask_paramsofNvDsObjectMeta:typing.Anyinstead of_NvOSD_MaskParams - Datatype of
obj_user_meta_listofNvDsObjectMeta:typing.Optional[GList[NvDsUserMeta]]instead ofGList - Datatype of
dataofNvDsOpticalFlowMeta:typing.Anyinstead ofcapsule - Datatype of
privofNvDsOpticalFlowMeta:typing.Anyinstead ofcapsule - Datatype of
reservedofNvDsOpticalFlowMeta:typing.Anyinstead ofcapsule - Datatype of
maskofNvDsPersonObjectExt:typing.Optional[GList[typing.Any]]instead ofGList - Datatype of
payloadofNvDsPayload:typing.Anyinstead ofcapsule - Datatype of
user_meta_dataofNvDsUserMeta:typing.Anyinstead ofcapsule - Datatype of
maskofNvDsVehicleObjectExt:typing.Optional[GList[typing.Any]]instead ofGList - Datatype of
textofRectDim:typing.Anyinstead ofcapsule - Rename
dmabuftodmabuf_fdofNvBufSurfaceFromFd - Datatype of
bufferofNvBufSurfaceFromFd:capsule[NvBufSurface]instead ofcapsule - Datatype of
bufferoffree_gbuffer:typing.Anyinstead ofcapsule - Datatype of
arg0ofget_detections:typing.Anyinstead ofcapsule - Datatype of
arg0ofget_nvds_LayerInfo:typing.Anyinstead ofcapsule - Datatype of
dataofget_optical_flow_vectors:capsule[NvDsOpticalFlowMeta]instead ofcapsule - Rename
datatoof_metaofget_optical_flow_vectors - Datatype of
ptrofget_ptr:typing.Anyinstead ofcapsule - Datatype of
dataofget_segmentation_masks:capsule[NvDsInferSegmentationMeta]instead ofcapsule - Datatype of
arg0ofglist_get_nvds_Surface_Params:typing.Anyinstead ofcapsule - Datatype of
arg0ofglist_get_nvds_batch_meta:typing.Anyinstead ofcapsule - Datatype of
arg0ofglist_get_nvds_classifier_meta:typing.Anyinstead ofcapsule - Datatype of
arg0ofglist_get_nvds_display_meta:typing.Anyinstead ofcapsule - Datatype of
arg0ofglist_get_nvds_event_msg_meta:typing.Anyinstead ofcapsule - Datatype of
arg0ofglist_get_nvds_frame_meta:typing.Anyinstead ofcapsule - Datatype of
arg0ofglist_get_nvds_label_info:typing.Anyinstead ofcapsule - Datatype of
arg0ofglist_get_nvds_object_meta:typing.Anyinstead ofcapsule - Datatype of
arg0ofglist_get_nvds_person_object:typing.Anyinstead ofcapsule - Datatype of
arg0ofglist_get_nvds_tensor_meta:typing.Anyinstead ofcapsule - Datatype of
arg0ofglist_get_nvds_user_meta:typing.Anyinstead ofcapsule - Datatype of
arg0ofglist_get_nvds_vehicle_object:typing.Anyinstead ofcapsule - Datatype of
bufferofgst_buffer_add_nvds_meta:Gst.Bufferinstead of_GstBuffer - Datatype of
meta_dataofgst_buffer_add_nvds_meta:typing.Anyinstead ofcapsule - Datatype of
user_dataofgst_buffer_add_nvds_meta:typing.Anyinstead ofcapsule - Returntype of
gst_buffer_add_nvds_meta:NvDsMetainstead of_NvDsMeta - Datatype of
dataofnvds_batch_meta_copy_func:capsule[NvDsBatchMeta]instead ofcapsule - Datatype of
user_metaofnvds_batch_meta_copy_func:typing.Anyinstead ofcapsule - Rename
user_metatouser_dataofnvds_batch_meta_copy_func - Returntype of
nvds_batch_meta_copy_func:capsule[NvDsBatchMeta]instead of_capsule - Datatype of
dataofnvds_batch_meta_release_func:capsule[NvDsBatchMeta]instead ofcapsule - Datatype of
user_dataofnvds_batch_meta_release_func:typing.Anyinstead ofcapsule - Add
NvDsUserMetaListas an alias oftyping.Optional[GList[NvDsUserMeta]] - Datatype of
meta_listofnvds_clear_batch_user_meta_list:NvDsUserMetaListinstead ofGList - Add
NvDisplayMetaListas an alias oftyping.Optional[GList[NvDsDisplayMeta]] - Datatype of
meta_listofnvds_clear_display_meta_list:NvDisplayMetaListinstead ofGList - Add
NvDsFrameMetaListas an alias oftyping.Optional[GList[NvDsFrameMeta]] - Datatype of
meta_listofnvds_clear_frame_meta_list:NvDsFrameMetaListinstead ofGList - Datatype of
meta_listofnvds_clear_frame_user_meta_list:NvDsUserMetaListinstead ofGList - Datatype of
meta_listofnvds_clear_meta_list:NvDsMetaListinstead ofGList - Returntype of
nvds_clear_meta_list:NvDsMetaListinstead ofGList - Add
NvDsObjectMetaListas an alias oftyping.Optional[GList[NvDsObjectMeta]] - Datatype of
meta_listofnvds_clear_obj_meta_list:NvDsObjectMetaListinstead ofGList - Datatype of
meta_listofnvds_clear_obj_user_meta_list:NvDsObjectMetaListinstead ofGList - Datatype of
src_user_meta_listofnvds_copy_batch_user_meta_list:NvDsObjectMetaListinstead ofGList - Datatype of
src_display_metaofnvds_copy_display_meta_list:NvDisplayMetaListinstead ofGList - Rename
src_display_metatosrc_display_meta_listofnvds_copy_display_meta_list - Datatype of
src_frame_meta_listofnvds_copy_frame_meta_listand its overload:NvDsFrameMetaListinstead ofGList - Datatype of
src_user_meta_listofnvds_copy_frame_user_meta_list:NvDsUserMetaListinstead ofGList - Datatype of
src_obj_meta_listofnvds_copy_obj_meta_list:NvDsObjectMetaListinstead ofGList - Rename
dst_object_metatodst_frame_metaofnvds_copy_obj_meta_list - Datatype of
frame_meta_listofnvds_get_nth_frame_meta:GList[NvDsFrameMeta]instead ofGList - Datatype of
arg0ofregister_user_copyfunc:typing.Callable[[typing.Any, typing.Any], typing.Any]instead oftyping.Callable[[capsule, capsule], capsule] - Datatype of
arg0ofregister_user_releasefunc:typing.Callable[[typing.Any, typing.Any], None]instead oftyping.Callable[[capsule, capsule], None] - Datatype of
arg1ofset_user_copyfunc:typing.Callable[[typing.Any, typing.Any], typing.Any]instead oftyping.Callable[[capsule, capsule], capsule] - Datatype of
arg1ofset_user_releasefunc:typing.Callable[[typing.Any, typing.Any], None]instead oftyping.Callable[[capsule, capsule], None] - Datatype of
arg1ofuser_copyfunc:typing.Callable[[typing.Any, typing.Any], typing.Any]instead oftyping.Callable[[capsule, capsule], capsule] - Datatype of
arg1ofuser_releasefunc:typing.Callable[[typing.Any, typing.Any], None]instead oftyping.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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
beb838a98dd689ea9c6a1596bc8c9173759f554cddb60e7eb0344b3fd0f03383
|
|
| MD5 |
170d4ddf28a132890ebf4010f5787107
|
|
| BLAKE2b-256 |
6fb7fc2930c42a0fb1a355a1a5073f97ee279dc7843cf11743e3d5ff2b65f4bc
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
38ccd02801ad78ce4f867ca3ed379d6f61feb17657fcdbc1bc632bb2005acf47
|
|
| MD5 |
b31c0007c7ce9a7f3dbbff5ff79aac5b
|
|
| BLAKE2b-256 |
25f9784f80358d81bc62724702b24510f03b2aa8c4291dd14cc62a6f24ff3fd7
|