o
    Gb,                     @   sp   d dl mZ ddlmZ G dd deZdddZdd	d
ZdddZdddZ	dddZ
dddZg dZdS )    )generator_stop   )FeedParserDictc                       s   e Zd ZddddZ fddZdd ZeZeZeZeZ	d	d
 Z
dd Zdd Zdd Zdd Zdd ZeZdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* ZeZeZeZeZeZ d+d, Z!e!Z"  Z#S )-	NamespaceZgeoZgeorssZgml)z(http://www.w3.org/2003/01/geo/wgs84_pos#zhttp://www.georss.org/georsszhttp://www.opengis.net/gmlc                    s   d| _ tt|   d S )Nr   )
ingeometrysuperr   __init__self	__class__ G/usr/local/lib/python3.10/dist-packages/feedparser/namespaces/georss.pyr   *   s   zNamespace.__init__c                 C   s"   |  dd |  }t |d< d S )Ngeometryr   wherepush_get_contextr   r
   attrs_dcontextr   r   r   _start_georssgeom.      zNamespace._start_georssgeomc                 C   s   |   }|d | d S Nr   )r   update)r
   r   r   r   r   r   _save_where8   s   zNamespace._save_wherec                 C   $   t | d}|r| | d S d S Nr   )_parse_georss_pointpopr   r
   r   r   r   r   _end_georss_point<      zNamespace._end_georss_pointc                 C   r   r   )_parse_georss_liner   r   r    r   r   r   _end_georss_lineA   r"   zNamespace._end_georss_linec                 C   s(   |  d}t|}|r| | d S d S r   )r   _parse_georss_polygonr   )r
   thisr   r   r   r   _end_georss_polygonF   s
   
zNamespace._end_georss_polygonc                 C   r   r   )_parse_georss_boxr   r   r    r   r   r   _end_georss_boxL   r"   zNamespace._end_georss_boxc                 C   s"   |  dd |  }t |d< d S )Nr   r   r   r   r   r   r   _start_whereQ   r   zNamespace._start_wherec                 C   sj   | d}z
t| dd}W n ty   d}Y nw |  }d|vr'i |d< ||d d< ||d d< d S )NZsrsnameZsrsdimension2r   r   srsNamesrsDimension)getint
ValueErrorr   )r
   r   srs_namesrs_dimensionr   r   r   r   _parse_srs_attrsW   s   
zNamespace._parse_srs_attrsc                 C       |  | d| _| dd d S )N   r   r   r3   r   r   r
   r   r   r   r   _start_gml_pointc      
zNamespace._start_gml_pointc                 C   r4   )N
linestringr   r   r6   r7   r   r   r   _start_gml_linestringh   r9   zNamespace._start_gml_linestringc                 C   s   |  | | dd d S Nr   r   )r3   r   r7   r   r   r   _start_gml_polygonm   s   
zNamespace._start_gml_polygonc                 C      |  dd d S r<   r   r7   r   r   r   _start_gml_exteriorq      zNamespace._start_gml_exteriorc                 C   s   d| _ | dd d S )Npolygonr   r   )r   r   r7   r   r   r   _start_gml_linearringt   s   zNamespace._start_gml_linearringc                 C   r>   Nposr   r?   r7   r   r   r   _start_gml_posx   rA   zNamespace._start_gml_posc                 C   s   |  d}|  }|d d}|d dd}d}|r/d|v r/t|dd	 }t|tv }t|||d
}|r?| | d S d S NrE   r   r,   r-   r   TZEPSG:)swapdims)	r   r   r.   r/   splitbool_geogCSr   r   r
   r&   r   r1   r2   rJ   Zepsgr   r   r   r   _end_gml_pos{   s   
zNamespace._end_gml_posc                 C   r>   rD   r?   r7   r   r   r   _start_gml_poslist   rA   zNamespace._start_gml_poslistc                 C   s   |  d}|  }|d d}|d dd}d}|r/d|v r/t|dd	 }t|tv }t|| j||d
}|rA| 	| d S d S rG   )
r   r   r.   r/   rL   rM   rN   _parse_poslistr   r   rO   r   r   r   _end_gml_poslist   s   

zNamespace._end_gml_poslistc                 C   s   d| _ | d d S )Nr   r   )r   r   r	   r   r   r   	_end_geom   s   zNamespace._end_geomc                 C   s   |  d d S r   )r   r	   r   r   r   
_end_where   s   zNamespace._end_where)$__name__
__module____qualname__Zsupported_namespacesr   r   Z_start_georss_pointZ_start_georss_lineZ_start_georss_polygonZ_start_georss_boxr   r!   r$   r'   r)   r*   Z_start_georss_wherer3   r8   r;   r=   r@   rC   rF   rP   rQ   rS   rT   Z_end_gml_pointZ_end_gml_linestringZ_end_gml_linearringZ_end_gml_exteriorZ_end_gml_polygonrU   Z_end_georss_where__classcell__r   r   r   r   r   #   sH    r   Tc                 C   s<   |dkr
t | ||S |dkrt | ||}d|d fdS d S )Nr:   rB   Polygoncoordinatestyper[   )r#   )valueZ	geom_typerJ   rK   ringr   r   r   rR      s   rR   c                 c   s|    dd |  dd D }	 z#t|t|gd d |rdpd }|dkr,|t| t|V  W n
 ty<   Y d S w q)	Nc                 s   s    | ]}t |V  qd S )N)float).0llr   r   r   	<genexpr>   s    z%_gen_georss_coords.<locals>.<genexpr>, TrI   r5      )replacerL   nextappendtupleStopIteration)r^   rJ   rK   Zlatlonstr   r   r   _gen_georss_coords   s   "rm   c              	   C   s:   zt t| ||}d|d dW S  ttfy   Y d S w )NZPointr   r\   listrm   
IndexErrorr0   r^   rJ   rK   Zcoordsr   r   r   r      s   r   c              	   C   s6   zt t| ||}d|dW S  ttfy   Y d S w )NZ
LineStringr\   rn   rq   r   r   r   r#      s   r#   c              	   C   sJ   z
t t| ||}W n ttfy   Y d S w t|dk rd S d|fdS )N   rZ   r\   )ro   rm   rp   r0   len)r^   rJ   rK   r_   r   r   r   r%      s   r%   c              	   C   s:   zt t| ||}dt|dW S  ttfy   Y d S w )NBoxr\   )ro   rm   rj   rp   r0   rq   r   r   r   r(      s   r(   (  i  i  i  i1  iB  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i   i!  i"  i#  i$  i%  i&  i'  i(  i)  i*  i+  i,  i-  i.  i/  i0  i1  i2  i3  i4  i5  i6  i7  i8  i9  i:  i;  i<  i=  i>  i?  i@  iA  iB  iC  iD  iE  iF  iG  iH  iI  iJ  iK  iL  iM  iN  iO  iP  iR  iS  iT  iU  iV  iW  iX  iY  i\  i]  i^  i_  i`  ia  ib  ic  id  ie  if  ig  ih  ii  ij  ik  il  im  in  io  ip  iq  ir  is  it  iu  iv  iw  ix  iz  i{  i|  i}  i~  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  io  iv  i{  i  i  i  i  i  i  i  i  i  i  i  i  i   i  i  i  i  i  i  i  i  i	  i
  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i   i!  i"  i#  i$  i%  i&  i1  i2  i3  i4  i5  i6  i7  i8  i9  i:  i;  i<  i=  i>  i?  i@  iA  iB  iC  iD  iE  iF  iG  iH  iI  iJ  iK  iL  iM  iN  iO  iP  iQ  iR  iS  iT  iU  iV  iW  iX  iY  iZ  i[  i\  i]  i^  i_  i`  ia  ib  ic  id  ie  if  ig  ih  ii  ij  ik  il  im  in  io  ip  iq  ir  is  it  iu  iv  iw  ix  iy  iz  i{  i|  i}  i~  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i%  i&  i'  i(  is  N)Tr   )
__future__r   utilr   objectr   rR   rm   r   r#   r%   r(   rN   r   r   r   r   <module>   s    







