Skip to main content

WS-Discovery implementation for python

Project description

Documentation Status

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.

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:

    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.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 wsdiscovercommand-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)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

WSDiscovery-2.0.0.tar.gz (23.5 kB view details)

Uploaded Source

Built Distribution

WSDiscovery-2.0.0-py3-none-any.whl (31.3 kB view details)

Uploaded Python 3

File details

Details for the file WSDiscovery-2.0.0.tar.gz.

File metadata

  • Download URL: WSDiscovery-2.0.0.tar.gz
  • Upload date:
  • Size: 23.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.2

File hashes

Hashes for WSDiscovery-2.0.0.tar.gz
Algorithm Hash digest
SHA256 b0f9c36a11f9a56905223915c33c295f4240a6a25de60b32b305cbe69202ee78
MD5 69370e4f0f86f40f635b606b80d8866c
BLAKE2b-256 e5aed9055527b2e49232bbcca175c091aee82a4ba27ee137e33cf9f2f21fb3cd

See more details on using hashes here.

File details

Details for the file WSDiscovery-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: WSDiscovery-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 31.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.2

File hashes

Hashes for WSDiscovery-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 749400746d077d38c560f6bf89043421974809f93d92ad109668b95e7690b4a6
MD5 f9f5f400f2fd7e97355dfa5a9a0b0fe2
BLAKE2b-256 1aeda415d6e41e9d46a2c4cfc60906d928909886491e4a70252301b93382bfba

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page