py-uds


Namepy-uds JSON
Version 2.0.0 PyPI version JSON
download
home_pageNone
SummaryUDS (Unified Diagnostic Services) protocol handler.
upload_time2025-08-17 18:10:04
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords uds unified-diagnostic-services automotive on-board-diagnostic obd obd2 vehicle-diagnostic iso14229 iso-14229 iso15765 iso-15765
VCS
bugtrack_url
requirements aenum python-can
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ***
UDS
***

|CI| |SecurityScan| |BestPractices| |ReadTheDocs| |CodeCoverage|

|LatestVersion| |PythonVersions| |PyPIStatus| |TotalDownloads| |MonthlyDownloads| |Licence|

Python package for handling `Unified Diagnostic Services`_ (UDS) protocol defined by ISO 14229.
It supports different communication buses on both communication sides (client and server).


Documentation
-------------
User documentation is hosted by ReadTheDocs portal and available under the following link: https://uds.readthedocs.io/

Security policy for this package is defined in `SECURITY.md`_ file.

If you want to become a contributor, please read `CONTRIBUTING.md`_ file.


Why another UDS package?
------------------------
There are a few already existing python packages to handle UDS protocol, so you might wonder why would you consider
using this one?

This package is meant to support **multiple buses** (including CAN, LIN, Ethernet, K-Line, FlexRay) and
**multiple bus managers** (e.g. `python-can`_).
Additionally, it handles both communication nodes (client and server), decoding monitored UDS communication,
and contains detailed configuration to fully control all timing and transmission parameters.

Thanks to all these features, this package can have multiple use-cases, including:

- simple send-receive packets/messages to/from any network
- comprehensive node simulations
- testing of UDS protocol communication implementation - either on client (diagnostic tester / ECU) or server (ECU) side
- sniffing (and decoding) UDS communication

Unfortunately, all previously mentioned plans make the project quite huge.
At the time of writing, the implementation process of these features is still ongoing (and probably the development
would slowly progress over at least a few more years, unless more people get engaged in the project and/or
more sponsors are found).
On the other hand, the architecture to support all these features is already designed and some of them are already
implemented with others defined or planned.

To check the current implementation status, visit https://uds.readthedocs.io/en/stable/#features


Alternative options
```````````````````

python-udsoncan
'''''''''''''''
Link: https://github.com/pylessard/python-udsoncan

- pros:

  - comprehensive documentation -
    https://udsoncan.readthedocs.io/en/latest/index.html
  - maintained with active community - https://udsoncan.readthedocs.io/en/latest/udsoncan/questions_answers.html
  - various connection types are supported -
    https://udsoncan.readthedocs.io/en/latest/udsoncan/connection.html#available-connections
  - CAN bus fully supported with possibility to extension for other buses (requires custom code)
  - possibility to configure all transmission parameters for CAN using can-isotp package -
    https://can-isotp.readthedocs.io/en/latest/isotp/implementation.html
  - handlers for multiple diagnostic services are implemented -
    https://udsoncan.readthedocs.io/en/latest/udsoncan/services.html
  - positive and negatives scenarios are handled - https://udsoncan.readthedocs.io/en/latest/udsoncan/exceptions.html
  - control over CAN Network parameters (N_As, N_Ar, N_Bs, N_Br, N_Cs, N_Cr) via can-isotp package -
    https://can-isotp.readthedocs.io/en/latest/isotp/socket.html
    https://can-isotp.readthedocs.io/en/latest/isotp/implementation.html
  - possibility to inject some errors on Transport/Network layer -
    https://udsoncan.readthedocs.io/en/latest/udsoncan/client.html#overriding-the-output

- cons:

  - no support for full-duplex communication (sending and receiving at the same time)
  - only Client side communication is implemented - https://udsoncan.readthedocs.io/en/latest/udsoncan/client.html


python-uds
''''''''''
Link: https://github.com/richClubb/python-uds

- pros:

  - CAN and LIN buses are supported

- cons:

  - very modest documentation - https://python-uds.readthedocs.io/en/latest/
  - is not maintained with the last release in March 2019 - https://pypi.org/project/python-uds/
  - only a few communication interfaces (I have only found examples with python-can) are supported -
    https://python-uds.readthedocs.io/en/latest/interface.html
  - no support for full-duplex communication (sending and receiving at the same time)
  - only Client side communication is implemented
  - limited communication parameters configuration - https://python-uds.readthedocs.io/en/latest/configuration.html
  - no option for injecting errors on Transport/Network layer, e.g.

    - Overflow / Wait value of Flow Status (parameter of Flow Control packet)
    - CAN packets in wrong order (e.g. incorrect Sequence Numbers order in Consecutive Frames)


Contact
-------
- e-mail: uds-package-development@googlegroups.com
- group: `UDS package development`_
- discord: https://discord.gg/y3waVmR5PZ


.. _SECURITY.md: https://github.com/mdabrowski1990/uds/blob/main/SECURITY.md

.. _CONTRIBUTING.md: https://github.com/mdabrowski1990/uds/blob/main/CONTRIBUTING.md

.. _UDS package development: https://groups.google.com/g/uds-package-development/about

.. _Unified Diagnostic Services: https://en.wikipedia.org/wiki/Unified_Diagnostic_Services

.. _python-can: https://github.com/hardbyte/python-can

.. |CI| image:: https://github.com/mdabrowski1990/uds/actions/workflows/testing.yml/badge.svg?branch=main
   :target: https://github.com/mdabrowski1990/uds/actions/workflows/testing.yml
   :alt: Continuous Integration Status

.. |SecurityScan| image:: https://github.com/mdabrowski1990/uds/actions/workflows/codeql-analysis.yml/badge.svg?branch=main
   :target: https://github.com/mdabrowski1990/uds/actions/workflows/codeql-analysis.yml
   :alt: Security Scan Status

.. |ReadTheDocs| image:: https://readthedocs.org/projects/uds/badge/?version=latest
   :target: https://uds.readthedocs.io/
   :alt: ReadTheDocs Build Status

.. |BestPractices| image:: https://bestpractices.coreinfrastructure.org/projects/4703/badge
   :target: https://bestpractices.coreinfrastructure.org/projects/4703
   :alt: CII Best Practices

.. |CodeCoverage| image:: https://codecov.io/gh/mdabrowski1990/uds/branch/main/graph/badge.svg?token=IL7RYZ5ERC
   :target: https://codecov.io/gh/mdabrowski1990/uds
   :alt: Software Tests Coverage

.. |LatestVersion| image:: https://img.shields.io/pypi/v/py-uds.svg
   :target: https://pypi.python.org/pypi/py-uds
   :alt: The latest Version of UDS package

.. |PythonVersions| image:: https://img.shields.io/pypi/pyversions/py-uds.svg
   :target: https://pypi.python.org/pypi/py-uds/
   :alt: Supported Python versions

.. |PyPIStatus| image:: https://img.shields.io/pypi/status/py-uds.svg
   :target: https://pypi.python.org/pypi/py-uds/
   :alt: PyPI status

.. |TotalDownloads| image:: https://pepy.tech/badge/py-uds
   :target: https://pepy.tech/project/py-uds
   :alt: Total PyPI downloads

.. |MonthlyDownloads| image:: https://pepy.tech/badge/py-uds/month
   :target: https://pepy.tech/project/py-uds
   :alt: Monthly PyPI downloads

.. |Licence| image:: https://img.shields.io/badge/License-MIT-blue.svg
   :target: https://lbesson.mit-license.org/
   :alt: License Type

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "py-uds",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "Maciej D\u0105browski <maciej.dabrowski@software-quality.pl>, UDS Package Development <uds-package-development@googlegroups.com>",
    "keywords": "uds, unified-diagnostic-services, automotive, on-board-diagnostic, obd, obd2, vehicle-diagnostic, iso14229, iso-14229, iso15765, iso-15765",
    "author": null,
    "author_email": "Maciej D\u0105browski <maciej.dabrowski@software-quality.pl>, UDS Package Development <uds-package-development@googlegroups.com>",
    "download_url": null,
    "platform": null,
    "description": "***\r\nUDS\r\n***\r\n\r\n|CI| |SecurityScan| |BestPractices| |ReadTheDocs| |CodeCoverage|\r\n\r\n|LatestVersion| |PythonVersions| |PyPIStatus| |TotalDownloads| |MonthlyDownloads| |Licence|\r\n\r\nPython package for handling `Unified Diagnostic Services`_ (UDS) protocol defined by ISO 14229.\r\nIt supports different communication buses on both communication sides (client and server).\r\n\r\n\r\nDocumentation\r\n-------------\r\nUser documentation is hosted by ReadTheDocs portal and available under the following link: https://uds.readthedocs.io/\r\n\r\nSecurity policy for this package is defined in `SECURITY.md`_ file.\r\n\r\nIf you want to become a contributor, please read `CONTRIBUTING.md`_ file.\r\n\r\n\r\nWhy another UDS package?\r\n------------------------\r\nThere are a few already existing python packages to handle UDS protocol, so you might wonder why would you consider\r\nusing this one?\r\n\r\nThis package is meant to support **multiple buses** (including CAN, LIN, Ethernet, K-Line, FlexRay) and\r\n**multiple bus managers** (e.g. `python-can`_).\r\nAdditionally, it handles both communication nodes (client and server), decoding monitored UDS communication,\r\nand contains detailed configuration to fully control all timing and transmission parameters.\r\n\r\nThanks to all these features, this package can have multiple use-cases, including:\r\n\r\n- simple send-receive packets/messages to/from any network\r\n- comprehensive node simulations\r\n- testing of UDS protocol communication implementation - either on client (diagnostic tester / ECU) or server (ECU) side\r\n- sniffing (and decoding) UDS communication\r\n\r\nUnfortunately, all previously mentioned plans make the project quite huge.\r\nAt the time of writing, the implementation process of these features is still ongoing (and probably the development\r\nwould slowly progress over at least a few more years, unless more people get engaged in the project and/or\r\nmore sponsors are found).\r\nOn the other hand, the architecture to support all these features is already designed and some of them are already\r\nimplemented with others defined or planned.\r\n\r\nTo check the current implementation status, visit https://uds.readthedocs.io/en/stable/#features\r\n\r\n\r\nAlternative options\r\n```````````````````\r\n\r\npython-udsoncan\r\n'''''''''''''''\r\nLink: https://github.com/pylessard/python-udsoncan\r\n\r\n- pros:\r\n\r\n  - comprehensive documentation -\r\n    https://udsoncan.readthedocs.io/en/latest/index.html\r\n  - maintained with active community - https://udsoncan.readthedocs.io/en/latest/udsoncan/questions_answers.html\r\n  - various connection types are supported -\r\n    https://udsoncan.readthedocs.io/en/latest/udsoncan/connection.html#available-connections\r\n  - CAN bus fully supported with possibility to extension for other buses (requires custom code)\r\n  - possibility to configure all transmission parameters for CAN using can-isotp package -\r\n    https://can-isotp.readthedocs.io/en/latest/isotp/implementation.html\r\n  - handlers for multiple diagnostic services are implemented -\r\n    https://udsoncan.readthedocs.io/en/latest/udsoncan/services.html\r\n  - positive and negatives scenarios are handled - https://udsoncan.readthedocs.io/en/latest/udsoncan/exceptions.html\r\n  - control over CAN Network parameters (N_As, N_Ar, N_Bs, N_Br, N_Cs, N_Cr) via can-isotp package -\r\n    https://can-isotp.readthedocs.io/en/latest/isotp/socket.html\r\n    https://can-isotp.readthedocs.io/en/latest/isotp/implementation.html\r\n  - possibility to inject some errors on Transport/Network layer -\r\n    https://udsoncan.readthedocs.io/en/latest/udsoncan/client.html#overriding-the-output\r\n\r\n- cons:\r\n\r\n  - no support for full-duplex communication (sending and receiving at the same time)\r\n  - only Client side communication is implemented - https://udsoncan.readthedocs.io/en/latest/udsoncan/client.html\r\n\r\n\r\npython-uds\r\n''''''''''\r\nLink: https://github.com/richClubb/python-uds\r\n\r\n- pros:\r\n\r\n  - CAN and LIN buses are supported\r\n\r\n- cons:\r\n\r\n  - very modest documentation - https://python-uds.readthedocs.io/en/latest/\r\n  - is not maintained with the last release in March 2019 - https://pypi.org/project/python-uds/\r\n  - only a few communication interfaces (I have only found examples with python-can) are supported -\r\n    https://python-uds.readthedocs.io/en/latest/interface.html\r\n  - no support for full-duplex communication (sending and receiving at the same time)\r\n  - only Client side communication is implemented\r\n  - limited communication parameters configuration - https://python-uds.readthedocs.io/en/latest/configuration.html\r\n  - no option for injecting errors on Transport/Network layer, e.g.\r\n\r\n    - Overflow / Wait value of Flow Status (parameter of Flow Control packet)\r\n    - CAN packets in wrong order (e.g. incorrect Sequence Numbers order in Consecutive Frames)\r\n\r\n\r\nContact\r\n-------\r\n- e-mail: uds-package-development@googlegroups.com\r\n- group: `UDS package development`_\r\n- discord: https://discord.gg/y3waVmR5PZ\r\n\r\n\r\n.. _SECURITY.md: https://github.com/mdabrowski1990/uds/blob/main/SECURITY.md\r\n\r\n.. _CONTRIBUTING.md: https://github.com/mdabrowski1990/uds/blob/main/CONTRIBUTING.md\r\n\r\n.. _UDS package development: https://groups.google.com/g/uds-package-development/about\r\n\r\n.. _Unified Diagnostic Services: https://en.wikipedia.org/wiki/Unified_Diagnostic_Services\r\n\r\n.. _python-can: https://github.com/hardbyte/python-can\r\n\r\n.. |CI| image:: https://github.com/mdabrowski1990/uds/actions/workflows/testing.yml/badge.svg?branch=main\r\n   :target: https://github.com/mdabrowski1990/uds/actions/workflows/testing.yml\r\n   :alt: Continuous Integration Status\r\n\r\n.. |SecurityScan| image:: https://github.com/mdabrowski1990/uds/actions/workflows/codeql-analysis.yml/badge.svg?branch=main\r\n   :target: https://github.com/mdabrowski1990/uds/actions/workflows/codeql-analysis.yml\r\n   :alt: Security Scan Status\r\n\r\n.. |ReadTheDocs| image:: https://readthedocs.org/projects/uds/badge/?version=latest\r\n   :target: https://uds.readthedocs.io/\r\n   :alt: ReadTheDocs Build Status\r\n\r\n.. |BestPractices| image:: https://bestpractices.coreinfrastructure.org/projects/4703/badge\r\n   :target: https://bestpractices.coreinfrastructure.org/projects/4703\r\n   :alt: CII Best Practices\r\n\r\n.. |CodeCoverage| image:: https://codecov.io/gh/mdabrowski1990/uds/branch/main/graph/badge.svg?token=IL7RYZ5ERC\r\n   :target: https://codecov.io/gh/mdabrowski1990/uds\r\n   :alt: Software Tests Coverage\r\n\r\n.. |LatestVersion| image:: https://img.shields.io/pypi/v/py-uds.svg\r\n   :target: https://pypi.python.org/pypi/py-uds\r\n   :alt: The latest Version of UDS package\r\n\r\n.. |PythonVersions| image:: https://img.shields.io/pypi/pyversions/py-uds.svg\r\n   :target: https://pypi.python.org/pypi/py-uds/\r\n   :alt: Supported Python versions\r\n\r\n.. |PyPIStatus| image:: https://img.shields.io/pypi/status/py-uds.svg\r\n   :target: https://pypi.python.org/pypi/py-uds/\r\n   :alt: PyPI status\r\n\r\n.. |TotalDownloads| image:: https://pepy.tech/badge/py-uds\r\n   :target: https://pepy.tech/project/py-uds\r\n   :alt: Total PyPI downloads\r\n\r\n.. |MonthlyDownloads| image:: https://pepy.tech/badge/py-uds/month\r\n   :target: https://pepy.tech/project/py-uds\r\n   :alt: Monthly PyPI downloads\r\n\r\n.. |Licence| image:: https://img.shields.io/badge/License-MIT-blue.svg\r\n   :target: https://lbesson.mit-license.org/\r\n   :alt: License Type\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "UDS (Unified Diagnostic Services) protocol handler.",
    "version": "2.0.0",
    "project_urls": {
        "Code Download": "https://github.com/mdabrowski1990/uds/archive/refs/heads/main.zip",
        "Homepage": "https://github.com/mdabrowski1990/uds",
        "Issues Tracking System": "https://github.com/mdabrowski1990/uds/issues",
        "PyPI": "https://pypi.org/project/py-uds/",
        "Releases and Changelogs": "https://github.com/mdabrowski1990/uds/releases",
        "Repository": "https://github.com/mdabrowski1990/uds",
        "Security Policy": "https://github.com/mdabrowski1990/uds/security/policy",
        "User Documentation": "https://uds.readthedocs.io",
        "Wiki": "https://github.com/mdabrowski1990/uds/wiki"
    },
    "split_keywords": [
        "uds",
        " unified-diagnostic-services",
        " automotive",
        " on-board-diagnostic",
        " obd",
        " obd2",
        " vehicle-diagnostic",
        " iso14229",
        " iso-14229",
        " iso15765",
        " iso-15765"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8b4ec6760190b6cb85ada2397e1d4e23f8c4162d570e8d25533d97ec535b686f",
                "md5": "4e4f5e73de7b1ac69c6f1234e6fe0c69",
                "sha256": "97403842d35b627fbb04aa69d09486754d27474c2985057e6fcba70058ef81ae"
            },
            "downloads": -1,
            "filename": "py_uds-2.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "4e4f5e73de7b1ac69c6f1234e6fe0c69",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 107283,
            "upload_time": "2025-08-17T18:10:04",
            "upload_time_iso_8601": "2025-08-17T18:10:04.624731Z",
            "url": "https://files.pythonhosted.org/packages/8b/4e/c6760190b6cb85ada2397e1d4e23f8c4162d570e8d25533d97ec535b686f/py_uds-2.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-17 18:10:04",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "mdabrowski1990",
    "github_project": "uds",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "aenum",
            "specs": [
                [
                    "==",
                    "3.1.16"
                ]
            ]
        },
        {
            "name": "python-can",
            "specs": [
                [
                    "==",
                    "4.5.0"
                ]
            ]
        }
    ],
    "lcname": "py-uds"
}
        
Elapsed time: 0.48237s