
    1ho*                        d Z ddlZddlZddlZddlmZ ej                  dkD  Zerddlm	Z	 ddl
mZ nddlm	Z	 ddlmZ i ddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(i d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJi dKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdli dmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddi ddddddddddddddddddddddddddddddddddi ddddddddddddddddddddēddƓddȓddʓdd̓ddΓddГddғi ddԓdd֓ddؓddړddܓddޓddddddddddddddddddddddddddZd Zd Zd Zy)z4Modest database of more than a hundred world cities.    N)radians)   )	urlencode)urlopenLondon)z
51.5001524z
-0.1262362g+Lk6-@Paris)z
48.8566667z	2.3509871g{ۡaA@zNew York)z
40.7143528z-74.0059731g'h'#@Tokyo)z
35.6894875z139.6917064g{B@Chicago)z
41.8781136z-87.6297982g~7f@	Frankfurt)z
50.1115118z	8.6805059gϽZ@z	Hong Kong)z	22.396428z
114.109497g`t@zLos Angeles)z
34.0522342z-118.2436849g-]6U@Milan)z
45.4636889z	9.1881408g|BvƏ^@	Singapore)z1.352083z
103.819836gR^+L@zSan Francisco)z
37.7749295z-122.4194155g,s/@Sydney)z-33.8599722z151.2111111gk
@Toronto)z43.6525z-79.3816667g`RV@Zurich)z
47.3833333z	8.5333333g~Xy@Brussels)z50.8503z4.35171g;f:@Madrid)z
40.4166909z
-3.7003454g@
h@zMexico City)z
19.4270499z-99.1275711gjJh@z	Sao Paulo)z-23.5489433z-46.6388182gwH1@@Moscow)z	55.755786z	37.617633g[ b@Seoul)z	37.566535z126.9779692gjD@	Amsterdam)z
52.3730556z	4.8922222gA+0du-@Boston)z
42.3584308z-71.0597732gI,|}.@Caracas)z	10.491016z
-66.902061gou@Dallas)z	32.802955z
-96.769923g    Dc@
Dusseldorf)z
51.2249429z	6.7756524gC6E@Geneva)z
46.2057645z6.141593gkw@Houston)z
29.7628844z-95.3830615g,-#@Jakarta)z	-6.211544z
106.845172gFzQo$@Johannesburg)z-26.1704415z
27.9717606g< ]@	Melbourne)z-37.8131869z144.9629796g      ;@Osaka)z
34.6937378z135.5021651gf0F$
Y0@Prague)z
50.0878114z
14.4204598gTƿOg@Santiago)z-33.4253598z-70.5664659g@jτ@Taipei)z	25.091075z121.5598345g$@@
Washington)z
38.8951118z-77.0363658g
+z@Bangkok)z
13.7234186z100.4762319gm 6 B\@Beijing)z	39.904214z
116.407413gI@Montreal)z
45.5088889z-73.5541667g*Y0@Rome)z
41.8954656z
12.4823243giT3@	Stockholm)z
59.3327881z
18.0644881gut\9@Warsaw)z
52.2296756z
21.0122287gYR>\@Atlanta)z
33.7489954z-84.3879824gLy 2s@	Barcelona)z	41.387917z	2.1699187gJ?3@Berlin)z
52.5234051z
13.4113999gɑȁF@zBuenos Aires)z-34.6084175z-58.3731613gR
ED@Budapest)z
47.4984056z
19.0407578gYZ@
Copenhagen)z	55.693403z	12.583046g*@Hamburg)z
53.5538148z	9.9915752g2,%k@Istanbul)z41.00527z28.97696gB:B@zKuala Lumpur)z3.139003z
101.686855g1 "J@Manila)z
14.5833333z120.9666667gt"T@Miami)z
25.7889689z-80.2264393g K?Minneapolis)z
44.9799654z-93.2638361gxEo@Munich)z
48.1391265z
11.5801863g     X@Shanghai)z	31.230393z
121.473704g5/@Athens)z37.97918z	23.716647g[~lG@Auckland)z-36.8484597z174.7633315g      5@Dublin)z	53.344104z
-6.2674937gm @Helsinki)z
60.1698125z
24.9382401g@
Luxembourg)z	49.815273z6.129583gm4s@Lyon)z	45.767299z	4.8343287gC f@Mumbai)z
19.0176147z
72.8561644gHQ(@z	New Delhi)z	28.635308z77.22496g@j@Philadelphia)z	39.952335z
-75.163789gGTn(@zRio de Janeiro)z-22.9035393z-43.2095869gFw;#@zTel Aviv)z
32.0599254z
34.7851264gRd=5@Vienna)z48.20662z16.38282gaiOe@z	Abu Dhabi)z
24.4666667z
54.3666667g5~$/@Almaty)z	43.255058z	76.912628gH`-@
Birmingham)z
52.4829614z	-1.893592gCʠZa@Bogota)z	4.5980556z-74.0758333gjl@
Bratislava)z
48.1483765z
17.1073105gzc@Brisbane)z-27.4709331z153.0235024gF[D)<@	Bucharest)z	44.437711z	26.097367gT@Cairo)z	30.064742z	31.249509g}?4@	Cleveland)z
41.4994954z-81.6954088g() &h@Cologne)z
50.9406645z	6.9599115g9M@Detroit)z	42.331427z-83.0457538g9 nf@Dubai)z
25.2644444z
55.3116667g< @zHo Chi Minh City)z10.75918z
106.662498g:]%@Kiev)z50.45z
30.5233333gc@Lima)z-12.0433333z-77.0283333g+Jc@Lisbon)z
38.7070538z
-9.1354884gI
@
Manchester)z
53.4807125z
-2.2343765g`\:L@
Montevideo)z-34.8833333z-56.1666667g|y㤀F@Oslo)z
59.9127263z
10.7460924gjܛ0%@	Rotterdam)z	51.924216z4.481776g^6S!@Riyadh)z
24.6880015z
46.7224333gH`+@Seattle)z
47.6062095z-122.3320708g3AJ@	Stuttgart)z
48.7771056z	9.1807688g'"&o@z	The Hague)z
52.0698576z	4.2911114g.lV~@	Vancouver)z	49.248523z	-123.1088g&3VQ@Adelaide)z-34.9305556z138.6205556g$&ݖH@Antwerp)z51.21992z4.39625gzo0@Arhus)z	56.162939z	10.203921gfj!:@	Baltimore)z
39.2903848z-76.6121893g)$@	Bangalore)z
12.9715987z
77.5945627gG~@Bologna)z
44.4942191z
11.3464815gW8R@Brazilia)z
-14.235004z	-51.92528gpu 1p@Calgary)z51.045z-114.0572222g     X@z	Cape Town)z
-33.924788z	18.429916gّZ@Colombo)z6.927468z	79.848358g*D/#@Columbus)z
39.9611755z-82.9987942gfܴm@Dresden)z
51.0509912z
13.7336335gu\@	Edinburgh)z
55.9501755z
-3.1875359gcAU@Genoa)z
44.4070624z	8.9339889g
A@Glasgow)z
55.8656274z
-4.2572227gC C@
Gothenburg)z
57.6969943z11.9865gc/@	Guangzhou)z	23.129163z
113.264435gg2@Hanoi)z
21.0333333z105.85geO4@zKansas City)z
39.1066667z-94.6763889g1_^#q@Leeds)z
53.7996388z
-1.5491221gZF=G@Lille)z
50.6371834z	3.0630174gyܝ#<@	Marseille)z
43.2976116z	5.3810421g |(8@Richmond)z	37.542979z
-77.469092g!^O@zSt. Petersburg)z	59.939039z	30.315785g?7j'@Tashkent)z
41.2666667z
69.2166667g7z@Tehran)z
35.6961111z
51.4230556g,?br@Tijuana)z	32.533489z-117.018204gkdWZF6@)z
45.0705621z	7.6866186g     @m@)z
52.0901422z	5.1096649g*;.@)z-41.2924945z174.7732353g      1@)TurinUtrecht
Wellingtonc                     	 t         |    }t        j                         }| |_        |\  |_        |_        |_        |j                          |S # t        $ r t        d|       w xY w)NzUnknown city: )	
_city_dataKeyErrorephemObservernamelatlon	elevationcompute_pressure)ru   dataos      1D:\jyotish\venv\Lib\site-packages\ephem/cities.pycityr}      sh    5$ 	AAF $AE15!+H  5T3445s   	A A%c                 v    t        t        j                  j                  dd      d   j	                               )aF  DEPRECATED: Google, alas, no longer supports anonymous lat/lon lookup.

    Because looking up an address is really a problem in geography, not
    astronomy, PyEphem is not planning on repairing this routine.  Look
    for a good Python geolocation library if you need to turn strings
    into latitudes and longitudes.

    N   )NotImplementedErrorlookup__doc__splitstrip)addresss    r|   r   r      s.     fnn224;A>DDF
GG    c                 (   t        | |d      }d|z   }t        j                  t        |      j	                         j                  d            }|d   dk(  rt        dt        z        |d   d   }t        |d   |d	   |d
      }d|z   }t        j                  t        |      j	                         j                  d            }t        j                         }	|d   |	_        |d   |	_
        |d	   |	_        |d   |	_        |	j                          |	S )a  Given a string `q`, do a geonames lookup and return an Observer.

    Free geonames queries require registration with an email address
    at this url: https://www.geonames.org/login

    After registration, you also must enable the free webservices
    through your user account
    )qusernamez#http://api.geonames.org/searchJSON?zutf-8totalResultsCountr   z%geonames cannot find a place named %rgeonamesrv   lng)rv   r   r   z"http://api.geonames.org/srtm1JSON?toponymNamesrtm1)r   jsonloadsr   readdecode
ValueErrorru   rs   rt   rv   rw   rx   ry   )
r   r   
parametersurlrz   locationparameters_elevurl_elev	data_elevr{   s
             r|   lookup_with_geonamesr      s    9:J
/*
<C::gcl'')009:D A%@4GHHJ"Hx'/,4!6 7O 4oEH

78,113::7CDIAm$AFUOAEUOAEG$AKHr   )r   rs   r   sysmathr   version_info_python3urllib.parser   urllib.requestr   urlliburllib2rq   r}   r   r    r   r|   <module>r      s   :   
 d"&& {5{3{ 7{ 5	{
 8{ 8{ 8{ <{ 4{ 6{ >{ 6{ 4{ 5{ 1{  6!{" =#{$ ;%{& 4'{( 4){* 7+{, 6-{. 6/{0 51{2 83{4 45{6 67{8 59{: >;{< :={> 5?{@ 6A{B :C{D 5E{F 9G{H 6I{J 5K{L 8M{N 3O{P 8Q{R 6S{T 8U{V 6W{X 5Y{Z =[{\ 8]{^ 6_{` 4a{b 3c{d 9e{f 5g{h 4i{j <k{l 6m{n 6o{p 2q{r 9s{t 3u{v 6w{x 7y{z 2{{| 5}{~ 6{@ :A{B >C{D 7E{F 2G{H 7I{J 4K{L 9M{N 7O{P :Q{R 9S{T 6U{V 2W{X :Y{Z 5[{\ 7]{^ 3_{` =a{b /c{d 6e{f 4g{h 9i{j ;k{l 3m{n 4o{p 6q{r 8s{t 8u{v 6w{x 6y{z 9{{| 0}{~ 2{@ 9A{B 9C{D 6E{F 7G{H 6I{J 6K{L 2M{N 9O{P 7Q{R 8S{T 3U{V 6W{X 6Y{Z 7[{\ 0]{^ <_{` 4a{b 3c{d 7e{f 6g{h ;i{j 8k{l 7m{n 6o{p 54;u{
z		Hr   