Metadata-Version: 2.4
Name: libusb
Version: 1.0.29.post1
Summary: Python binding for the libusb C library.
Author-email: Adam Karpierz <adam@karpierz.net>
Maintainer-email: Adam Karpierz <adam@karpierz.net>
License-Expression: Zlib
Project-URL: Homepage, https://pypi.org/project/libusb/
Project-URL: Documentation, https://libusb.readthedocs.io/
Project-URL: Download, https://pypi.org/project/libusb/
Project-URL: Source, https://github.com/karpierz/libusb
Project-URL: Issues, https://github.com/karpierz/libusb/issues
Keywords: usb,libusb
Platform: any
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Natural Language :: Polish
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: <4.0.0,>=3.10.0
Description-Content-Type: text/x-rst; charset=UTF-8
License-File: LICENSE
Requires-Dist: setuptools>=80.9.0
Requires-Dist: typing-extensions>=4.15.0
Requires-Dist: pkg-about>=2.0.0
Requires-Dist: py-utlx>=1.1.0
Provides-Extra: doc
Requires-Dist: sphinx>=8.1.3; extra == "doc"
Requires-Dist: sphinx-autodoc-typehints>=3.0.1; extra == "doc"
Requires-Dist: sphinx-toolbox>=4.0.0; extra == "doc"
Requires-Dist: sphinx-tabs>=3.4.5; extra == "doc"
Requires-Dist: sphinx-copybutton>=0.5.2; extra == "doc"
Requires-Dist: sphinxcontrib-spelling>=8.0.1; extra == "doc"
Requires-Dist: sphinx-lint>=1.0.2; extra == "doc"
Requires-Dist: restructuredtext-lint>=2.0.2; extra == "doc"
Requires-Dist: nbsphinx>=0.9.7; extra == "doc"
Provides-Extra: test
Requires-Dist: deepdiff>=8.6.1; extra == "test"
Requires-Dist: rich>=14.2.0; extra == "test"
Dynamic: license-file

libusb
======

Python binding for the *libusb* C library.

Overview
========

| Python |package_bold| module is a low-level binding for *libusb* C library.
| It is an effort to allow python programs full access to the API implemented
  and provided by the well known `*libusb* <https://libusb.info/>`__ library.

`PyPI record`_.

`Documentation`_.

| |package_bold| is a lightweight Python package, based on the *ctypes* library.
| It is fully compliant implementation of the original C *libusb* 1.0 API
  by implementing whole its functionality in a clean Python instead of C.
|
| *libusb* API 1.0 documentation can be found at:

  `libusb-1.0 API Reference <http://api.libusb.info>`__

|package_bold| uses the underlying *libusb* C shared library as specified in
libusb.cfg (included libusb-X.X.* is the default), but there is also ability
to specify it programmatically by one of the following ways:

.. code:: python

  import libusb
  libusb.config(LIBUSB="libusb C shared library absolute path")
  # or
  libusb.config(LIBUSB=None)  # included libusb-X.X.* will be used

About original libusb:
----------------------

Borrowed from the `original website <https://libusb.info/>`__:

**libusb** - A cross-platform user library to access USB devices

**Overview**

**libusb** is a C library that provides generic access to USB devices.
It is intended to be used by developers to facilitate the production of
applications that communicate with USB hardware.

It is **portable**: Using a single cross-platform API, it provides access
to USB devices on Linux, OS X, Windows, Android, OpenBSD, etc.

It is **user-mode**: No special privilege or elevation is required for the
application to communicate with a device.

It is **version-agnostic**: All versions of the USB protocol, from 1.0 to 3.1
(latest), are supported.

**What platforms are supported?**

Linux, OS X, Windows, Windows CE, Android, OpenBSD/NetBSD, Haiku.

**For additional information, please consult the**
`FAQ <https://github.com/libusb/libusb/wiki/FAQ>`__
**or the** `Wiki <https://github.com/libusb/libusb/wiki>`__.

Requirements
============

- | It is a fully independent package.
  | All necessary things are installed during the normal installation process.
- ATTENTION: currently works and tested only for Windows.

Installation
============

Prerequisites:

+ Python 3.10 or higher

  * https://www.python.org/
  * with C libusb 1.0.29 is a primary test environment.

+ pip and setuptools

  * https://pypi.org/project/pip/
  * https://pypi.org/project/setuptools/

To install run:

  .. parsed-literal::

    python -m pip install --upgrade |package|

Development
===========

Prerequisites:

+ Development is strictly based on *tox*. To install it run::

    python -m pip install --upgrade tox

Visit `Development page`_.

Installation from sources:

clone the sources:

  .. parsed-literal::

    git clone |respository| |package|

and run:

  .. parsed-literal::

    python -m pip install ./|package|

or on development mode:

  .. parsed-literal::

    python -m pip install --editable ./|package|

License
=======

  | |copyright|
  | Licensed under the zlib/libpng License
  | https://opensource.org/license/zlib
  | Please refer to the accompanying LICENSE file.

Authors
=======

* Adam Karpierz <adam@karpierz.net>

.. |package| replace:: libusb
.. |package_bold| replace:: **libusb**
.. |copyright| replace:: Copyright (c) 2016-2025 Adam Karpierz
.. |respository| replace:: https://github.com/karpierz/libusb.git
.. _Development page: https://github.com/karpierz/libusb
.. _PyPI record: https://pypi.org/project/libusb/
.. _Documentation: https://libusb.readthedocs.io/
.. _USB Vendors: https://devicehunt.com/all-usb-vendors

Changelog
=========

1.0.29.post1 (2025-11-20)
-------------------------
- | Upgrade of dll-s for Windows and addition of shared libraries for
  | multiple platforms (mostly from conda-forge, others from Debian
  | package repository).
- Drop support for macOS versions earlier than 10.13
- Making and mark the package typed.
- Preliminary unittests have been added.
- Improvement of code lint.
- Setup (dependencies) update.

1.0.29 (2025-06-30)
-------------------
- Libusb API update: v.1.0.28 -> v.1.0.29
- Upgrade of dll-s for Windows: libusb v.1.0.28 -> v.1.0.29
- Setup (dependencies) update.

1.0.28.post2 (2025-05-15)
-------------------------
- The distribution is now created using 'build' instead of 'setuptools'.
- Setup (dependencies) update (due to regressions in tox and setuptools).

1.0.28.post1 (2025-05-04)
-------------------------
- Setup (dependencies) update.

1.0.28 (2025-04-28)
-------------------
- Add support for Python 3.14
- Drop support for Python 3.9 (due to compatibility issues).
- Update readthedocs's python to version 3.13
- Update tox's base_python to version 3.13
- Libusb API update: v.1.0.27 -> v.1.0.28
- Upgrade of dll-s for Windows: libusb v.1.0.27 -> v.1.0.28
- Add support for PyPy 3.11
- Drop support for PyPy 3.9
- Setup (dependencies) update.

1.0.27.post4 (2025-02-14)
-------------------------
- Windows shared libraries built with Visual Studio 2022.
- Source distribution (\*.tar.gz now) is compliant with PEP-0625.
- 100% code linting.
- Tox configuration is now in native (toml) format.
- Copyright year update.
- Setup (dependencies) update.

1.0.27.post3 (2024-10-09)
-------------------------
- Setup (dependencies) update.

1.0.27.post2 (2024-09-30)
-------------------------
- Drop support for Python 3.8
- Setup (dependencies) update.

1.0.27.post1 (2024-08-13)
-------------------------
- Add support for Python 3.13
- Setup (dependencies) update.
- Improvements and cleanup for winapi.
- Source code refactoring and cleanup.

1.0.27 (2024-02-05)
-------------------
- | The API has been fully updated to version 1.0.27 (libusb v.1.0.27
  | is fully backward compatible with v.1.0.26).
- | For Windows the shared library binaries have been updated to version
  | 1.0.27. For Linux and macOS, the shared library binaries remain at
  | version 1.0.26.
- Bugfixes for options -i and -w in examples/xusb.py

1.0.26 (2024-02-05)
-------------------
- | The API has been partially updated to version 1.0.27, but still
  | only supports version 1.0.26.
- Improvements and some little bugfixes.
- Examples and tests are upgraded to 1.0.27.

1.0.26rc4 (2024-01-25)
----------------------
- Setup update (now based on tox >= 4.0).
- Cleanup.

1.0.26rc2 (2023-12-20)
----------------------
- Add linux aarch64 support.

1.0.26rc1 (2023-12-15)
----------------------
- Add support for Python 3.12
- Drop support for Python 3.7
- Add support for PyPy 3.10
- Drop support for PyPy 3.7 and 3.8
- Copyright year update.

1.0.26b5 (2022-09-10)
---------------------
- Tox configuration has been moved to pyproject.toml

1.0.26b4 (2022-08-25)
---------------------
- | Downgrade of included shared libraries for Linux:
  | libusb v.1.0.26 -> v.1.0.24 (for now based on Debian's 11 (bullseye)),
  | because of loading issues of v.1.0.26 from Debian's 12 (bookworm)
  | shared libraries.
- Setup update.

1.0.26b3 (2022-07-25)
---------------------
- Setup update (currently based mainly on pyproject.toml).
- Update for macOS (dlls are included for v.10.7+ and v.11.6+ 64bit).

1.0.26b2 (2022-07-18)
---------------------
- Upgrade for Windows: libusb v.1.0.24 -> v.1.0.26
- Update for macOS (v.11.6 64bit).
- Add support for Python 3.10 and 3.11
- Add support for PyPy 3.7, 3.8 and 3.9
- Setup update.

1.0.24b3 (2022-01-10)
---------------------
- Drop support for Python 3.6
- Copyright year update.
- Setup update.

1.0.24b1 (2021-11-10)
---------------------
- Upgrade for Windows: libusb v.1.0.23 -> v.1.0.24
- Add support for macOS (thank you very much dccote@Github!).
- Copyright year update.
- *backward incompatibility* - libusb.cfg is now a regular INI file.
- Fixes for examples (but still some examples don't work properly).
- Setup update.

1.0.23b7 (2020-11-19)
---------------------
- Ability to specify the underlying shared library programmatically.
- General update and cleanup.
- Setup update.
- Removing dependence on atpublic.
- Fixed docs setup.
- Fix for hotplugtest example.

1.0.23b1 (2020-09-15)
---------------------
- | Upgrade for Windows: libusb v.1.0.22 -> v.1.0.23
  | (partially; without libusb_wrap_sys_device, because
  |  original Windows v.1.0.23 dlls do not export this function).
- Add support for Python 3.9
- Drop support for Python 3.5
- Setup update.
- Cleanup.

1.0.22b9 (2020-01-17)
---------------------
- Added ReadTheDocs config file.
- Setup update.

1.0.22b8 (2019-11-24)
---------------------
- Upgrade for Linux: libusb x64 v.1.0.21 -> v.1.0.22
- Fix for error when the shared library is configured.
- Cleanup.

1.0.22b6 (2019-11-23)
---------------------
- Initial support for Linux (libusb v.1.0.21 x64).

1.0.22b5 (2019-11-14)
---------------------
- Drop support for Python 2
- Drop support for Python 3.4
- Add support for Python 3.8
- Setup update and cleanup.

1.0.22b4 (2019-02-15)
---------------------
- Setup improvement.
- Update required setuptools version.
- Some updates of examples.

1.0.22b2 (2018-11-08)
---------------------
- Setup improvement.
- Update required setuptools version.

1.0.22b1 (2018-03-30)
---------------------
- Upgrade to the libusb v.1.0.22
- Setup improvement.

1.0.21b4 (2018-02-26)
---------------------
- Improve and simplify setup and packaging.

1.0.21b3 (2018-02-25)
---------------------
- Setup improvement.

1.0.21b2 (2017-12-18)
---------------------
- Fix the error of platform detecting.

1.0.21b1 (2017-10-11)
---------------------
- First beta release.

1.0.21a3 (2017-08-20)
---------------------
- Next alpha release.

1.0.21a0 (2016-09-24)
---------------------
- First alpha release.

0.0.1 (2016-09-23)
------------------
- Initial release.
