B
     9-e"                 @   s   d Z ddlZddlZddlZddlmZ ddlmZmZm	Z	m
Z
mZmZ eeZdd ZG dd deZG d	d
 d
eZG dd deZd"ddZdd ZdZd#ddZdd ZedddZdd Zdd Zdd Zedd d!Z dS )$z
Copyright (C) 2019 Interactive Brokers LLC. All rights reserved. This code is subject to the terms
 and conditions of the IB API Non-Commercial License or the IB API Commercial License, as applicable.
    N)Decimal)UNSET_INTEGERUNSET_DOUBLE
UNSET_LONGUNSET_DECIMALDOUBLE_INFINITYINFINITY_STRc             C   s   | S )N )fnr	   r	   G:\My Drive\STUDY\EPAT\09 TBP - Trading & Back-testing Platforms\TBP04 - Backtesting & Live Trading\IB IBridgePy API\02 Python 3.7 IBridgePy_Win_Anaconda37_64\ibapi\utils.py	iswrapper   s    r   c               @   s   e Zd Zdd ZdS )
BadMessagec             C   s
   || _ d S )N)text)selfr   r	   r	   r   __init__   s    zBadMessage.__init__N)__name__
__module____qualname__r   r	   r	   r	   r   r      s   r   c               @   s   e Zd Zdd ZdS )ClientExceptionc             C   s   || _ || _|| _d S )N)codemsgr   )r   r   r   r   r	   r	   r   r   !   s    zClientException.__init__N)r   r   r   r   r	   r	   r	   r   r       s   r   c               @   s   e Zd Zdd Zdd ZdS )LogFunctionc             C   s   || _ || _d S )N)r   logLevel)r   r   r   r	   r	   r   r   '   s    zLogFunction.__init__c                s    fdd}|S )Nc                sl   t  jrZdd td D }t jdjj	 fddt
||D |  f|  d S )Nc             S   s   g | ]}|d kr|qS )r   r	   ).0ZargNamer	   r	   r   
<listcomp>.   s    z7LogFunction.__call__.<locals>.newFn.<locals>.<listcomp>r   z{} {} {} kw:{}c                s   g | ]}|d   k	r|qS )   r	   )r   ZnameNarg)origSelfr	   r   r   1   s    )logger	getLoggerisEnabledForr   inspectgetfullargspeclogformatr   r   zip)r   argskwargsZargNames)r
   r   )r   r   newFn,   s    z#LogFunction.__call__.<locals>.newFnr	   )r   r
   r'   r	   )r
   r   r   __call__+   s    zLogFunction.__call__N)r   r   r   r   r(   r	   r	   r	   r   r   &   s   r   c             C   s   t d|  jjS )Nr   )sys	_getframef_codeco_name)Z
parent_idxr	   r	   r   current_fn_name6   s    r-   c             C   s0   t d| jt| || t| j| || d S )Nz%s %s %s=|%s|)r   debug	__class__idsuper__setattr__)r   var_nameZ	var_valuer	   r	   r   setattr_log;   s    r4   TFc             C   s  yt |}W n tk
r(   tdY nX td| | | tkr|d ksxt|dksx| dksx| dksx| dkr|tS | | S | t	krt
|t	kr|S t
|tkr|j|rdndd	d
S tdt
| d | }| tkrt} | tkr| tkrtS |rX|d ks t|dkrN| tkr0t}n| tkr@t}ntd|  n| |}n| |pbd}|tkr|dkr~dnd}|S )Nzno more fieldszdecode %s %sr   Z
2147483647Z9223372036854775807z1.7976931348623157E308zunicode-escapezUTF-8backslashreplace)errorszunsupported incoming type z for desired type 'strz(unsupported desired type for empty valueFT)nextStopIterationr   r   r.   r   lendecoder   strtypebytes	TypeErrorboolintfloatr   r   r   r   )the_typefieldsZ
show_unsetZuse_unicodes	orig_typenr	   r	   r   r:   D   sB    8




r:   c             C   sN   dd l }x@t| D ]2\}}t||jkrtd|  t|  t  qW d S )Nr   zExercising: %s:)typesr    
getmembersr<   FunctionTypeprint)klassrG   _varr	   r	   r   ExerciseStaticMethodsu   s    
rN   )valc             C   s(   | t kr$d| dddS dS )Nz{:.8f}0., )r   r#   rstrip)rO   r	   r	   r   floatMaxString   s    rU   c             C   s   | t krt| S dS )NrS   )r   r;   )rO   r	   r	   r   longMaxString   s    rV   c             C   s   | t krt| S dS )NrS   )r   r;   )rO   r	   r	   r   intMaxString   s    rW   c             C   s   t dd | D S )Nc             s   s&   | ]}t |d kot |dk V  qdS )       N)ord)r   cr	   r	   r   	<genexpr>   s    z#isAsciiPrintable.<locals>.<genexpr>)all)rO   r	   r	   r   isAsciiPrintable   s    r^   c             C   s   | t krd| S dS )Nz{:f}rS   )r   r#   )rO   r	   r	   r   decimalMaxString   s    r_   )r   )FF)!__doc__r)   loggingr    decimalr   ibapi.commonr   r   r   r   r   r   r   r   r   r   	Exceptionr   r   objectr   r-   r4   Z
SHOW_UNSETr:   rN   rA   rU   rV   rW   r^   r_   r	   r	   r	   r   <module>   s(    


1