Metadata-Version: 2.1
Name: WSDiscovery
Version: 2.0.2.dev0
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
License: UNKNOWN
Platform: UNKNOWN
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.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Communications
Description-Content-Type: text/markdown
License-File: LICENSE

[![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 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.


Changelog
==========

2.0.1 (unreleased)
-------------------

- nothing yet

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)


