o
    .j,                     @   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 )-	Namespacegeogeorss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__ Q/home/thesage/.local/lib/python3.10/site-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 )Nsrsname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   r8   r	   r   r   r   r   r   r   _start_gml_pointc      
zNamespace._start_gml_pointc                 C   r9   )N
linestringr   r   r;   r<   r   r   r   _start_gml_linestringh   r>   zNamespace._start_gml_linestringc                 C   s   |  | | dd d S Nr   r   )r8   r   r<   r   r   r   _start_gml_polygonm   s   
zNamespace._start_gml_polygonc                 C      |  dd d S rA   r   r<   r   r   r   _start_gml_exteriorq      zNamespace._start_gml_exteriorc                 C   s   d| _ | dd d S )Npolygonr   r   )r	   r   r<   r   r   r   _start_gml_linearringt   s   zNamespace._start_gml_linearringc                 C   rC   Nposr   rD   r<   r   r   r   _start_gml_posx   rF   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 NrJ   r   r1   r2   r   TEPSG:)swapdims)	r"   r   r3   r4   splitbool_geogCSr!   r   r   r)   r   r6   r7   rP   epsgr   r   r   r   _end_gml_pos{   s   
zNamespace._end_gml_posc                 C   rC   rI   rD   r<   r   r   r   _start_gml_poslist   rF   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 rL   )
r"   r   r3   r4   rR   rS   rT   _parse_poslistr	   r   rU   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__supported_namespacesr   r   _start_georss_point_start_georss_line_start_georss_polygon_start_georss_boxr   r$   r'   r*   r,   r-   _start_georss_wherer8   r=   r@   rB   rE   rH   rK   rW   rX   rZ   r[   _end_gml_point_end_gml_linestring_end_gml_linearring_end_gml_exterior_end_gml_polygonr\   _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?   rG   Polygoncoordinatestypern   )r&   )value	geom_typerP   rQ   ringr   r   r   rY      s   rY   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>, TrO   r:      )replacerR   nextappendtupleStopIteration)rq   rP   rQ   latlonstr   r   r   _gen_georss_coords   s   "r   c              	   C   s:   zt t| ||}d|d dW S  ttfy   Y d S w )NPointr   ro   listr   
IndexErrorr5   rq   rP   rQ   coordsr   r   r   r!      s   r!   c              	   C   s6   zt t| ||}d|dW S  ttfy   Y d S w )N
LineStringro   r   r   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   rm   ro   )r   r   r   r5   len)rq   rP   rQ   rs   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Boxro   )r   r   r~   r   r5   r   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   rY   r   r!   r&   r(   r+   rT   r   r   r   r   <module>   s    







