Mini Shell
3
��]o- � ; @ s� d Z ddlZddlZddlZddlT ddlmZ ddlmZ ddl T ddl
mZ dZdd� Z
ejd k�rdZyejd
�ZW n@ eefk
r� yejd�ZW n eefk
r� Y nX Y nX edk �reee�s�eeej� �ZejjZdZeede�Ze�se� �eeed
�Zedk�r�ejdk�r�yejd�ZW n eefk
�rL Y nrX ee�ZyLejjejje��Zeee��r�ej ej� �Ze!e"�j#ed�Z$e"e�e$_%W n e&k
�r� dZY nX edk�rxBe
� D ]8Zedk �r�ye'j(e�ZW n e)k
�r Y nX P �q�W edk�r"dZ*ee*��dd� Z+e+de"e"e"e,�Z-e+de"e"e"e"e,�Z.e,Z/e,Z0ej1Z2g e2_3e/e2_4ej5Z6e/ge6_3de6_4ej7Z8e/e"ge8_3e0e8_4ej9Z:e/e"ge:_3e0e:_4ej;Z<e/e0ge<_3de<_4ej=Z>e/e"ge>_3e?e<_4ej@ZAe/e"e"geA_3deA_4ejBZCe/geC_3e"eC_4ejDZEe/e-e,geE_3deE_4dd� ZFejGZHe/e.e,geH_3deH_4dd� ZIy
ejJZKW n e&k
�rf dd� ZKY nX e/e"geK_3e"eK_4y
ejLZMW n e&k
�r� dd� ZMY nX e/e"e"geM_3deM_4y
ejNZOW n e&k
�r� dd� ZOY nX g eO_3e"eO_4ejPZQe0e"eRgeQ_3e?eQ_4dd� ZSejTZUe0e"eRe!eR�geU_3e!e"�eU_4d d!� ZVejWZXe0e"eRgeX_3deX_4d"d#� ZYejWZZe0e"eRgeZ_3deZ_4d$d%� Z[ej\Z]e0e"eRge]_3de]_4d&d'� Z^ej_Z`e0e"eRge`_3de`_4d(d)� ZaejbZce0e"eRgec_3e?ec_4d*d+� ZdejeZfe0e"eRgef_3e?ef_4d,d-� ZgejhZie0e"eRgei_3e?ei_4d.d/� ZjejkZle0e"eRe"eRgel_3del_4d0d1� ZmejnZoe0e!e"�geo_3deo_4ejpZqe0geq_3e"eq_4ejrZse0e.e,ges_3des_4d2d3� ZtdS )4a
enchant._enchant: ctypes-based wrapper for enchant C library
This module implements the low-level interface to the underlying
C library for enchant. The interface is based on ctypes and tries
to do as little as possible while making the higher-level components
easier to write.
The following conveniences are provided that differ from the underlying
C API:
* the "enchant" prefix has been removed from all functions, since
python has a proper module system
* callback functions do not take a user_data argument, since
python has proper closures that can manage this internally
* string lengths are not passed into functions such as dict_check,
since python strings know how long they are
� N)�*)�find_library)�utils)�unicodec c s\ t jjd�V tjdkr*dV dV dV td�V td�V td �V tjdkrXd
V dS )
z=Generator yielding possible locations of the enchant library.ZPYENCHANT_LIBRARY_PATH�win32�darwinzlibenchant.so.1.6.0zlibenchant.so.1z
libenchant.so�enchantZ
libenchantzlibenchant-1z/opt/local/lib/libenchant.dylibN)r r )�os�environ�get�sys�platformr � r r �/usr/lib/python3.6/_enchant.py�_e_path_possibilities@ s
r r zlibenchant.dllzlibenchant-1.dll� )Zhandler zlib/libenchant.1.dylibZenchant_prefix_dir_pz�The 'enchant' C library was not found. Please install it via your OS package manager, or use a pre-built binary wheel from PyPI.c G s t | f|�� S )z�Factory for generating callback function prototypes.
This is factored into a factory so I can easily change the definition
for experimentation or debugging.
)Z CFUNCTYPE)�restype�argtypesr r r �CALLBACK� s r c s � fdd�}t | t|�d � d S )Nc s � | d d� � d S )N� ���r )�args)�cbfuncr r �cbfunc1� s z broker_describe.<locals>.cbfunc1)�broker_describe1�t_broker_desc_func)�brokerr r r )r r �broker_describe� s r c s � fdd�}t | t|�d � d S )Nc s � | d d� � d S )Nr r r )r )r r r r � s z"broker_list_dicts.<locals>.cbfunc1)�broker_list_dicts1�t_dict_desc_func)r r r r )r r �broker_list_dicts� s r c C s
t j|�S )N)�e�enchant_broker_get_param)r �
param_namer r r �broker_get_param� s r$ c C s
t j|�S )N)r! �enchant_broker_set_param)r r# r r r �broker_set_param� s r&