
    i                     @    d dl Z d dlmZ d Zd Zd ZddZd Zd Z	dS )	    Nc              #      K   g }t          |           D ]3\  }}|                    |           t          |          |k    r|V  g }4|r|V  dS dS )a  
    Creates a generator by slicing ``data`` into chunks of ``block_size``.

    >>> data = range(10)
    >>> list(block_splitter(data, 2))
    [[0, 1], [2, 3], [4, 5], [6, 7], [8, 9]]

    If ``data`` cannot be evenly divided by ``block_size``, the last block will
    simply be the remainder of the data. Example:

    >>> data = range(10)
    >>> list(block_splitter(data, 3))
    [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]]

    If the ``block_size`` is greater than the total length of ``data``, a
    single block will be generated:

    >>> data = range(3)
    >>> list(block_splitter(data, 4))
    [[0, 1, 2]]

    :param data:
        Any iterable. If ``data`` is a generator, it will be exhausted,
        obviously.
    :param int block_site:
        Desired (maximum) block size.
    N)	enumerateappendlen)data
block_sizebufidatums        ]/Users/user/workspace/sujinbaek/cqa-test-app/venv/lib/python3.11/site-packages/geomet/util.pyblock_splitterr      sy      8 CdOO  5

5s88z!!IIIC  					     c                 F    t          t          j        ||                     S )z
    Return first n items of the iterable as a list

    Copied shamelessly from
    http://docs.python.org/2/library/itertools.html#recipes.
    )list	itertoolsislice)niterables     r   taker   ;   s     	 1--...r   c                      t          |           S N)bytes)a_lists    r   
as_bin_strr   E   s    ==r   c           
         | d         dk    rR| d         \  }}|g|g}}fd|D             }fd|D             }t          t          ||                    d         }| d         dv rOt          | d          \  }}fd	|D             }fd
|D             }t          t          ||                    }n| d         dv rhg }| d         D ]\}t          | \  }}fd|D             }fd|D             }|                    t          t          ||                               ]n| d         dk    r| d         }g }|D ]x}	g }
|	D ]\}t          | \  }}fd|D             }fd|D             }|
                    t          t          ||                               ]|                    |
           y| d         |dS )z;Round coordinates of a geometric object to given precision.typePointcoordinatesNc                 0    g | ]}t          |          S  round.0v	precisions     r   
<listcomp>zround_geom.<locals>.<listcomp>O   #    222!%9%%222r   c                 0    g | ]}t          |          S r    r!   r#   s     r   r'   zround_geom.<locals>.<listcomp>P   r(   r   r   )
LineString
MultiPointc                 0    g | ]}t          |          S r    r!   r#   s     r   r'   zround_geom.<locals>.<listcomp>U   r(   r   c                 0    g | ]}t          |          S r    r!   r#   s     r   r'   zround_geom.<locals>.<listcomp>V   r(   r   )PolygonMultiLineStringc                 0    g | ]}t          |          S r    r!   r#   s     r   r'   zround_geom.<locals>.<listcomp>]   #    666aeAy))666r   c                 0    g | ]}t          |          S r    r!   r#   s     r   r'   zround_geom.<locals>.<listcomp>^   r1   r   MultiPolygonc                 0    g | ]}t          |          S r    r!   r#   s     r   r'   zround_geom.<locals>.<listcomp>h   #    :::!%9--:::r   c                 0    g | ]}t          |          S r    r!   r#   s     r   r'   zround_geom.<locals>.<listcomp>i   r5   r   )r   r   )tuplezipr   )geomr&   xyxpyp
new_coordspiecepartspartinner_coordsrings    `          r   
round_geomrD   I   sc   F|wM"1qcB 2222r222B2222r222B3r2;;''*
F|333d=)*B 2222r222B2222r222B3r2;;''

	f7	7	7
-( 	2 	2E%[FB$6666266666662666eCBKK001111	2 
f	'	']#
 	, 	,DL 8 8dB(::::r:::B::::r:::B##E#b"++$6$67777l++++L<<<r   c              #      K   | D ]L}t          |t          j                  r,t          |t                    st	          |          D ]}|V  H|V  MdS )zbFlatten a multi-dimensional array-like to a single dimensional sequence
    (as a generator).
    N)
isinstancecollectionsIterablestrflatten_multi_dim)sequencer:   r;   s      r   rJ   rJ   o   s|         q+.// 	"1c**	&q))   GGGG r   c                     | rdS dS )N<>r    )is_little_endians    r   endian_tokenrP   |   s     ssr   r   )
r   collections.abcabcrG   r   r   r   rD   rJ   rP   r    r   r   <module>rS      s        % % % % % %& & &R/ / /  #= #= #= #=L
 
 
    r   