Your IP : 3.129.216.248
3
u1�W�, � @ s� d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlZddlZddlZddl Z ddl
Z
ddlmZ ddlm
Z
d d
� Ze
jej�G dd� de��ZG d
d� de�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�ZdS )z�
pyudev.discover
===============
Tools to discover a device given limited information.
.. moduleauthor:: mulhern <amulhern@redhat.com>
� )�absolute_import)�division)�print_function)�unicode_literalsN)�Devices)�DeviceNotFoundErrorc s t j� �� fdd��}|S )z\
Allow Device discovery methods to return None instead of raising an
exception.
c s$ y
� | |�S t k
r dS X dS )z�
Returns result of calling ``func`` on ``args``, ``kwargs``.
Returns None if ``func`` raises :exc:`DeviceNotFoundError`.
N)r )�args�kwargs)�func� �/usr/lib/python3.6/discover.py�the_func1 s
z wrap_exception.<locals>.the_func)� functools�wraps)r
r
r )r
r �wrap_exception+ s r c @ sL e Zd ZdZeejdd� ��Zeejdd� ��Zedd� �Z edd � �Z
d
S )�
HypothesiszM
Represents a hypothesis about the meaning of the device identifier.
c C s
t � �dS )a�
Match the given string according to the hypothesis.
The purpose of this method is to obtain a value corresponding to
``value`` if that is possible. It may use a regular expression, but
in general it should just return ``value`` and let the lookup method
sort out the rest.
:param str value: the string to inspect
:returns: the matched thing or None if unmatched
:rtype: the type of lookup's key parameter or NoneType
N)�NotImplementedError)�cls�valuer r r �matchD s zHypothesis.matchc C s
t � �dS )aN
Lookup the given string according to the hypothesis.
:param Context context: the pyudev context
:param key: a key with which to lookup the device
:type key: the type of match's return value if not None
:returns: a list of Devices obtained
:rtype: frozenset of :class:`Device`
N)r )r �context�keyr r r �lookupU s zHypothesis.lookupc C s dS )z�
A potentially expensive method that may allow an :class:`Hypothesis`
to find devices more rapidly or to find a device that it would
otherwise miss.
:param Context context: the pyudev context
Nr )r r r r r �setupc s zHypothesis.setupc C s$ | j |�}|dk r| j||�S t� S )a
Get any devices that may correspond to the given string.
:param Context context: the pyudev context
:param str value: the value to look for
:returns: a list of devices obtained
:rtype: set of :class:`Device`
N)r r � frozenset)r r r r r r r �get_devicesn s
zHypothesis.get_devicesN)�__name__�
__module__�__qualname__�__doc__�classmethod�abc�abstractmethodr r r r r r r r r >