Ë
    ålÖiW  ã                   óP   — d dl mZm Z  d dlmZmZmZmZ d dlmZm	Z	  G d„ d«      Z
y)é    )ÚdateÚdatetime)ÚDateÚDateTimeÚNumberÚText)ÚBarsÚColumnsc                   ó>   — e Zd ZdZed„ «       Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y)	ÚScalez8
    Base class for various kinds of scale objects.
    c                 óô  — ddl m} ddlm} ddlm} |t        u rkt        j                  }t        j                  }|D ];  \  }	}
t        ||	j                  |«      «      }t        ||	j                  |«      «      }Œ=  |||«      }|S |t        u rkt        j                  }t        j                  }|D ];  \  }	}
t        ||	j                  |«      «      }t        ||	j                  |«      «      }Œ=  |||«      }|S |t        u r¡d}d}d}|D ]{  \  }	}
t        |
t        t        f«      rd}|€|	j                  |«      }nt        ||	j                  |«      «      }|€|	j                  |«      }Œat        ||	j                  |«      «      }Œ} |r|dkD  rd}|dk  rd} |||«      }|S |t         u rÈd}t#        |«      dk(  r|d   d   j%                  |«      }n˜t'        |d   d   j%                  |«      «      }|D �	�
cg c]  \  }	}
|	j%                  |«      ‘Œ }}	}
d}|D ]  }	t'        |	«      |k7  sŒd} n |r|d   d   j%                  |«      }n t)         t'        «       j*                  |Ž «      } ||«      }S c c}
}	w )	a{  
        Infer's an appropriate default scale for a given sequence of
        :class:`.Series`.

        :param chart_series:
            A sequence of :class:`.Series` instances
        :param dimension:
            The dimension, :code:`X` or :code:`Y` of the data to infer for.
        :param data_type:
            The type of data contained in the series dimension.
        r   )ÚLinear)ÚOrdinal)ÚTemporalFNTé   )Úleather.scales.linearr   Úleather.scales.ordinalr   Úleather.scales.temporalr   r   r   ÚmaxÚminr   r   r   Ú
isinstancer	   r
   r   ÚlenÚvaluesÚsetÚsortedÚunion)ÚclsÚlayersÚ	dimensionÚ	data_typer   r   r   Údata_minÚdata_maxÚseriesÚshapeÚscaleÚ
force_zeroÚscale_valuesÚfirst_seriesÚdata_seriesÚall_sames                    úX/var/www/html/strategist-ai/venv_dbt/lib/python3.12/site-packages/leather/scales/base.pyÚinferzScale.infer   s™  € õ 	1Ý2Ý4ð œÑÜ—x‘xˆHÜ—x‘xˆHà!'ò @‘�˜Ü˜x¨¯©°IÓ)>Ó?�Ü˜x¨¯©°IÓ)>Ó?‘ð@ñ ˜X xÓ0ˆEð@ ˆð œ(Ñ"Ü—|‘|ˆHÜ—|‘|ˆHà!'ò @‘�˜Ü˜x¨¯©°IÓ)>Ó?�Ü˜x¨¯©°IÓ)>Ó?‘ð@ñ ˜X xÓ0ˆEðn ˆðk œ&Ñ ØˆJØˆHØˆHà!'ò D‘�˜Ü˜e¤d¬G _Ô5Ø!%�JàÐ#Ø%Ÿz™z¨)Ó4‘Hä" 8¨V¯Z©Z¸	Ó-BÓC�HàÐ#Ø%Ÿz™z¨)Ó4‘Hä" 8¨V¯Z©Z¸	Ó-BÓC‘HðDñ Ø˜a’<Ø �Hà˜a’<Ø �Há˜8 XÓ.ˆEð6 ˆð3 œ$ÑØˆLô �6‹{˜aÒØ% a™y¨™|×2Ñ2°9Ó=‘ä" 6¨!¡9¨Q¡<×#6Ñ#6°yÓ#AÓB�ØMS×T¹M¸FÀE˜vŸ}™}¨YÕ7ÐT�ÑTØ�à)ò �FÜ˜6“{ lÓ2Ø#(˜Ùðñ Ø#)¨!¡9¨Q¡<×#6Ñ#6°yÓ#A‘Lô $*¨+¬#«%¯+©+°{Ð*CÓ#D�Lá˜LÓ)ˆEàˆùó# Us   Ç7I4c                 ó   — t         ‚)zq
        Return :code:`True` if a given value is contained within this scale's
        displayed domain.
        ©ÚNotImplementedError)ÚselfÚvs     r+   ÚcontainszScale.containsg   ó
   € ô
 "Ð!ó    c                 ó   — t         ‚)zK
        Project a value in this scale's domain to a target range.
        r.   ©r0   ÚvalueÚ	range_minÚ	range_maxs       r+   ÚprojectzScale.projectn   ó
   € ô "Ð!r4   c                 ó   — t         ‚)z¢
        Project a value in this scale's domain to an interval in the target
        range. This is used for places :class:`.Bars` and :class:`.Columns`.
        r.   r6   s       r+   Úproject_intervalzScale.project_intervalt   r3   r4   c                 ó   — t         ‚)z<
        Generate a series of ticks for this scale.
        r.   )r0   s    r+   ÚtickszScale.ticks{   r;   r4   c                 ó   — t        |«      S )z­
        Format ticks for display.

        This method is used as a default which will be ignored if the user
        provides a custom tick formatter to the axis.
        )Ústr)r0   r7   ÚiÚcounts       r+   Úformat_tickzScale.format_tick�   s   € ô �5‹zÐr4   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úclassmethodr,   r2   r:   r=   r?   rD   © r4   r+   r   r      s7   „ ñð ñYó ðYòv"ò"ò"ò"ór4   r   N)r   r   Úleather.data_typesr   r   r   r   Úleather.shapesr	   r
   r   rJ   r4   r+   ú<module>rM      s   ðß #ç ;Ó ;ß (÷Aò Ar4   