Metadata-Version: 2.1 Name: WSDiscovery Version: 2.1.2 Summary: WS-Discovery implementation for python Home-page: https://github.com/andreikop/python-ws-discovery.git Author: Andrei Kopats Author-email: andrei.kopats@gmail.com Classifier: Development Status :: 4 - Beta Classifier: Environment :: Console Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+) Classifier: Operating System :: MacOS :: MacOS X Classifier: Operating System :: POSIX :: Linux Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.9 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: Topic :: Software Development :: Libraries Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Topic :: Communications Description-Content-Type: text/markdown License-File: LICENSE Requires-Dist: ifaddr Requires-Dist: click [![Documentation Status](https://readthedocs.org/projects/python-ws-discovery/badge/?version=latest)](https://python-ws-discovery.readthedocs.io/en/latest) WS-Discovery in Python ====================== This is WS-Discovery implementation for Python 3. It allows to both discover services and publish discoverable services. For Python 2 support, use the latest 1.x version of this package. Extensive [package documentation is available at ReadTheDocs](https://python-ws-discovery.readthedocs.io). Install from PyPI: `pip install WSDiscovery`. Basic usage ------------ A simple `wsdiscover` command-line client is provided for discovering WS-Discovery compliant devices and systems. Run `wsdiscover --help` for usage instructions. Here's an example of how to use the package in your Python code. The following code first publishes a service and then discovers it: ```python from wsdiscovery.discovery import ThreadedWSDiscovery as WSDiscovery from wsdiscovery.publishing import ThreadedWSPublishing as WSPublishing from wsdiscovery import QName, Scope # Define type, scope & address of service ttype1 = QName("http://www.onvif.org/ver10/device/wsdl", "Device") scope1 = Scope("onvif://www.onvif.org/Model") xAddr1 = "localhost:8080/abc" # Publish the service wsp = WSPublishing() wsp.start() wsp.publishService(types=[ttype1], scopes=[scope1], xAddrs=[xAddr1]) # Discover it (along with any other service out there) wsd = WSDiscovery() wsd.start() services = wsd.searchServices() for service in services: print(service.getEPR() + ":" + service.getXAddrs()[0]) wsd.stop() ``` Development notes ----------------- To fix a bug or develop this package, it is recommended to use a virtual environment and set up a development environment. For example: ``` $ python3 -m venv venv $ . venv/bin/activate (venv) $ pip3 install -e . ``` Then you can call `wsdiscover` and `wspublish` from within this virtual environment. Any code changes to the package will be available and testable immediately. Development state ----------------- This is not 100% complete and correct WS-Discovery implementation. It doesn't verify data received from the network. It may crash, and might contain security holes. No guarantees - test it carefully for your use case. Authors and maintaining ----------------------- Original version created by L.A. Fernando. Code was then forked and maintained by Andrei Kopats. Python2 support fixes by Michael Leinartas. Python3 port done by Pieter Jordaan. Packaging, major refactoring & command-line clients and reStructuredText package documentation by Petri Savolainen. See full list of contributors on the [GitHub page](https://github.com/andreikop/python-ws-discovery). Changelog ========== 2.0.1 (unreleased) ------------------- - Fix socket leaks in `NetworkingThread` 2.0.0 (2020-04-16) ------------------- - decoupled threaded networking from ws-discovery implementation - refactored app-level discovery & publishing code into their own modules - refactored message construction, serialization & deserialization - added new ``wspublish`` command-line client to publish a service - added unicast discovery support to ``wsdiscover``command-line client - collected all namespaces in one module - improved README example - good documentation in reStructuredText with Sphinx - removed Python 2 support code 1.1.2 (2019-01-01) ------------------- - Refactoring & Python2 fixes - Introduce automated Travis testing 1.1.1 (2018-12-21) ------------------- - Fix packaging 1.1.0 (2018-12-21) ------------------- - Add a simple command-line client (petri) - Debugging support, including message capture (petri) - Fix breakage caused by refactoring (petri) - Simple tests (petri) 1.0.0 (2018-12-18) ------------------- - Improved packaging (petri) - Modularize & refactor (petri) - Better Python2 support (mleinart) 0.2 (2017-05-19) ----------------- - First release @pypi (petri)