View file File name : discover.cpython-36.pyc Content :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 >