ó
Ý¹‚Yc        9   @` s>  d  Z  d d l m Z m Z m Z m Z d d l Z d d l Z d d l m	 Z	 m
 Z
 m Z m Z m Z m Z m Z m Z d d l m Z d e
 f d „  ƒ  YZ e e ƒ Z d e
 f d	 „  ƒ  YZ e e ƒ Z d
 e
 f d „  ƒ  YZ e e ƒ Z d e
 f d „  ƒ  YZ e e ƒ Z d e
 f d „  ƒ  YZ e e ƒ Z e Z i e d d e f d e g d f d e g e f d e g e f d e g e f d e g e f d e g e f d e e g d f ƒ d 6e d e g e f d e g e f d e g d f d e e g e f d e e g e f d e e e g e f d e e e g e f d e e e g e f d e e g e f d e e g e f d  e e g e f d! e g e f d" e g e f d# e g e f ƒ d$ 6e d% e g e f d& e g e f d' e g e f ƒ d( 6e d e g e f d e g d f d) e e g e f d* e e e g e f d+ e e e g e f d, e g e f d- e g e f d. e e e g e f d/ e g e f d0 e g e f d1 e g e f d2 e g e f d3 e g e f d4 e g e f d5 e g e f d6 e g e f d7 e e g e f d8 e e g e f d9 e g e f d: e g e f d; e g e f d< e g e f d= e g e f d> e g e f d? e g e f d@ e g e f dA e e g e f ƒ dB 6e d e g e f d e g d f dC e e g e f dD e e g e f dE e g e f dF e g e f dG e g e f dH e g e f dI e e e g e f dJ e e g e f dK e g e f dL e g e f ƒ dM 6Z  i e! e j" 6e# e j$ 6e% e j& 6Z' dN „  Z( dO „  Z) dP „  Z* dQ „  Z+ e dR e) dS e) dT e) dU e) dV e) dW e) dX e) dY e) dZ e) d[ e* d\ e* d] e+ d^ e) d_ e) d` e* da e* ƒ Z, db „  Z- d S(c   u½   
    _libudev
    ========

    Wrapper types for libudev.  Use ``libudev`` attribute to access libudev
    functions.

    .. moduleauthor::  Sebastian Wiesner  <lunaryorn@googlemail.com>
i    (   t   print_functiont   divisiont   unicode_literalst   absolute_importN(   t   CDLLt	   Structuret   POINTERt	   get_errnot   c_chart   c_char_pt   c_intt   c_ulonglong(   t   find_libraryt   udevc           B` s   e  Z d  Z RS(   u'   
    Dummy for ``udev`` structure.
    (   t   __name__t
   __module__t   __doc__(    (    (    s3   /usr/lib/python2.7/site-packages/pyudev/_libudev.pyR   (   s   t   udev_enumeratec           B` s   e  Z d  Z RS(   u1   
    Dummy for ``udev_enumerate`` structure.
    (   R   R   R   (    (    (    s3   /usr/lib/python2.7/site-packages/pyudev/_libudev.pyR   1   s   t   udev_list_entryc           B` s   e  Z d  Z RS(   u2   
    Dummy for ``udev_list_entry`` structure.
    (   R   R   R   (    (    (    s3   /usr/lib/python2.7/site-packages/pyudev/_libudev.pyR   9   s   t   udev_devicec           B` s   e  Z d  Z RS(   u.   
    Dummy for ``udev_device`` structure.
    (   R   R   R   (    (    (    s3   /usr/lib/python2.7/site-packages/pyudev/_libudev.pyR   A   s   t   udev_monitorc           B` s   e  Z d  Z RS(   u.   
    Dummy for ``udev_device`` structure.
    (   R   R   R   (    (    (    s3   /usr/lib/python2.7/site-packages/pyudev/_libudev.pyR   I   s   t   newt   unreft   reft   get_sys_patht   get_dev_patht   get_run_patht   get_log_priorityt   set_log_priorityu   udevt   add_match_subsystemt   add_nomatch_subsystemt   add_match_propertyt   add_match_sysattrt   add_nomatch_sysattrt   add_match_tagt   add_match_sysnamet   add_match_parentt   add_match_is_initializedt   scan_devicest   get_list_entryu   udev_enumeratet   get_nextt   get_namet	   get_valueu   udev_list_entryt   new_from_syspatht   new_from_subsystem_sysnamet   new_from_devnumt   new_from_environmentt
   get_parentt!   get_parent_with_subsystem_devtypet   get_devpatht   get_subsystemt   get_syspatht
   get_sysnumt   get_sysnamet
   get_drivert   get_devtypet   get_devnodet   get_property_valuet   get_sysattr_valuet
   get_devnumt
   get_actiont   get_is_initializedt   get_usec_since_initializedt   get_devlinks_list_entryt   get_tags_list_entryt   get_properties_list_entryt   get_sysattr_list_entryt   has_tagu   udev_devicet   new_from_netlinkt   new_from_sockett   enable_receivingt   set_receive_buffer_sizet   get_fdt   receive_devicet"   filter_add_match_subsystem_devtypet   filter_add_match_tagt   filter_updatet   filter_removeu   udev_monitorc         C` s<   t  j |  ƒ } | d k	 r" | ƒ  St |  t j |  ƒ ƒ Sd S(   u“   
    Create an exception from ``errno``.

    ``errno`` is an integral error number.

    Return an exception object appropriate to ``errno``.
    N(   t   ERRNO_EXCEPTIONSt   gett   Nonet   EnvironmentErrort   ost   strerror(   t   errnot	   exception(    (    s3   /usr/lib/python2.7/site-packages/pyudev/_libudev.pyt   exception_from_errno¬   s    c         G` s*   |  d k  r" |  } t  | ƒ ‚ n |  Sd S(   uÔ  
    Error checker for udev funtions, which return negative error codes.

    If ``result`` is smaller than ``0``, it is interpreted as negative error
    code, and an appropriate exception is raised:

    - ``-ENOMEM`` raises a :exc:`~exceptions.MemoryError`
    - ``-EOVERFLOW`` raises a :exc:`~exceptions.OverflowError`
    - all other error codes raise :exc:`~exceptions.EnvironmentError`

    If result is greater or equal to ``0``, it is returned unchanged.
    i    N(   RV   (   t   resultt   funct   argsRT   (    (    s3   /usr/lib/python2.7/site-packages/pyudev/_libudev.pyt   check_negative_errorcode»   s    c         G` s7   |  d k r3 t  ƒ  } | d k r3 t | ƒ ‚ q3 n  |  S(   uÔ   
    Error checker to check the system ``errno`` as returned by
    :func:`ctypes.get_errno()`.

    If ``result`` is not ``0``, an exception according to this errno is raised.
    Otherwise nothing happens.
    i    (   R   RV   (   RW   RX   RY   RT   (    (    s3   /usr/lib/python2.7/site-packages/pyudev/_libudev.pyt   check_errnoÐ   s
    	c         G` s1   |  s- t  ƒ  } | d k r- t | ƒ ‚ q- n  |  S(   uÚ   
    Error checker to check the system ``errno`` as returned by
    :func:`ctypes.get_errno()`.

    If ``result`` is a null pointer, an exception according to this errno is
    raised.  Otherwise nothing happens.
    i    (   R   RV   (   RW   RX   RY   RT   (    (    s3   /usr/lib/python2.7/site-packages/pyudev/_libudev.pyt   check_errno_on_null_pointerß   s
    	t   udev_enumerate_add_match_parentt"   udev_enumerate_add_match_subsystemt$   udev_enumerate_add_nomatch_subsystemt!   udev_enumerate_add_match_propertyt    udev_enumerate_add_match_sysattrt"   udev_enumerate_add_nomatch_sysattrt   udev_enumerate_add_match_tagt    udev_enumerate_add_match_sysnamet'   udev_enumerate_add_match_is_initializedt$   udev_monitor_set_receive_buffer_sizet   udev_monitor_enable_receivingt   udev_monitor_receive_devicet/   udev_monitor_filter_add_match_subsystem_devtypet!   udev_monitor_filter_add_match_tagt   udev_monitor_filter_updatet   udev_monitor_filter_removec    
      C` sÕ   t  d ƒ }  |  s! t d ƒ ‚ n  t |  d t ƒ} x› t j ƒ  D] \ } } x~ | D]v } d j | | ƒ } t | | d ƒ } | rS | | \ } } | | _	 | | _
 t j | ƒ }	 |	 rÉ |	 | _ qÉ qS qS Wq@ W| S(   uK  
    Load the ``udev`` library and return a :class:`ctypes.CDLL` object for
    it.  The library has errno handling enabled.

    Important functions are given proper signatures and return types to
    support type checking and argument conversion.

    Raise :exc:`~exceptions.ImportError`, if the udev library was not found.
    u   udevu   No library named udevt	   use_errnou   {0}_{1}N(   R   t   ImportErrorR   t   Truet
   SIGNATURESt   itemst   formatt   getattrRP   t   argtypest   restypet   ERROR_CHECKERSRO   t   errcheck(
   t   udev_library_namet   libudevt	   namespacet   memberst   funcnamet   fullnameRX   Rt   Ru   t   errorchecker(    (    s3   /usr/lib/python2.7/site-packages/pyudev/_libudev.pyt   load_udev_library  s     
		(.   R   t
   __future__R    R   R   R   RR   RT   t   ctypesR   R   R   R   R   R	   R
   R   t   ctypes.utilR   R   t   udev_pR   t   udev_enumerate_pR   t   udev_list_entry_pR   t   udev_device_pR   t   udev_monitor_pt   dev_tt   dictRP   Rp   t   MemoryErrort   ENOMEMt   OverflowErrort	   EOVERFLOWt
   ValueErrort   EINVALRN   RV   RZ   R[   R\   Rv   R   (    (    (    s3   /usr/lib/python2.7/site-packages/pyudev/_libudev.pyt   <module>   sä   ":		

					