o
    QDi                     @  sn   d dl mZ d dlZd dlmZ d dlmZ d dlZddlm	Z	 ddl
mZ ejdd	d
G dd deZdS )    )annotationsN)Decimal)Any   )settings)FieldTF)kw_onlyreprc                   @  s   e Zd ZU dZdZg dZejZde	d< 	 ej
Zde	d< 	 ejZde	d< 	 ejZde	d	< 	 d
d Zdd ZdddiddiddiddidiZdS )NumberFieldnumberT)requiredminimummaximumenumboolbare_numberfloat_numberstrdecimal_char
group_charc                   sZ   d  j s
td d g d}t| r#d	 fdd}|d	fdd}|S )
Nz((^[^-\d]*)|(\D*$)))r   r   r   cellr   c                   sF    r  d| } | jd} jdkrd| v rd S | jd} | S )N .)subreplacer   r   r   )patternself S/var/www/Datamplify/venv/lib/python3.10/site-packages/frictionless/fields/number.pyprocessor_function<   s   z;NumberField.create_value_reader.<locals>.processor_functionc                   s   t }t}jrt}t }t| tr0|  }  r  | } | d u r d S z|| W S  ty/   Y d S w t| |r7| S | du s?| du rAd S t| trH| S t| |rZ||t u rWt| S | S d S )NTF)r   floatr   
isinstancer   strip	Exceptionint)r   Primary	Secondary)	processorr   r   r   value_readerH   s2   




z5NumberField.create_value_reader.<locals>.value_readerr   r   )r   recompilesetintersectionlist_defined)r   
propertiesr    r)   r   )r   r(   r   r   create_value_reader1   s   
	zNumberField.create_value_readerc                   s   d fdd}|S )Nr   r   c                   sX     dr| ddd} nt| }   dr| d j}   dr*| d j} | S )Nr   ,gr   r   )has_definedr   r   r   r   r   r   r   r   value_writern   s   


z5NumberField.create_value_writer.<locals>.value_writerr*   r   )r   r6   r   r5   r   create_value_writerl   s   zNumberField.create_value_writerr0   typebooleanstring)
bareNumberfloatNumberdecimalChar	groupCharN)__name__
__module____qualname__r8   builtinsupported_constraintsr   DEFAULT_BARE_NUMBERr   __annotations__DEFAULT_FLOAT_NUMBERr   DEFAULT_DECIMAL_CHARr   DEFAULT_GROUP_CHARr   r1   r7   metadata_profile_patchr   r   r   r   r
      s*   
 ;r
   )
__future__r   r+   decimalr   typingr   attrsr   r   schemar   definer
   r   r   r   r   <module>   s    