pygeodesy 24.6.9__py2.py3-none-any.whl → 24.6.24__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. {PyGeodesy-24.6.9.dist-info → PyGeodesy-24.6.24.dist-info}/METADATA +2 -2
  2. PyGeodesy-24.6.24.dist-info/RECORD +117 -0
  3. pygeodesy/__init__.py +33 -32
  4. pygeodesy/albers.py +2 -2
  5. pygeodesy/auxilats/__init__.py +1 -1
  6. pygeodesy/auxilats/auxAngle.py +40 -39
  7. pygeodesy/auxilats/auxDLat.py +3 -2
  8. pygeodesy/auxilats/auxLat.py +16 -18
  9. pygeodesy/auxilats/auxily.py +1 -1
  10. pygeodesy/azimuthal.py +10 -10
  11. pygeodesy/basics.py +9 -1
  12. pygeodesy/booleans.py +4 -4
  13. pygeodesy/cartesianBase.py +11 -14
  14. pygeodesy/css.py +14 -18
  15. pygeodesy/datums.py +6 -6
  16. pygeodesy/deprecated/__init__.py +1 -1
  17. pygeodesy/deprecated/classes.py +16 -2
  18. pygeodesy/deprecated/datum.py +3 -3
  19. pygeodesy/deprecated/functions.py +6 -8
  20. pygeodesy/dms.py +23 -27
  21. pygeodesy/ecef.py +4 -4
  22. pygeodesy/elevations.py +4 -4
  23. pygeodesy/ellipsoidalBase.py +23 -28
  24. pygeodesy/ellipsoidalBaseDI.py +19 -23
  25. pygeodesy/ellipsoidalExact.py +3 -3
  26. pygeodesy/ellipsoidalGeodSolve.py +15 -23
  27. pygeodesy/ellipsoidalKarney.py +37 -60
  28. pygeodesy/ellipsoidalNvector.py +38 -44
  29. pygeodesy/ellipsoidalVincenty.py +11 -14
  30. pygeodesy/ellipsoids.py +107 -101
  31. pygeodesy/errors.py +100 -48
  32. pygeodesy/etm.py +32 -44
  33. pygeodesy/formy.py +55 -58
  34. pygeodesy/frechet.py +18 -20
  35. pygeodesy/fsums.py +3 -3
  36. pygeodesy/gars.py +3 -4
  37. pygeodesy/geodesici.py +909 -0
  38. pygeodesy/geodesicw.py +11 -13
  39. pygeodesy/geodesicx/__init__.py +4 -4
  40. pygeodesy/geodesicx/gx.py +18 -28
  41. pygeodesy/geodesicx/gxbases.py +20 -8
  42. pygeodesy/geodesicx/gxline.py +16 -22
  43. pygeodesy/geodsolve.py +80 -10
  44. pygeodesy/geohash.py +26 -34
  45. pygeodesy/geoids.py +28 -37
  46. pygeodesy/hausdorff.py +17 -18
  47. pygeodesy/heights.py +2 -2
  48. pygeodesy/internals.py +6 -0
  49. pygeodesy/interns.py +2 -2
  50. pygeodesy/karney.py +20 -4
  51. pygeodesy/ktm.py +13 -16
  52. pygeodesy/latlonBase.py +17 -19
  53. pygeodesy/lazily.py +7 -6
  54. pygeodesy/lcc.py +28 -31
  55. pygeodesy/ltp.py +7 -8
  56. pygeodesy/ltpTuples.py +68 -70
  57. pygeodesy/mgrs.py +8 -9
  58. pygeodesy/named.py +19 -10
  59. pygeodesy/nvectorBase.py +9 -10
  60. pygeodesy/osgr.py +9 -9
  61. pygeodesy/points.py +6 -6
  62. pygeodesy/rhumb/__init__.py +1 -1
  63. pygeodesy/rhumb/aux_.py +5 -5
  64. pygeodesy/rhumb/bases.py +30 -31
  65. pygeodesy/rhumb/ekx.py +3 -4
  66. pygeodesy/sphericalBase.py +10 -11
  67. pygeodesy/sphericalNvector.py +13 -13
  68. pygeodesy/sphericalTrigonometry.py +86 -97
  69. pygeodesy/streprs.py +4 -34
  70. pygeodesy/triaxials.py +48 -43
  71. pygeodesy/units.py +204 -271
  72. pygeodesy/unitsBase.py +115 -107
  73. pygeodesy/ups.py +26 -31
  74. pygeodesy/utily.py +8 -8
  75. pygeodesy/utm.py +35 -40
  76. pygeodesy/utmups.py +43 -46
  77. pygeodesy/utmupsBase.py +8 -9
  78. pygeodesy/vector3d.py +26 -27
  79. pygeodesy/vector3dBase.py +6 -7
  80. pygeodesy/webmercator.py +19 -21
  81. pygeodesy/wgrs.py +18 -20
  82. PyGeodesy-24.6.9.dist-info/RECORD +0 -116
  83. {PyGeodesy-24.6.9.dist-info → PyGeodesy-24.6.24.dist-info}/WHEEL +0 -0
  84. {PyGeodesy-24.6.9.dist-info → PyGeodesy-24.6.24.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PyGeodesy
3
- Version: 24.6.9
3
+ Version: 24.6.24
4
4
  Summary: Pure Python geodesy tools
5
5
  Home-page: https://GitHub.com/mrJean1/PyGeodesy
6
6
  Author: Jean M. Brouwers
@@ -159,7 +159,7 @@ and McCabe_ using Python 2.7.18 and with Flake8_ using Python 3.11.5, both in 64
159
159
 
160
160
  For a summary of all *Karney*-based functionality in ``pygeodesy``, see module karney_.
161
161
 
162
- *Last updated: June 09, 2024.*
162
+ *Last updated: June 24, 2024.*
163
163
 
164
164
  License
165
165
  =======
@@ -0,0 +1,117 @@
1
+ pygeodesy/LICENSE,sha256=YfgAiyxOwY6P9Kkb1_5XN81nueTLrpb3Ffkv3EuPgFU,1144
2
+ pygeodesy/__init__.py,sha256=QKI7NviUtivEdGiX532XzHBvGfTLEul0e0lBo7gMbDA,41475
3
+ pygeodesy/__main__.py,sha256=UmTd6Qw20g_pgnQjdaHePm-xuOEBi1tUNRLO0eL0-rU,4593
4
+ pygeodesy/albers.py,sha256=JXqeWAteV2N601e5R-D7bCsa8qAYv3oWm7M3R4uszXM,31078
5
+ pygeodesy/azimuthal.py,sha256=5tMMKlzKyfGnreOHChrquBi241ZvIOBTUn_pbZCIJWc,50231
6
+ pygeodesy/basics.py,sha256=YgrXYea-m47l0_cAeyWlEvCzpzvfZDKpkievC77qJdY,29590
7
+ pygeodesy/booleans.py,sha256=5IeA6QWihiPWSv2JnCbMT53ey1WYIU7od5VQ1YUFqX8,73529
8
+ pygeodesy/cartesianBase.py,sha256=WaAod_-nwgX8MjNhu4rr_V9PmEaI0F8gKPCUH4-Olyc,46968
9
+ pygeodesy/clipy.py,sha256=3ysIEWQ89HjvLnSlZm0nZAt9EN5AQxIs1sLLM8yF9zM,27675
10
+ pygeodesy/constants.py,sha256=-weWOuHwE-qI6pYRLcTucI0KNcNJm6vPNzxwrJzACKs,19192
11
+ pygeodesy/css.py,sha256=B_EKq757XdQSUy83HAxEf3H5Iyd7mw3DbJB5Wi3obAc,25651
12
+ pygeodesy/datums.py,sha256=-m9-cvUVOaJ92eeFgc3O54lel3WqnVYcS7o6WCXkNyw,34043
13
+ pygeodesy/dms.py,sha256=QxiRtyc8QSiW-egm6Mrcrgmi_deWz3YnYwIm82JS4TU,44443
14
+ pygeodesy/ecef.py,sha256=yRydxBDiyvfrTTrQLawo-x2eGNcbd8CNQjBWfd3oSI8,59677
15
+ pygeodesy/elevations.py,sha256=4FuVcVNb_D09gmcvUlck344N4f7Jms76SIRrdutvKjk,10801
16
+ pygeodesy/ellipsoidalBase.py,sha256=olFcHvMeoW8Z_0T-Bn3XOpGGatoluaOZ50Fzm-ByAVg,55126
17
+ pygeodesy/ellipsoidalBaseDI.py,sha256=OxbSBntV9xiOgsb-0un0cUYIVoPiIiH-lt3baBkbaS8,38400
18
+ pygeodesy/ellipsoidalExact.py,sha256=GnSMNVnSG4VyORMcQZKxpA-R6HA0gWbTBkEIg1qrVaE,16945
19
+ pygeodesy/ellipsoidalGeodSolve.py,sha256=CqdNNqdwuUNIwZvYVMsk3rnW0U3KMgEoSQj_VIcFBEI,16665
20
+ pygeodesy/ellipsoidalKarney.py,sha256=XIvmSmMt0CGd0LtXxcDHX3KXXR2Mn8cRukefNQErJFU,18720
21
+ pygeodesy/ellipsoidalNvector.py,sha256=BbCWTZr9he3ayC8YEtLRXWVJ-g4HqHBuTVJsM33JKhw,30038
22
+ pygeodesy/ellipsoidalVincenty.py,sha256=gsUFMKgqMZKT02jDm7TEJ_jSHX8d-KJCz91iCfku5kg,25951
23
+ pygeodesy/ellipsoids.py,sha256=fraKj3NPStXablvzejt-LgQsghcp-MgMUvU6nh4L2YI,108034
24
+ pygeodesy/elliptic.py,sha256=-80MbZvRPk-TeA_ggkfXhjuPv07MzsB4HxNF7gbdhB4,42501
25
+ pygeodesy/epsg.py,sha256=oWHX_QVChE5roktAyXUmPmX49XHiryYmXTHxQzrAprE,8222
26
+ pygeodesy/errors.py,sha256=4LmkeCrslywBbLzCJ07A1LPFjbUHkkJrcscSzROxNZs,30300
27
+ pygeodesy/etm.py,sha256=y3dAqS-iWnbWzmsu4zB7kryAp_I17XEdzNRRk0klTww,44696
28
+ pygeodesy/fmath.py,sha256=EOHD0uZ8VULZtXAk8tVeuPaSTozPDCN8GJcemCo-jqg,33709
29
+ pygeodesy/formy.py,sha256=ZpPaQBQvaFiA-UcrgaiiV_iGxlfTqNdlR1Ngx-1oinY,75032
30
+ pygeodesy/frechet.py,sha256=F6TYbOEYSOFcll6nvp4GhqafUWXh1umAKb1QaMYQtuM,34372
31
+ pygeodesy/fstats.py,sha256=4eIhzSCMnn-2nVP3Q-5cCWCI-rvH0CE-zkk9hp3Pvn8,28642
32
+ pygeodesy/fsums.py,sha256=LzsPQHY3bByOFFXPSo7E8lbYKWy5cif02WJk2JfnMvA,80455
33
+ pygeodesy/gars.py,sha256=gJKZuGPKw8rlRLx1hywZrpGucpHXLvMe8fr8izgSW2s,11370
34
+ pygeodesy/geodesici.py,sha256=C2yVPoczJJOWwOH7Yk3zmIdL-PpN28pkjHIfqP1LC3U,33462
35
+ pygeodesy/geodesicw.py,sha256=g7eJ9HHj47ob08X385aceTg3SHX3utTudp0KVOacgcA,27040
36
+ pygeodesy/geodsolve.py,sha256=VL7h8NUMyBviBot_sHuSGVOhDq3PP6WSGdx2oz7QmEI,24298
37
+ pygeodesy/geohash.py,sha256=rOOGOHcTnxIPX2p5ieA1gQ_ZcRlUxjIcroPHa7a85ak,31876
38
+ pygeodesy/geoids.py,sha256=oxn0MSgbvwBkrwyg1vS7PhhYZ_zbjLxC50W-8FTIxeU,80680
39
+ pygeodesy/hausdorff.py,sha256=-aKtRbMefDSoIk4V3wCvNrXPZ7Bqk1P6-XuGuI7o8Zc,34770
40
+ pygeodesy/heights.py,sha256=9kvyJj0-D3syZMdHNDXIfZT3MyhHH2fcqW_y-u7Tn2M,43197
41
+ pygeodesy/internals.py,sha256=LSDiYfCMs6zEzWPiQyRrg-XkH14B6IlSQwFbf40XKJM,19522
42
+ pygeodesy/interns.py,sha256=kReVkCWA_rw8GyaYFVRI9dfdXu7MF9nD1MgoXsdsK7I,23273
43
+ pygeodesy/iters.py,sha256=xPH0ytomvJeKHu717Fjzi3QbRrEikO6n7vqkY_IDz1k,20311
44
+ pygeodesy/karney.py,sha256=EUyt_vcPjY0bTbNahq-nshkKdJPdHv2RI2GjdJpa8gg,35725
45
+ pygeodesy/ktm.py,sha256=u0xjvqhG2k18jg7bNclRr3D9umiZXKXQGRjmL_VX4yY,27437
46
+ pygeodesy/latlonBase.py,sha256=M-Xe4KK8aOnQUxNJkODlTa5ApzhqXCggc_d8HlMdnIc,78987
47
+ pygeodesy/lazily.py,sha256=T_TmKqLJi_-IC6nHn_MqTfNxI8WJT4kobWwfVYJ5V5U,46616
48
+ pygeodesy/lcc.py,sha256=oDooTzFHnqsMtSKmmmfEbypHpdlPltfo7Mt0pAO4-_A,25669
49
+ pygeodesy/ltp.py,sha256=gQLZwcSIiXJrbRlaWnxAX8AK2VzH9l3jDqoNb3jcVD4,50773
50
+ pygeodesy/ltpTuples.py,sha256=bi1lJIbQ8lIX3vDgugQmG-mQN0EZIRe0TZlPAu8GUC8,58338
51
+ pygeodesy/mgrs.py,sha256=w50bvM3qDtHDBDBRQ_EgZnPn7vxVXgoFnleeZgefkVk,29679
52
+ pygeodesy/named.py,sha256=_2zgvL0cPg2JL3JpyWMZ7cc9e_I0y_4XPVYb2e7zEZg,52243
53
+ pygeodesy/namedTuples.py,sha256=UDmL4kCihvf8tIUVXzGzRLzL_1BLuyqm04pite6YUuk,28495
54
+ pygeodesy/nvectorBase.py,sha256=7BvbRQbtTpDsE7BMHt3vpbuCQZUV_k79HvygbG7ak10,28683
55
+ pygeodesy/osgr.py,sha256=O8mLlmnQkcyXU4xczLGD1zhSyt8RQ3EsXctUnCIjO8U,30819
56
+ pygeodesy/points.py,sha256=GirmbiqjD7Q0Z4SDySQO__Jgun-i8vMdJ81U2Kz8V0w,64408
57
+ pygeodesy/props.py,sha256=8dGmTpdEABnLbBngmaOIpM0h4NYiBteMOHc_r4iNpAg,21988
58
+ pygeodesy/resections.py,sha256=nkfBxYrsEdyq2JqAbPrRWKplJBzFkIXLvEZGB4gPu_A,43550
59
+ pygeodesy/simplify.py,sha256=NybC-pfze0ObEm4ZCz6ZQrjJlQ-QyA83E6mSJqCuKq4,25223
60
+ pygeodesy/solveBase.py,sha256=FGuvHvloiyBdE0H50o8rOxtD_n6gCx1Gp31Ckn-N7hk,16852
61
+ pygeodesy/sphericalBase.py,sha256=YvjMZmmfy9pZeKHbY-ca0oi-Jy-OxsG9dhefy5LTjRA,32237
62
+ pygeodesy/sphericalNvector.py,sha256=MiWcCy5CdvXsCa3963GeUMEnSYGhBiXzkoAEX_tGX4Q,56952
63
+ pygeodesy/sphericalTrigonometry.py,sha256=Jf3FUUYEWXbNkiagr0HyMJ6E-cNghnTjcdgntTm28RE,64076
64
+ pygeodesy/streprs.py,sha256=xudQ6zi5jFT_CmstSPysjxpZKyLBQNkUk1ETh0uvQ04,23030
65
+ pygeodesy/trf.py,sha256=CRFHmu0lFNtc41fddXavEkHmgnTFWEqR4RTFodcFKsw,119022
66
+ pygeodesy/triaxials.py,sha256=SLAlzdpOa8kFSkpP-lhL-swzsZkuqufZET_gJtoA_54,62750
67
+ pygeodesy/units.py,sha256=2ZFrFOB__jjs8OYkSGyusYB60fs3FihubydriBdSNYg,34607
68
+ pygeodesy/unitsBase.py,sha256=yT7dgfwxtd1hHEn02NwPAdStsVWDfPH-Qdfrhvje7Yw,14057
69
+ pygeodesy/ups.py,sha256=zapIvzoVuj_FDGC6sr8O8ynPhfqXwUg-EFCVnJdM9Eo,23329
70
+ pygeodesy/utily.py,sha256=Zb6L9unzHHhp67znmQLLdizvyX6p4eczR1PDtcyWH-s,36189
71
+ pygeodesy/utm.py,sha256=lCp7mNEaJNrAYnbdPaNUKkhbsX_GdssTEkp68uYdMLI,31091
72
+ pygeodesy/utmups.py,sha256=g2Z_aEOt6fhV9f4fASlW4_K_O_P4zBsBbWfQV11mIKo,13196
73
+ pygeodesy/utmupsBase.py,sha256=TJJeHSASjggUpzdpxwrOTH1tfHvDBxly47GJL27D8zY,18729
74
+ pygeodesy/vector2d.py,sha256=zJq5PB777_mFJpKD-rt_T0Vm4SNbVwF7pc3KxX8uCT8,34994
75
+ pygeodesy/vector3d.py,sha256=uDNnYSj4BL_Nec6SkyxXDbYaNjvI15HQX0xh25dRLI8,44883
76
+ pygeodesy/vector3dBase.py,sha256=Om0Uq1zgjuJ6slj12KiFus_tobjYTPxgVZejNd0YzFI,35729
77
+ pygeodesy/webmercator.py,sha256=stO_thswe_D4uxXWH43YWSN6-WWWpv_uIuOwvBIp8Ug,14932
78
+ pygeodesy/wgrs.py,sha256=k2OhMue84yH_xaezo0sdxL1-X7fZRqZZ4-Rl1reDYSM,14792
79
+ pygeodesy/auxilats/_CX_4.py,sha256=U41njj8Pu8cHMGuoUUVA20QIvRJAq-VGCnyoKJl0Ylo,8662
80
+ pygeodesy/auxilats/_CX_6.py,sha256=x4hrHxunjqqkEsZbVW1dyn3R5mR8EWYOuX77RzDEyh4,14856
81
+ pygeodesy/auxilats/_CX_8.py,sha256=t-OO48t4cCOsOgMi1FoyPw2DQqybVZFsgQMqAYP-jKY,25304
82
+ pygeodesy/auxilats/__init__.py,sha256=YNp41rRC5DmAhBx4RPqoqh4yxD9Vjf9Wk_USwqeZYcE,2881
83
+ pygeodesy/auxilats/__main__.py,sha256=Vuj1YSp1LV0zejVzi6EYauka1Dv8kwOHI_aeHxQEVYk,2899
84
+ pygeodesy/auxilats/auxAngle.py,sha256=8Gsae1URFCfD6t0oNI1ZJmgtik_EOvSAwrNmAZSMm2I,16729
85
+ pygeodesy/auxilats/auxDLat.py,sha256=3sq7Wc-ykpVbldNh10IZ3tIlJ7DcQFDlmZ4nOhJEgo0,10969
86
+ pygeodesy/auxilats/auxDST.py,sha256=bdNEh3TdABWH7qW6ngZx5SnzDM3B5rtPLvYhvCnFsKc,10497
87
+ pygeodesy/auxilats/auxLat.py,sha256=QeTx8dqov1NwNSEam9VC_wq36nRCUpbJpY4hH1NvyNg,32493
88
+ pygeodesy/auxilats/auxily.py,sha256=spSRS9beouT-qH98QhqMk9sm2qKubW8kwNYVWkFu3iU,8234
89
+ pygeodesy/deprecated/__init__.py,sha256=sGIgKL1Kmpz9upmGSxZEDdsGHNZhkpYAgsRw3FdI574,2815
90
+ pygeodesy/deprecated/bases.py,sha256=nxUtxscAg5cb7HEzTSmPJFafLc9Ad2SL5ovwkYaU5z8,1655
91
+ pygeodesy/deprecated/classes.py,sha256=ietjn0Jvil-moZwIlQLDdo5ehSPQ28RsmiLKkwI9v50,12124
92
+ pygeodesy/deprecated/consterns.py,sha256=W-rQiw443_zCFEUzjCGykGND-i5P_ghEIyJUSGg7-Nc,1908
93
+ pygeodesy/deprecated/datum.py,sha256=s8Hke053RucP5ACvg3gdX8weQfGM0x59pQyHpY11eOs,1875
94
+ pygeodesy/deprecated/functions.py,sha256=EZMZe9WGkcbwmLDoWO2xKJyFlUkWAAMxmlbtCLa28lM,13866
95
+ pygeodesy/deprecated/nvector.py,sha256=_dZf84RdmPr7e7i8Yi683R-8Mqn0ipTqIsDhNl29hGo,2117
96
+ pygeodesy/deprecated/rhumbBase.py,sha256=d7YKW--dnRpobB2CSvhFsntWF0B5-HYJqID2pv5lD5k,1375
97
+ pygeodesy/deprecated/rhumbaux.py,sha256=n29xazYMbVG4MJkLjAGu8B88bbcFF5xnvuj9xSxjfIk,1428
98
+ pygeodesy/deprecated/rhumbsolve.py,sha256=QprjRfo5T1_C4ovaa1cffAcmNczzkhGIfmybAup9a9w,1431
99
+ pygeodesy/deprecated/rhumbx.py,sha256=OS0p_meaoVrpZe5UhK6qZljjlrGpL0pCHWw8gofw7ks,1425
100
+ pygeodesy/geodesicx/_C4_24.py,sha256=kS4XMR9m7iBs01V8K0Oz9qTYmjN-icIQGpc_8iwVhig,90750
101
+ pygeodesy/geodesicx/_C4_27.py,sha256=bPbj2Ckrn9WJglm3SNTXyMkULNwANM0tCQ-LKxP1L58,134258
102
+ pygeodesy/geodesicx/_C4_30.py,sha256=QZO8p971ztJwDGLOaJYgIhklztz9GlqbtS-xRP_E7o4,201964
103
+ pygeodesy/geodesicx/__init__.py,sha256=T_cX27kXyapbKcfsO6oMQMxYktXpV8i8PEWfKnxByPM,2478
104
+ pygeodesy/geodesicx/__main__.py,sha256=JnKrYmg1q9J5wRRqUy-dQ9abj2-2jpWtrolMMaFfWiY,3176
105
+ pygeodesy/geodesicx/gx.py,sha256=Liyp9UFJi2ZeN5J_2SCV2ia3ZcqvOC2hNdOcfcnXZdc,61121
106
+ pygeodesy/geodesicx/gxarea.py,sha256=-Kwe6spe2MSQbeLFDd6UN2NOi4JOjYhHAEzonOU3u4A,19409
107
+ pygeodesy/geodesicx/gxbases.py,sha256=Awt9zc1lyPS0vp4df2u4H_rhMeFu1pJaZPhb1iMoc-Q,5693
108
+ pygeodesy/geodesicx/gxline.py,sha256=_3l84g-RHoYIuOCMbvGiIY3CJuauSEcJwrZqp2n1J3s,27001
109
+ pygeodesy/rhumb/__init__.py,sha256=kTuNSKiiQyXvQdYc5KUd5admuKJ2QmDCWQwkIobnM-w,2207
110
+ pygeodesy/rhumb/aux_.py,sha256=lOjpEU3Pe2I5DwC933UCf-SW73l5NMuDACeZhbVs3lE,16657
111
+ pygeodesy/rhumb/bases.py,sha256=awpP60K6EOzS753oXM-h9S6paS6FwoCnco8Zt8n81jY,54162
112
+ pygeodesy/rhumb/ekx.py,sha256=JsmdCatWKqsffF8jCh4HDu5IKt_kHq1qUdmP1LMuofY,24044
113
+ pygeodesy/rhumb/solve.py,sha256=EDlLpbnw2FiNANOTau0emk29AEAaJpmckjK_cprvLNA,24035
114
+ PyGeodesy-24.6.24.dist-info/METADATA,sha256=LldxAeBs_4-a7sOoy6-xCGSoGE9p8_vSxzFvcXewufo,19412
115
+ PyGeodesy-24.6.24.dist-info/WHEEL,sha256=DZajD4pwLWue70CAfc7YaxT1wLUciNBvN_TTcvXpltE,110
116
+ PyGeodesy-24.6.24.dist-info/top_level.txt,sha256=cEQPatCXzKZqrivpULC5V5fuy9_V_bAwaP_gUGid7pQ,10
117
+ PyGeodesy-24.6.24.dist-info/RECORD,,
pygeodesy/__init__.py CHANGED
@@ -145,7 +145,7 @@ Test coverage has been measured with U{coverage<https://PyPI.org/project/coverag
145
145
 
146
146
  PyPy 7.3.12 (Python 3.10.12), Python 3.11.5, 3.10.8 and 3.9.6 ran on Apple M1 Silicon (C{arm64}), I{natively}.
147
147
  Python 3.8.10 and 2.7.18 ran on Intel (C{x86_64}) or Intel I{emulation} ("C{arm64_x86_64}", see function
148
- L{pygeodesy.machine}).
148
+ L{machine<pygeodesy.machine>}).
149
149
 
150
150
  The tests also ran with Python 3.11.5 (and U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0) on
151
151
  U{Debian 11<https://Cirrus-CI.com/github/mrJean1/PyGeodesy/master>} in 64-bit only and with Python 3.11.5,
@@ -192,34 +192,34 @@ Env variables
192
192
 
193
193
  The following environment variables are observed by C{PyGeodesy}:
194
194
 
195
- - C{PYGEODESY_EXCEPTION_CHAINING} - see module L{pygeodesy.errors}.
196
- - C{PYGEODESY_FMT_FORM} - see module L{pygeodesy.dms}.
197
- - C{PYGEODESY_FSUM_RESIDUAL} - see module L{pygeodesy.fsums} and class L{pygeodesy.Fsum}.
198
- - C{PYGEODESY_GEOCONVERT} - see module L{pygeodesy.mgrs}.
199
- - C{PYGEODESY_GEODSOLVE} - see module L{pygeodesy.geodsolve}.
200
- - C{PYGEODESY_LAZY_IMPORT} - see module L{pygeodesy.lazily} and variable L{pygeodesy.isLazy}.
201
- - C{PYGEODESY_NOTIMPLEMENTED} - __special__ methods return C{NotImplemented} if set to "std".
202
- - C{PYGEODESY_RHUMBSOLVE} - see module L{pygeodesy.rhumb.solve}.
203
- - C{PYGEODESY_UPS_POLES} - see modules L{pygeodesy.ups} and L{pygeodesy.mgrs}.
195
+ - C{PYGEODESY_EXCEPTION_CHAINING} - see module L{errors<pygeodesy.errors>}.
196
+ - C{PYGEODESY_FMT_FORM} - see module L{dms<pygeodesy.dms>}.
197
+ - C{PYGEODESY_FSUM_RESIDUAL} - see module L{fsums<pygeodesy.fsums>} and class L{Fsum<pygeodesy.Fsum>}.
198
+ - C{PYGEODESY_GEOCONVERT} - see module L{mgrs<pygeodesy.mgrs>}.
199
+ - C{PYGEODESY_GEODSOLVE} - see module L{geodsolve<pygeodesy.geodsolve>}.
200
+ - C{PYGEODESY_LAZY_IMPORT} - see module L{lazily<pygeodesy.lazily>} and variable L{isLazy<pygeodesy.isLazy>}.
201
+ - C{PYGEODESY_NOTIMPLEMENTED} - C{__special__} methods return C{NotImplemented} if set to "std".
202
+ - C{PYGEODESY_RHUMBSOLVE} - see module L{rhumb.solve<pygeodesy.rhumb.solve>}.
203
+ - C{PYGEODESY_UPS_POLES} - see modules L{ups<pygeodesy.ups>} and L{mgrs<pygeodesy.mgrs>}.
204
204
 
205
205
  and these to control standard or I{named} C{repr}esentations:
206
206
 
207
- - C{PYGEODESY_BEARING_STD_REPR} - see method L{pygeodesy.Bearing}C{.__repr__}.
208
- - C{PYGEODESY_BOOL_STD_REPR} - see method L{pygeodesy.Bool}C{.__repr__}.
209
- - C{PYGEODESY_DEGREES_STD_REPR} - see method L{pygeodesy.Degrees}C{.__repr__}.
210
- - C{PYGEODESY_FLOAT_STD_REPR} - see method L{pygeodesy.Float}C{.__repr__}.
211
- - C{PYGEODESY_INT_STD_REPR} - see method L{pygeodesy.Int}C{.__repr__}.
212
- - C{PYGEODESY_METER_STD_REPR} - see method L{pygeodesy.Meter}C{.__repr__}.
213
- - C{PYGEODESY_RADIANS_STD_REPR} - see method L{pygeodesy.Radians}C{.__repr__}.
214
- - C{PYGEODESY_STR_STD_REPR} - see method L{pygeodesy.Str}C{.__repr__}.
207
+ - C{PYGEODESY_BEARING_STD_REPR} - see method L{Bearing<pygeodesy.Bearing>}C{.__repr__}.
208
+ - C{PYGEODESY_BOOL_STD_REPR} - see method L{Bool<pygeodesy.Bool>}C{.__repr__}.
209
+ - C{PYGEODESY_DEGREES_STD_REPR} - see method L{Degrees<pygeodesy.Degrees>}C{.__repr__}.
210
+ - C{PYGEODESY_FLOAT_STD_REPR} - see method L{Float<pygeodesy.Float>}C{.__repr__}.
211
+ - C{PYGEODESY_INT_STD_REPR} - see method L{Int<pygeodesy.Int>}C{.__repr__}.
212
+ - C{PYGEODESY_METER_STD_REPR} - see method L{Meter<pygeodesy.Meter>}C{.__repr__}.
213
+ - C{PYGEODESY_RADIANS_STD_REPR} - see method L{Radians<pygeodesy.Radians>}C{.__repr__}.
214
+ - C{PYGEODESY_STR_STD_REPR} - see method L{Str<pygeodesy.Str>}C{.__repr__}.
215
215
 
216
216
  plus during development:
217
217
 
218
218
  - C{PYGEODESY_FOR_DOCS} - for extended documentation by C{epydoc}.
219
- - C{PYGEODESY_GEOGRAPHICLIB} - see module L{pygeodesy.karney}.
220
- - C{PYGEODESY_WARNINGS} - see module L{pygeodesy.props} and function L{pygeodesy.DeprecationWarnings}.
221
- - C{PYGEODESY_XPACKAGES} - see module L{pygeodesy.basics}.
222
- - C{PYTHONDEVMODE} - see modules L{pygeodesy.errors} and L{pygeodesy.props}.
219
+ - C{PYGEODESY_GEOGRAPHICLIB} - see module L{karney<pygeodesy.karney>}.
220
+ - C{PYGEODESY_WARNINGS} - see module L{props<pygeodesy.props>} and function L{DeprecationWarnings<pygeodesy.DeprecationWarnings>}.
221
+ - C{PYGEODESY_XPACKAGES} - see module L{basics<pygeodesy.basics>}.
222
+ - C{PYTHONDEVMODE} - see modules L{errors<pygeodesy.errors>} and L{props<pygeodesy.props>}.
223
223
 
224
224
  and:
225
225
 
@@ -233,8 +233,7 @@ and:
233
233
  License
234
234
  =======
235
235
 
236
- **) U{Copyright (C) 2016-2024 -- mrJean1 at Gmail -- All Rights Reserved.
237
- <https://OpenSource.org/licenses/MIT>}
236
+ **) U{Copyright (C) 2016-2024 -- mrJean1 at Gmail -- All Rights Reserved.<https://OpenSource.org/licenses/MIT>}
238
237
 
239
238
  C{Permission is hereby granted, free of charge, to any person obtaining a copy of this software
240
239
  and associated documentation files (the "Software"), to deal in the Software without restriction,
@@ -298,14 +297,14 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.}
298
297
  @var F_RAD__: Convert degrees to radians and format as signed "-/+RR" I{without} symbol, I{without} suffix (C{str}).
299
298
 
300
299
  @var DIG: System's M{float decimal digits} = 15 (C{int}).
301
- @var INF: Infinity (C{float}), see functions L{pygeodesy.isinf} and L{pygeodesy.isfinite} and C{NINF}.
302
- @var INT0: C{int(0)}, missing Z-components, C{if B{z}=B{INT0}}, see functions L{pygeodesy.isint0}, L{pygeodesy.meeus2}
300
+ @var INF: Infinity (C{float}), see functions L{isinf<pygeodesy.isinf>} and L{isfinite<pygeodesy.isfinite>} and C{NINF}.
301
+ @var INT0: C{int(0)}, missing Z-components, C{if B{z}=B{INT0}}, see functions L{isint0<pygeodesy.isint0>}, L{meeus2<pygeodesy.meeus2>}
303
302
  @var MANT_DIG: System's M{float mantissa bits} = 53 (C{int}).
304
303
  @var MAX: System's M{float max} ≈ 1.798e+308 (C{float}).
305
304
  @var MIN: System's M{float min} ≈ 2.225e-308 (C{float}).
306
- @var NAN: Not-A-Number (C{float}), see function L{pygeodesy.isnan}.
307
- @var NEG0: Negative 0.0 (C{float}), see function L{pygeodesy.isneg0}.
308
- @var NINF: Negative infinity (C{float}), see function L{pygeodesy.isninf} and C{INF}.
305
+ @var NAN: Not-A-Number (C{float}), see function L{isnan<pygeodesy.isnan>}.
306
+ @var NEG0: Negative 0.0 (C{float}), see function L{isneg0<pygeodesy.isneg0>}.
307
+ @var NINF: Negative infinity (C{float}), see function L{isninf<pygeodesy.isninf>} and C{INF}.
309
308
  @var NN: Empty (C{str}), U{I{Nomen Nescio}<https://Wiktionary.org/wiki/N.N.>}.
310
309
 
311
310
  @var PI: Constant M{math.pi} (C{float}).
@@ -331,9 +330,9 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.}
331
330
  @var S_DEG: Degrees symbol, default C{"°"}
332
331
  @var S_MIN: Minutes symbol, default C{"′"} aka I{PRIME}
333
332
  @var S_SEC: Seconds symbol, default C{"″"} aka I{DOUBLE_PRIME}
334
- @var S_RAD: Radians symbol, default C{""} aka L{pygeodesy.NN}
333
+ @var S_RAD: Radians symbol, default C{""} aka L{NN<pygeodesy.NN>}
335
334
  @var S_DMS: If C{True} include, otherwise cancel all DMS symbols, default C{True}.
336
- @var S_SEP: Separator between C{deg°|min′|sec″|suffix}, default C{""} aka L{pygeodesy.NN}
335
+ @var S_SEP: Separator between C{deg°|min′|sec″|suffix}, default C{""} aka L{NN<pygeodesy.NN>}
337
336
 
338
337
  @var Conics: Registered, predefined conics (C{enum-like}).
339
338
  @var Datums: Registered, predefined datums (C{enum-like}).
@@ -413,6 +412,7 @@ if _init__all__ and not _lazy_import2: # import and set __all__
413
412
  import pygeodesy.fstats as fstats # PYCHOK exported
414
413
  import pygeodesy.fsums as fsums # PYCHOK exported
415
414
  import pygeodesy.gars as gars # PYCHOK exported
415
+ import pygeodesy.geodesici as geodesici # PYCHOK exported
416
416
  import pygeodesy.geodesicw as geodesicw # PYCHOK exported
417
417
  import pygeodesy.geodesicx as geodesicx # PYCHOK exported
418
418
  import pygeodesy.geodsolve as geodsolve # PYCHOK exported
@@ -497,6 +497,7 @@ if _init__all__ and not _lazy_import2: # import and set __all__
497
497
  from pygeodesy.fstats import * # PYCHOK __all__
498
498
  from pygeodesy.fsums import * # PYCHOK __all__
499
499
  from pygeodesy.gars import Garef, GARSError # PYCHOK lazily
500
+ from pygeodesy.geodesici import * # PYCHOK __all__
500
501
  from pygeodesy.geodesicw import * # PYCHOK __all__
501
502
  from pygeodesy.geodesicx import * # PYCHOK __all__
502
503
  from pygeodesy.geodsolve import * # PYCHOK __all__
@@ -589,7 +590,7 @@ else:
589
590
 
590
591
  from pygeodesy.internals import _version2, _DOT_ # PYCHOK import
591
592
  # from pygeodesy.interns import _DOT_ # from .internals
592
- __version__ = '24.06.09'
593
+ __version__ = '24.06.24'
593
594
  # see setup.py for similar logic
594
595
  version = _DOT_(*_version2(__version__, n=3))
595
596
 
pygeodesy/albers.py CHANGED
@@ -38,7 +38,7 @@ from pygeodesy.utily import atan1, atan1d, degrees360, sincos2, sincos2d, \
38
38
  from math import atan2, atanh, degrees, fabs, radians, sqrt
39
39
 
40
40
  __all__ = _ALL_LAZY.albers
41
- __version__ = '24.05.21'
41
+ __version__ = '24.06.11'
42
42
 
43
43
  _k1_ = 'k1'
44
44
  _NUMIT = 8 # XXX 4?
@@ -354,7 +354,7 @@ class _AlbersBase(_NamedBase):
354
354
  and optional, additional B{C{LatLon}} keyword
355
355
  arguments, ignored if C{B{LatLon} is None}.
356
356
 
357
- @return: The geodetic (C{LatLon}) or if B{C{LatLon}} is C{None} an
357
+ @return: The geodetic (C{LatLon}) or if C{B{LatLon} is None} an
358
358
  L{Albers7Tuple}C{(x, y, lat, lon, gamma, scale, datum)}.
359
359
 
360
360
  @note: The origin latitude is returned by C{property lat0}. No
@@ -29,7 +29,7 @@ from pygeodesy.lazily import _ALL_OTHER
29
29
  # no modules: auxAngle, auxDLat, auxDST, auxily, auxLat
30
30
  __all__ = _ALL_OTHER(Aux, AuxAngle, AuxDLat, AuxDST, AuxLat,
31
31
  AuxBeta, AuxChi, AuxMu, AuxPhi, AuxTheta, AuxXi)
32
- __version__ = '24.05.31'
32
+ __version__ = '24.06.16'
33
33
 
34
34
  # **) MIT License
35
35
  #
@@ -14,14 +14,14 @@ under the MIT/X11 License. For more information, see the U{GeographicLib
14
14
  # make sure int/int division yields float quotient, see .basics
15
15
  from __future__ import division as _; del _ # PYCHOK semicolon
16
16
 
17
- from pygeodesy.auxilats.auxily import Aux, _Aux2Greek
18
- from pygeodesy.basics import _xinstanceof
17
+ from pygeodesy.auxilats.auxily import Aux, _Aux2Greek, AuxError
18
+ from pygeodesy.basics import map1, map2, _xinstanceof
19
19
  from pygeodesy.constants import EPS, _INF_NAN_NINF, MAX, NAN, _0_0, _0_5, _1_0, \
20
20
  _copysign_1_0, _over, _pos_self, isfinite, isnan
21
- from pygeodesy.errors import AuxError, _UnexpectedError, _xkwds_pop2
21
+ # from pygeodesy.errors import AuxError # from .auxilats.auxily
22
22
  from pygeodesy.fmath import hypot, unstr
23
23
  from pygeodesy.fsums import _add_op_, _iadd_op_, _isub_op_, _sub_op_
24
- from pygeodesy.named import _name2__, _Named, _ALL_DOCS, _MODS
24
+ from pygeodesy.named import _Named, _ALL_DOCS, _MODS
25
25
  # from pygeodesy.lazily import _ALL_DOCS, _ALL_MODS as _MODS # from .named
26
26
  from pygeodesy.props import Property, Property_RO, property_RO, _update_all
27
27
  # from pygeodesy.streprs import unstr # from .fmath
@@ -31,7 +31,7 @@ from pygeodesy.utily import atan2d, sincos2, sincos2d
31
31
  from math import asinh, atan2, copysign, degrees, fabs, radians, sinh
32
32
 
33
33
  __all__ = ()
34
- __version__ = '24.05.25'
34
+ __version__ = '24.06.16'
35
35
 
36
36
  _0_INF_NAN_NINF = (0, _0_0) + _INF_NAN_NINF
37
37
  _MAX_2 = MAX * _0_5 # PYCHOK used!
@@ -44,38 +44,37 @@ class AuxAngle(_Named):
44
44
  '''
45
45
  _AUX = None # overloaded/-ridden
46
46
  _diff = NAN # default
47
- _iter = None # like .Named._NamedBase
47
+ _iter = None # like ._NamedBase
48
48
  _y = _0_0
49
49
  _x = _1_0
50
50
 
51
- def __init__(self, y_angle=_0_0, x=_1_0, **name_aux):
51
+ def __init__(self, y_angle=_0_0, x=_1_0, aux=None, **name):
52
52
  '''New L{AuxAngle}.
53
53
 
54
54
  @kwarg y_angle: The Y component (C{scalar}, including C{INF}, C{NAN}
55
55
  and C{NINF}) or a previous L{AuxAngle} instance.
56
- @kwarg x: The X component, ignored if C{B{y_angle}} is non-C{scalar}.
57
- @kwarg name_aux: Optional C{B{name}=NN} (C{str}) and I{Auxiliary} kind
58
- (C{B{aux}=Aux.KIND}), ignored if B{C{y_angle}} is L{AuxAngle}.
56
+ @kwarg x: The X component, required if C{B{y_angle}} is C{scalar},
57
+ ignored otherwise.
58
+ @kwarg aux: I{Auxiliary} kind (C{Aux.KIND}), like B{C{x}}.
59
+ @kwarg name: Optional C{B{name}=NN} see (C{str}).
59
60
 
60
61
  @raise AuxError: Invalid B{C{y_angle}}, B{C{x}} or B{C{aux}}.
61
62
  '''
62
- name, aux = _name2__(**name_aux)
63
63
  try:
64
- yx = y_angle._yx
65
- if self._AUX is None:
66
- self._AUX = y_angle._AUX
67
- if self._diff != y_angle._diff:
68
- self._diff = y_angle._diff
69
- except AttributeError:
70
- yx = y_angle, x
71
- if aux:
72
- a, kwds = _xkwds_pop2(aux, aux=self._AUX)
73
- if kwds:
74
- raise _UnexpectedError(**kwds)
75
- if a is not self._AUX:
76
- if a not in _AUXClass:
77
- raise AuxError(aux=a)
78
- self._AUX = a
64
+ try:
65
+ yx = y_angle._yx
66
+ aux = y_angle._AUX
67
+ if self._diff != y_angle._diff:
68
+ self._diff = y_angle._diff
69
+ except AttributeError:
70
+ yx = y_angle, x
71
+ if aux in _AUXClass:
72
+ if self._AUX != aux:
73
+ self._AUX = aux
74
+ elif aux is not None:
75
+ raise ValueError() # _invalid_
76
+ except Exception as X:
77
+ raise AuxError(y=y_angle, x=x, aux=aux, cause=X)
79
78
  self._y, self._x = _yx2(yx)
80
79
  if name:
81
80
  self.name = name
@@ -84,7 +83,7 @@ class AuxAngle(_Named):
84
83
  '''Return this angle's absolute value (L{AuxAngle}).
85
84
  '''
86
85
  a = self._copy_2(self.__abs__)
87
- a._yx = map(fabs, self._yx)
86
+ a._yx = map2(fabs, self._yx)
88
87
  return a
89
88
 
90
89
  def __add__(self, other):
@@ -230,28 +229,28 @@ class AuxAngle(_Named):
230
229
  return self._diff
231
230
 
232
231
  @staticmethod
233
- def fromDegrees(deg, **name_aux):
232
+ def fromDegrees(deg, **aux_name):
234
233
  '''Get an L{AuxAngle} from degrees.
235
234
  '''
236
- return _AuxClass(**name_aux)(*sincos2d(deg), **name_aux)
235
+ return _AuxClass(**aux_name)(*sincos2d(deg), **aux_name)
237
236
 
238
237
  @staticmethod
239
- def fromLambertianDegrees(psi, **name_aux):
238
+ def fromLambertianDegrees(psi, **aux_name):
240
239
  '''Get an L{AuxAngle} from I{Lambertian} degrees.
241
240
  '''
242
- return _AuxClass(**name_aux)(sinh(radians(psi)), **name_aux)
241
+ return _AuxClass(**aux_name)(sinh(radians(psi)), **aux_name)
243
242
 
244
243
  @staticmethod
245
- def fromLambertianRadians(psi, **name_aux):
244
+ def fromLambertianRadians(psi, **aux_name):
246
245
  '''Get an L{AuxAngle} from I{Lambertian} radians.
247
246
  '''
248
- return _AuxClass(**name_aux)(sinh(psi), **name_aux)
247
+ return _AuxClass(**aux_name)(sinh(psi), **aux_name)
249
248
 
250
249
  @staticmethod
251
- def fromRadians(rad, **name_aux):
250
+ def fromRadians(rad, **aux_name):
252
251
  '''Get an L{AuxAngle} from radians.
253
252
  '''
254
- return _AuxClass(**name_aux)(*sincos2(rad), **name_aux)
253
+ return _AuxClass(**aux_name)(*sincos2(rad), **aux_name)
255
254
 
256
255
  @Property_RO
257
256
  def iteration(self):
@@ -514,13 +513,15 @@ def _AuxClass(aux=None, **unused): # PYCHOK C{classof(aux)}
514
513
 
515
514
 
516
515
  def _yx2(yx):
516
+ '''(INTERNAL) Validate 2-tuple C{(y, x)}.
517
+ '''
517
518
  try:
518
- y, x = map(float, yx)
519
+ y, x = yx
520
+ y, x = map1(float, y, x)
519
521
  if y in _0_INF_NAN_NINF:
520
522
  x = _copysign_1_0(x)
521
- except (TypeError, ValueError) as e:
522
- y, x = yx
523
- raise AuxError(y=y, x=x, cause=e)
523
+ except (TypeError, ValueError) as X:
524
+ raise AuxError(y=y, x=x, cause=X)
524
525
  return y, x
525
526
 
526
527
 
@@ -26,7 +26,7 @@ from pygeodesy.elliptic import Elliptic as _Ef, Fsum
26
26
  from math import atan2, cos, sin, sqrt
27
27
 
28
28
  __all__ = ()
29
- __version__ = '23.12.01'
29
+ __version__ = '24.06.16'
30
30
 
31
31
 
32
32
  class AuxDLat(AuxLat):
@@ -138,7 +138,8 @@ class AuxDLat(AuxLat):
138
138
  txy = tx * ty
139
139
  if txy < 0 or (isinf(ty) and not tx):
140
140
  _a = atan1
141
- r = _over(_a(fm1 * ty) - _a(fm1 * tx), _a(ty) - _a(tx))
141
+ r = _a(fm1 * ty) - _a(fm1 * tx)
142
+ r = _over(r, _a(ty) - _a(tx))
142
143
  elif tx == ty: # includes tx = ty = inf
143
144
  if txy > 1: # == tx**2
144
145
  txy = _1_over(txy)
@@ -22,8 +22,9 @@ from pygeodesy.basics import _reverange, _xinstanceof, _passarg
22
22
  from pygeodesy.constants import INF, MAX_EXP, MIN_EXP, NAN, PI_2, PI_4, _EPSqrt, \
23
23
  _0_0, _0_0s, _0_1, _0_25, _0_5, _1_0, _2_0, _3_0, \
24
24
  _360_0, isfinite, isinf, isnan, _log2, _over
25
- from pygeodesy.datums import _ellipsoidal_datum, _WGS84, Ellipsoid, _name__
26
- # from pygeodesy.ellipsoids import Ellipsoid # from .datums
25
+ from pygeodesy.datums import _ellipsoidal_datum, _WGS84, \
26
+ Ellipsoid, _name__, _EWGS84
27
+ # from pygeodesy.ellipsoids import Ellipsoid, _EWGS84 # from .datums
27
28
  from pygeodesy.elliptic import Elliptic as _Ef
28
29
  from pygeodesy.errors import AuxError, _xkwds_not, _xkwds_pop2, _Xorder
29
30
  # from pygeodesy.fmath import cbrt # from .karney
@@ -46,7 +47,7 @@ except ImportError: # Python 3.11-
46
47
  return pow(_2_0, x)
47
48
 
48
49
  __all__ = ()
49
- __version__ = '24.05.24'
50
+ __version__ = '24.06.16'
50
51
 
51
52
  _TRIPS = 1024 # XXX 2 or 3?
52
53
 
@@ -64,24 +65,21 @@ class AuxLat(AuxAngle):
64
65
  <https://GeographicLib.SourceForge.io/C++/doc/classGeographicLib_1_1AuxLatitude.html>}.
65
66
  '''
66
67
  _csc = dict() # global coeffs cache: [aL][k], upto max(k) * (4 + 6 + 8) floats
67
- _E = _WGS84.ellipsoid
68
+ _E = _EWGS84
68
69
  # _Lmax = 0 # overwritten below
69
70
  _mAL = 6 # 4, 6 or 8 aka Lmax
70
71
 
71
- def __init__(self, a_earth=_WGS84, f=None, b=None, **ALorder_name):
72
+ def __init__(self, a_earth=_EWGS84, f=None, b=None, **ALorder_name):
72
73
  '''New L{AuxLat} instance on an ellipsoid or datum.
73
74
 
74
- @arg a_earth: Equatorial radius, semi-axis (C{meter}) or an
75
- ellipsoid or datum (L{Datum}, L{Ellipsoid},
76
- L{Ellipsoid2} or L{a_f2Tuple}).
77
- @kwarg f: Flattening: M{(a - b) / a} (C{float}, near zero for
78
- spherical), ignored if B{C{a_earth}} is not scalar.
79
- @kwarg b: Optional polar radius, semi-axis (C{meter}, same
80
- units as B{C{a_earth}}), ignored if B{C{a_earth}}
81
- is not scalar.
82
- @kwarg ALorder_name: Optional C{B{name}=NN} (C{str}) and optional
83
- keyword argument C{B{ALorder}=6} for the order of
84
- this L{AuxLat}, see property C{ALorder}.
75
+ @arg a_earth: Equatorial radius, semi-axis (C{meter}) or an ellipsoid or
76
+ datum (L{Datum}, L{Ellipsoid}, L{Ellipsoid2} or L{a_f2Tuple}).
77
+ @kwarg f: Flattening: M{(a - b) / a} (C{float}, near zero for spherical),
78
+ required if B{C{a_earth}} is C{scalar} and C{B{b}=None}.
79
+ @kwarg b: Optional polar radius, semi-axis (C{meter}, required if B{C{a_earth}}
80
+ is C{scalar} and C{B{f}=None}.
81
+ @kwarg ALorder_name: Optional C{B{name}=NN} (C{str}) and optional order of
82
+ this L{AuxLat} C{B{ALorder}=6}, see property C{ALorder}.
85
83
  '''
86
84
  if ALorder_name:
87
85
  M = self._mAL
@@ -91,7 +89,7 @@ class AuxLat(AuxAngle):
91
89
  else:
92
90
  name = NN
93
91
  try:
94
- if a_earth is not _WGS84:
92
+ if a_earth not in (_EWGS84, _WGS84):
95
93
  n = _name__(name, name__=AuxLat)
96
94
  if b is f is None:
97
95
  E = _ellipsoidal_datum(a_earth, name=n).ellipsoid # XXX raiser=_earth_
@@ -101,7 +99,7 @@ class AuxLat(AuxAngle):
101
99
  raise ValueError(_not_scalar_)
102
100
  self._E = E
103
101
  elif not (b is f is None):
104
- # _UnexpectedError into AuxError
102
+ # turn _UnexpectedError into AuxError
105
103
  name = _name__(name, **_xkwds_not(None, b=b, f=f))
106
104
 
107
105
  if name:
@@ -212,7 +212,7 @@ def _h(tx):
212
212
 
213
213
 
214
214
  def _sn(tx):
215
- '''(INTERNAL) M{tx / sqrt(tx**2 + 1)}, converting tan to sin.
215
+ '''(INTERNAL) M{sin(x) = tan(x) / sqrt(tan(x)**2 + 1)}.
216
216
  '''
217
217
  if tx:
218
218
  tx = _copysign_1_0(tx) if isinf(tx) else (
pygeodesy/azimuthal.py CHANGED
@@ -70,7 +70,7 @@ from pygeodesy.utily import asin1, atan1, atan2b, atan2d, sincos2, \
70
70
  from math import acos, atan2, degrees, fabs, sin, sqrt
71
71
 
72
72
  __all__ = _ALL_LAZY.azimuthal
73
- __version__ = '24.05.24'
73
+ __version__ = '24.06.11'
74
74
 
75
75
  _EPS_K = _EPStol * _0_1 # Karney's eps_ or _EPSmin * _0_1?
76
76
  _over_horizon_ = 'over horizon'
@@ -364,8 +364,8 @@ class Equidistant(_AzimuthalBase):
364
364
 
365
365
  @raise AzimuthalError: Invalid B{C{lat}} or B{C{lon}}.
366
366
 
367
- @note: The C{scale} will be C{-1} if B{C{(lat, lon)}} is antipodal to
368
- the projection center C{(lat0, lon0)}.
367
+ @note: The C{scale} will be C{-1} if B{C{(lat, lon)}} is antipodal to the
368
+ projection center C{(lat0, lon0)}.
369
369
  '''
370
370
  def _k_t(c):
371
371
  k = _N_1_0 if c < 0 else _1_0
@@ -389,7 +389,7 @@ class Equidistant(_AzimuthalBase):
389
389
  optional, additional B{C{LatLon}} keyword arguments,
390
390
  ignored if C{B{LatLon} is None}.
391
391
 
392
- @return: The geodetic (C{LatLon}) or if B{C{LatLon}} is C{None} an
392
+ @return: The geodetic (C{LatLon}) or if C{B{LatLon} is None} an
393
393
  L{Azimuthal7Tuple}C{(x, y, lat, lon, azimuth, scale, datum)}.
394
394
 
395
395
  @note: The C{lat} will be in the range C{[-90..90] degrees} and C{lon}
@@ -509,7 +509,7 @@ class _EquidistantBase(_AzimuthalGeodesic):
509
509
  optional, additional B{C{LatLon}} keyword arguments,
510
510
  ignored if C{B{LatLon} is None}.
511
511
 
512
- @return: The geodetic (C{LatLon}) or if B{C{LatLon}} is C{None} an
512
+ @return: The geodetic (C{LatLon}) or if C{B{LatLon} is None} an
513
513
  L{Azimuthal7Tuple}C{(x, y, lat, lon, azimuth, scale, datum)}.
514
514
 
515
515
  @note: The C{lat} will be in the range C{[-90..90] degrees} and C{lon}
@@ -680,7 +680,7 @@ class Gnomonic(_AzimuthalBase):
680
680
  optional, additional B{C{LatLon}} keyword arguments,
681
681
  ignored if C{B{LatLon} is None}.
682
682
 
683
- @return: The geodetic (C{LatLon}) or if B{C{LatLon}} is C{None} an
683
+ @return: The geodetic (C{LatLon}) or if C{B{LatLon} is None} an
684
684
  L{Azimuthal7Tuple}C{(x, y, lat, lon, azimuth, scale, datum)}.
685
685
 
686
686
  @note: The C{lat} will be in the range C{[-90..90] degrees} and C{lon}
@@ -791,7 +791,7 @@ class _GnomonicBase(_AzimuthalGeodesic):
791
791
  optional, additional B{C{LatLon}} keyword arguments,
792
792
  ignored if C{B{LatLon} is None}.
793
793
 
794
- @return: The geodetic (C{LatLon}) or if B{C{LatLon}} is C{None} an
794
+ @return: The geodetic (C{LatLon}) or if C{B{LatLon} is None} an
795
795
  L{Azimuthal7Tuple}C{(x, y, lat, lon, azimuth, scale, datum)}.
796
796
 
797
797
  @raise AzimuthalError: No convergence.
@@ -984,7 +984,7 @@ class LambertEqualArea(_AzimuthalBase):
984
984
  and optional, additional B{C{LatLon}} keyword
985
985
  arguments, ignored if C{B{LatLon} is None}.
986
986
 
987
- @return: The geodetic (C{LatLon}) or if B{C{LatLon}} is C{None} an
987
+ @return: The geodetic (C{LatLon}) or if C{B{LatLon} is None} an
988
988
  L{Azimuthal7Tuple}C{(x, y, lat, lon, azimuth, scale, datum)}.
989
989
 
990
990
  @note: The C{lat} will be in the range C{[-90..90] degrees} and C{lon}
@@ -1038,7 +1038,7 @@ class Orthographic(_AzimuthalBase):
1038
1038
  optional, additional B{C{LatLon}} keyword arguments,
1039
1039
  ignored if C{B{LatLon} is None}.
1040
1040
 
1041
- @return: The geodetic (C{LatLon}) or if B{C{LatLon}} is C{None} an
1041
+ @return: The geodetic (C{LatLon}) or if C{B{LatLon} is None} an
1042
1042
  L{Azimuthal7Tuple}C{(x, y, lat, lon, azimuth, scale, datum)}.
1043
1043
 
1044
1044
  @note: The C{lat} will be in the range C{[-90..90] degrees} and C{lon}
@@ -1111,7 +1111,7 @@ class Stereographic(_AzimuthalBase):
1111
1111
  optional, additional B{C{LatLon}} keyword arguments,
1112
1112
  ignored if C{B{LatLon} is None}.
1113
1113
 
1114
- @return: The geodetic (C{LatLon}) or if B{C{LatLon}} is C{None} an
1114
+ @return: The geodetic (C{LatLon}) or if C{B{LatLon} is None} an
1115
1115
  L{Azimuthal7Tuple}C{(x, y, lat, lon, azimuth, scale, datum)}.
1116
1116
 
1117
1117
  @note: The C{lat} will be in range C{[-90..90] degrees}, C{lon} in range