pygeodesy 24.6.24__py2.py3-none-any.whl → 24.7.7__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PyGeodesy
3
- Version: 24.6.24
3
+ Version: 24.7.7
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 24, 2024.*
162
+ *Last updated: July 07, 2024.*
163
163
 
164
164
  License
165
165
  =======
@@ -1,9 +1,9 @@
1
1
  pygeodesy/LICENSE,sha256=YfgAiyxOwY6P9Kkb1_5XN81nueTLrpb3Ffkv3EuPgFU,1144
2
- pygeodesy/__init__.py,sha256=QKI7NviUtivEdGiX532XzHBvGfTLEul0e0lBo7gMbDA,41475
3
- pygeodesy/__main__.py,sha256=UmTd6Qw20g_pgnQjdaHePm-xuOEBi1tUNRLO0eL0-rU,4593
2
+ pygeodesy/__init__.py,sha256=Ig2DWbIX8WlxpVNviEhbft-iQ2xgVWvnOmbGWrpvV8c,41787
3
+ pygeodesy/__main__.py,sha256=VWxepzxGqR5wsHYyIHFSsRMlZ27keX3xyEhBuGDRXxk,4727
4
4
  pygeodesy/albers.py,sha256=JXqeWAteV2N601e5R-D7bCsa8qAYv3oWm7M3R4uszXM,31078
5
5
  pygeodesy/azimuthal.py,sha256=5tMMKlzKyfGnreOHChrquBi241ZvIOBTUn_pbZCIJWc,50231
6
- pygeodesy/basics.py,sha256=YgrXYea-m47l0_cAeyWlEvCzpzvfZDKpkievC77qJdY,29590
6
+ pygeodesy/basics.py,sha256=mSim8pSrRLMFYTnTrJDvkthfrw2MWBmMya3hOHWX4co,29785
7
7
  pygeodesy/booleans.py,sha256=5IeA6QWihiPWSv2JnCbMT53ey1WYIU7od5VQ1YUFqX8,73529
8
8
  pygeodesy/cartesianBase.py,sha256=WaAod_-nwgX8MjNhu4rr_V9PmEaI0F8gKPCUH4-Olyc,46968
9
9
  pygeodesy/clipy.py,sha256=3ysIEWQ89HjvLnSlZm0nZAt9EN5AQxIs1sLLM8yF9zM,27675
@@ -23,7 +23,7 @@ pygeodesy/ellipsoidalVincenty.py,sha256=gsUFMKgqMZKT02jDm7TEJ_jSHX8d-KJCz91iCfku
23
23
  pygeodesy/ellipsoids.py,sha256=fraKj3NPStXablvzejt-LgQsghcp-MgMUvU6nh4L2YI,108034
24
24
  pygeodesy/elliptic.py,sha256=-80MbZvRPk-TeA_ggkfXhjuPv07MzsB4HxNF7gbdhB4,42501
25
25
  pygeodesy/epsg.py,sha256=oWHX_QVChE5roktAyXUmPmX49XHiryYmXTHxQzrAprE,8222
26
- pygeodesy/errors.py,sha256=4LmkeCrslywBbLzCJ07A1LPFjbUHkkJrcscSzROxNZs,30300
26
+ pygeodesy/errors.py,sha256=-UnQ1GhkiTR6uBd0z0vd_pFEmjWXlOESRDwMdxY_JD0,30605
27
27
  pygeodesy/etm.py,sha256=y3dAqS-iWnbWzmsu4zB7kryAp_I17XEdzNRRk0klTww,44696
28
28
  pygeodesy/fmath.py,sha256=EOHD0uZ8VULZtXAk8tVeuPaSTozPDCN8GJcemCo-jqg,33709
29
29
  pygeodesy/formy.py,sha256=ZpPaQBQvaFiA-UcrgaiiV_iGxlfTqNdlR1Ngx-1oinY,75032
@@ -31,23 +31,23 @@ pygeodesy/frechet.py,sha256=F6TYbOEYSOFcll6nvp4GhqafUWXh1umAKb1QaMYQtuM,34372
31
31
  pygeodesy/fstats.py,sha256=4eIhzSCMnn-2nVP3Q-5cCWCI-rvH0CE-zkk9hp3Pvn8,28642
32
32
  pygeodesy/fsums.py,sha256=LzsPQHY3bByOFFXPSo7E8lbYKWy5cif02WJk2JfnMvA,80455
33
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
34
+ pygeodesy/geodesici.py,sha256=SiC7GX1d3rswXL24kuxs6acxMx95lxgIZkhCJ_W0MKA,69988
35
+ pygeodesy/geodesicw.py,sha256=apDkq2MwLCuEccRx39_P2vSqkW8aFaHX-aigj3fbU8Q,27186
36
+ pygeodesy/geodsolve.py,sha256=luJCtc5pfNoSSKZ-OgXIMUjgRH2jo8skskvsy2sAJRA,23171
37
37
  pygeodesy/geohash.py,sha256=rOOGOHcTnxIPX2p5ieA1gQ_ZcRlUxjIcroPHa7a85ak,31876
38
38
  pygeodesy/geoids.py,sha256=oxn0MSgbvwBkrwyg1vS7PhhYZ_zbjLxC50W-8FTIxeU,80680
39
39
  pygeodesy/hausdorff.py,sha256=-aKtRbMefDSoIk4V3wCvNrXPZ7Bqk1P6-XuGuI7o8Zc,34770
40
40
  pygeodesy/heights.py,sha256=9kvyJj0-D3syZMdHNDXIfZT3MyhHH2fcqW_y-u7Tn2M,43197
41
- pygeodesy/internals.py,sha256=LSDiYfCMs6zEzWPiQyRrg-XkH14B6IlSQwFbf40XKJM,19522
41
+ pygeodesy/internals.py,sha256=YUcf9wWXT7XztviEBN2uBww8Bt7gnqks2sAZt7k_j3w,20426
42
42
  pygeodesy/interns.py,sha256=kReVkCWA_rw8GyaYFVRI9dfdXu7MF9nD1MgoXsdsK7I,23273
43
43
  pygeodesy/iters.py,sha256=xPH0ytomvJeKHu717Fjzi3QbRrEikO6n7vqkY_IDz1k,20311
44
- pygeodesy/karney.py,sha256=EUyt_vcPjY0bTbNahq-nshkKdJPdHv2RI2GjdJpa8gg,35725
44
+ pygeodesy/karney.py,sha256=e11p40pfXocdmFpVROjv4NTowxjAmL4bNeNTDmF095I,37745
45
45
  pygeodesy/ktm.py,sha256=u0xjvqhG2k18jg7bNclRr3D9umiZXKXQGRjmL_VX4yY,27437
46
46
  pygeodesy/latlonBase.py,sha256=M-Xe4KK8aOnQUxNJkODlTa5ApzhqXCggc_d8HlMdnIc,78987
47
- pygeodesy/lazily.py,sha256=T_TmKqLJi_-IC6nHn_MqTfNxI8WJT4kobWwfVYJ5V5U,46616
47
+ pygeodesy/lazily.py,sha256=HCrqdp_ZT_aTREO47nmlOch5kNHyL0IOfij40HL5hig,46842
48
48
  pygeodesy/lcc.py,sha256=oDooTzFHnqsMtSKmmmfEbypHpdlPltfo7Mt0pAO4-_A,25669
49
49
  pygeodesy/ltp.py,sha256=gQLZwcSIiXJrbRlaWnxAX8AK2VzH9l3jDqoNb3jcVD4,50773
50
- pygeodesy/ltpTuples.py,sha256=bi1lJIbQ8lIX3vDgugQmG-mQN0EZIRe0TZlPAu8GUC8,58338
50
+ pygeodesy/ltpTuples.py,sha256=r3uHMBCxr31IsCMp_OtpevQPmULJhucn8JZ2bGjuiVI,58338
51
51
  pygeodesy/mgrs.py,sha256=w50bvM3qDtHDBDBRQ_EgZnPn7vxVXgoFnleeZgefkVk,29679
52
52
  pygeodesy/named.py,sha256=_2zgvL0cPg2JL3JpyWMZ7cc9e_I0y_4XPVYb2e7zEZg,52243
53
53
  pygeodesy/namedTuples.py,sha256=UDmL4kCihvf8tIUVXzGzRLzL_1BLuyqm04pite6YUuk,28495
@@ -57,14 +57,14 @@ pygeodesy/points.py,sha256=GirmbiqjD7Q0Z4SDySQO__Jgun-i8vMdJ81U2Kz8V0w,64408
57
57
  pygeodesy/props.py,sha256=8dGmTpdEABnLbBngmaOIpM0h4NYiBteMOHc_r4iNpAg,21988
58
58
  pygeodesy/resections.py,sha256=nkfBxYrsEdyq2JqAbPrRWKplJBzFkIXLvEZGB4gPu_A,43550
59
59
  pygeodesy/simplify.py,sha256=NybC-pfze0ObEm4ZCz6ZQrjJlQ-QyA83E6mSJqCuKq4,25223
60
- pygeodesy/solveBase.py,sha256=FGuvHvloiyBdE0H50o8rOxtD_n6gCx1Gp31Ckn-N7hk,16852
60
+ pygeodesy/solveBase.py,sha256=SRxXd7M3e3VCe9om5XEYuIJ_AoDlP26AnRzDuDbIgUs,18726
61
61
  pygeodesy/sphericalBase.py,sha256=YvjMZmmfy9pZeKHbY-ca0oi-Jy-OxsG9dhefy5LTjRA,32237
62
62
  pygeodesy/sphericalNvector.py,sha256=MiWcCy5CdvXsCa3963GeUMEnSYGhBiXzkoAEX_tGX4Q,56952
63
63
  pygeodesy/sphericalTrigonometry.py,sha256=Jf3FUUYEWXbNkiagr0HyMJ6E-cNghnTjcdgntTm28RE,64076
64
64
  pygeodesy/streprs.py,sha256=xudQ6zi5jFT_CmstSPysjxpZKyLBQNkUk1ETh0uvQ04,23030
65
65
  pygeodesy/trf.py,sha256=CRFHmu0lFNtc41fddXavEkHmgnTFWEqR4RTFodcFKsw,119022
66
66
  pygeodesy/triaxials.py,sha256=SLAlzdpOa8kFSkpP-lhL-swzsZkuqufZET_gJtoA_54,62750
67
- pygeodesy/units.py,sha256=2ZFrFOB__jjs8OYkSGyusYB60fs3FihubydriBdSNYg,34607
67
+ pygeodesy/units.py,sha256=mTn0APS0SW9fKn3IYf5usV63Xaw2B9DzkwefPNVu-Es,34607
68
68
  pygeodesy/unitsBase.py,sha256=yT7dgfwxtd1hHEn02NwPAdStsVWDfPH-Qdfrhvje7Yw,14057
69
69
  pygeodesy/ups.py,sha256=zapIvzoVuj_FDGC6sr8O8ynPhfqXwUg-EFCVnJdM9Eo,23329
70
70
  pygeodesy/utily.py,sha256=Zb6L9unzHHhp67znmQLLdizvyX6p4eczR1PDtcyWH-s,36189
@@ -86,9 +86,9 @@ pygeodesy/auxilats/auxDLat.py,sha256=3sq7Wc-ykpVbldNh10IZ3tIlJ7DcQFDlmZ4nOhJEgo0
86
86
  pygeodesy/auxilats/auxDST.py,sha256=bdNEh3TdABWH7qW6ngZx5SnzDM3B5rtPLvYhvCnFsKc,10497
87
87
  pygeodesy/auxilats/auxLat.py,sha256=QeTx8dqov1NwNSEam9VC_wq36nRCUpbJpY4hH1NvyNg,32493
88
88
  pygeodesy/auxilats/auxily.py,sha256=spSRS9beouT-qH98QhqMk9sm2qKubW8kwNYVWkFu3iU,8234
89
- pygeodesy/deprecated/__init__.py,sha256=sGIgKL1Kmpz9upmGSxZEDdsGHNZhkpYAgsRw3FdI574,2815
89
+ pygeodesy/deprecated/__init__.py,sha256=cBYqbh5Njkd5SnaJDaMUP6PL66HfLWii_JoLjnKfnP4,2815
90
90
  pygeodesy/deprecated/bases.py,sha256=nxUtxscAg5cb7HEzTSmPJFafLc9Ad2SL5ovwkYaU5z8,1655
91
- pygeodesy/deprecated/classes.py,sha256=ietjn0Jvil-moZwIlQLDdo5ehSPQ28RsmiLKkwI9v50,12124
91
+ pygeodesy/deprecated/classes.py,sha256=gktUr5qYXCm8ztH6lfzFgaHKqMiw1tHc1Vw6i6DEvNA,12377
92
92
  pygeodesy/deprecated/consterns.py,sha256=W-rQiw443_zCFEUzjCGykGND-i5P_ghEIyJUSGg7-Nc,1908
93
93
  pygeodesy/deprecated/datum.py,sha256=s8Hke053RucP5ACvg3gdX8weQfGM0x59pQyHpY11eOs,1875
94
94
  pygeodesy/deprecated/functions.py,sha256=EZMZe9WGkcbwmLDoWO2xKJyFlUkWAAMxmlbtCLa28lM,13866
@@ -100,18 +100,18 @@ pygeodesy/deprecated/rhumbx.py,sha256=OS0p_meaoVrpZe5UhK6qZljjlrGpL0pCHWw8gofw7k
100
100
  pygeodesy/geodesicx/_C4_24.py,sha256=kS4XMR9m7iBs01V8K0Oz9qTYmjN-icIQGpc_8iwVhig,90750
101
101
  pygeodesy/geodesicx/_C4_27.py,sha256=bPbj2Ckrn9WJglm3SNTXyMkULNwANM0tCQ-LKxP1L58,134258
102
102
  pygeodesy/geodesicx/_C4_30.py,sha256=QZO8p971ztJwDGLOaJYgIhklztz9GlqbtS-xRP_E7o4,201964
103
- pygeodesy/geodesicx/__init__.py,sha256=T_cX27kXyapbKcfsO6oMQMxYktXpV8i8PEWfKnxByPM,2478
103
+ pygeodesy/geodesicx/__init__.py,sha256=4qAIrE-cnOvi1B38iK-52PB2BpB1zxsVYEryHm4QTJk,2478
104
104
  pygeodesy/geodesicx/__main__.py,sha256=JnKrYmg1q9J5wRRqUy-dQ9abj2-2jpWtrolMMaFfWiY,3176
105
- pygeodesy/geodesicx/gx.py,sha256=Liyp9UFJi2ZeN5J_2SCV2ia3ZcqvOC2hNdOcfcnXZdc,61121
105
+ pygeodesy/geodesicx/gx.py,sha256=0ohLWR_xllBfHyMzcwHTSgKE8FW4IH22IEXo3uAI-eI,60585
106
106
  pygeodesy/geodesicx/gxarea.py,sha256=-Kwe6spe2MSQbeLFDd6UN2NOi4JOjYhHAEzonOU3u4A,19409
107
107
  pygeodesy/geodesicx/gxbases.py,sha256=Awt9zc1lyPS0vp4df2u4H_rhMeFu1pJaZPhb1iMoc-Q,5693
108
- pygeodesy/geodesicx/gxline.py,sha256=_3l84g-RHoYIuOCMbvGiIY3CJuauSEcJwrZqp2n1J3s,27001
108
+ pygeodesy/geodesicx/gxline.py,sha256=ZmRIO08IY4s0xJnCRrx2rF3z6XZ9_joUom77P_TsRaA,27514
109
109
  pygeodesy/rhumb/__init__.py,sha256=kTuNSKiiQyXvQdYc5KUd5admuKJ2QmDCWQwkIobnM-w,2207
110
110
  pygeodesy/rhumb/aux_.py,sha256=lOjpEU3Pe2I5DwC933UCf-SW73l5NMuDACeZhbVs3lE,16657
111
111
  pygeodesy/rhumb/bases.py,sha256=awpP60K6EOzS753oXM-h9S6paS6FwoCnco8Zt8n81jY,54162
112
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,,
113
+ pygeodesy/rhumb/solve.py,sha256=bnmoPZUUw6sPhZ2HDigvPaE-L5M7ddEPf3ZdWvfBX5k,24043
114
+ PyGeodesy-24.7.7.dist-info/METADATA,sha256=22FKDjrVIiF_zPFqvlpXLoJ4QTv58ARwic_X9u639as,19411
115
+ PyGeodesy-24.7.7.dist-info/WHEEL,sha256=DZajD4pwLWue70CAfc7YaxT1wLUciNBvN_TTcvXpltE,110
116
+ PyGeodesy-24.7.7.dist-info/top_level.txt,sha256=cEQPatCXzKZqrivpULC5V5fuy9_V_bAwaP_gUGid7pQ,10
117
+ PyGeodesy-24.7.7.dist-info/RECORD,,
pygeodesy/__init__.py CHANGED
@@ -101,6 +101,11 @@ and L{GnomonicGeodSolve} depend on I{Karney}'s C++ utility U{GeodSolve
101
101
  <https://GeographicLib.SourceForge.io/C++/doc/GeodSolve.1.html>} to be executable and set with
102
102
  env variable C{PYGEODESY_GEODSOLVE} or with property L{Ellipsoid.geodsolve}.
103
103
 
104
+ Class L{Intersectool} and module L{geodesici} need I{Karney}'s C++ utility U{IntersectTool
105
+ <https://GeographicLib.SourceForge.io/C++/doc/IntersectTool.1.html>} to be executable and set with
106
+ env variable C{PYGEODESY_INTERSECTTOOL}.
107
+
108
+
104
109
  To compare C{MGRS} results from modules L{mgrs} and C{testMgrs} with I{Karney}'s C++ utility
105
110
  U{GeoConvert<https://GeographicLib.SourceForge.io/C++/doc/GeoConvert.1.html>}, the latter must
106
111
  be executable and set with env variable C{PYGEODESY_GEOCONVERT}.
@@ -197,6 +202,7 @@ The following environment variables are observed by C{PyGeodesy}:
197
202
  - C{PYGEODESY_FSUM_RESIDUAL} - see module L{fsums<pygeodesy.fsums>} and class L{Fsum<pygeodesy.Fsum>}.
198
203
  - C{PYGEODESY_GEOCONVERT} - see module L{mgrs<pygeodesy.mgrs>}.
199
204
  - C{PYGEODESY_GEODSOLVE} - see module L{geodsolve<pygeodesy.geodsolve>}.
205
+ - C{PYGEODESY_INTERSECTTOOL} - see modules L{geodesici<pygeodesy.geodesici>}.
200
206
  - C{PYGEODESY_LAZY_IMPORT} - see module L{lazily<pygeodesy.lazily>} and variable L{isLazy<pygeodesy.isLazy>}.
201
207
  - C{PYGEODESY_NOTIMPLEMENTED} - C{__special__} methods return C{NotImplemented} if set to "std".
202
208
  - C{PYGEODESY_RHUMBSOLVE} - see module L{rhumb.solve<pygeodesy.rhumb.solve>}.
@@ -590,7 +596,7 @@ else:
590
596
 
591
597
  from pygeodesy.internals import _version2, _DOT_ # PYCHOK import
592
598
  # from pygeodesy.interns import _DOT_ # from .internals
593
- __version__ = '24.06.24'
599
+ __version__ = '24.07.07'
594
600
  # see setup.py for similar logic
595
601
  version = _DOT_(*_version2(__version__, n=3))
596
602
 
pygeodesy/__main__.py CHANGED
@@ -5,7 +5,7 @@ u'''Print L{pygeodesy} version, etc. using C{python -m pygeodesy}.
5
5
  '''
6
6
 
7
7
  __all__ = ()
8
- __version__ = '24.05.15'
8
+ __version__ = '24.07.07'
9
9
 
10
10
  from os.path import basename, dirname
11
11
 
@@ -42,6 +42,11 @@ def _main(): # PYCHOK no cover
42
42
  v.append(_name_version(pkg))
43
43
 
44
44
  v = _Pythonarchine()
45
+ try:
46
+ import coverage as pkg
47
+ v.append(_name_version(pkg))
48
+ except ImportError:
49
+ pass
45
50
  _nv(_xgeographiclib, v)
46
51
  _nv(_xnumpy, v)
47
52
  _nv(_xscipy, v)
pygeodesy/basics.py CHANGED
@@ -37,7 +37,7 @@ from math import copysign as _copysign
37
37
  import inspect as _inspect
38
38
 
39
39
  __all__ = _ALL_LAZY.basics
40
- __version__ = '24.06.15'
40
+ __version__ = '24.07.06'
41
41
 
42
42
  _below_ = 'below'
43
43
  _list_tuple_types = (list, tuple)
@@ -160,19 +160,23 @@ def _args_kwds_names(func, splast=False):
160
160
  return tuple(args_kwds)
161
161
 
162
162
 
163
- def clips(sb, limit=50, white=NN):
163
+ def clips(sb, limit=50, white=NN, length=False):
164
164
  '''Clip a string to the given length limit.
165
165
 
166
166
  @arg sb: String (C{str} or C{bytes}).
167
167
  @kwarg limit: Length limit (C{int}).
168
168
  @kwarg white: Optionally, replace all whitespace (C{str}).
169
+ @kwarg len: IF C{True} append the original I{[length]} (C{bool}).
169
170
 
170
171
  @return: The clipped or unclipped B{C{sb}}.
171
172
  '''
172
- T = type(sb)
173
- if len(sb) > limit > 8:
173
+ T, n = type(sb), len(sb)
174
+ if n > limit > 8:
174
175
  h = limit // 2
175
176
  sb = T(_ELLIPSIS4_).join((sb[:h], sb[-h:]))
177
+ if length:
178
+ n = _MODS.streprs.Fmt.SQUARE(n)
179
+ sb = T(NN).join((sb, n))
176
180
  if white: # replace whitespace
177
181
  sb = T(white).join(sb.split())
178
182
  return sb
@@ -27,7 +27,7 @@ __all__ = (_ALL_DEPRECATED.deprecated_bases +
27
27
  _ALL_DEPRECATED.deprecated_classes +
28
28
  _ALL_DEPRECATED.deprecated_consterns +
29
29
  _ALL_DEPRECATED.deprecated_functions)
30
- __version__ = '24.06.15'
30
+ __version__ = '24.07.02'
31
31
 
32
32
  if _unLazy0:
33
33
  from pygeodesy.deprecated import bases, datum, nvector, rhumbBase, \
@@ -9,10 +9,10 @@ from pygeodesy.constants import NAN, _float
9
9
  from pygeodesy.interns import NN, _a12_, _area_, _band_, _convergence_, \
10
10
  _distance_, _gamma_, _i_, _lat_, _lon_, _ltp_
11
11
  from pygeodesy.deprecated.consterns import _Deprecated_Str
12
- from pygeodesy.karney import _GTuple, Rhumb8Tuple as _Rhumb8Tuple
12
+ from pygeodesy.karney import _GTuple, Rhumb8Tuple as _Rhumb8Tuple, ADict
13
13
  from pygeodesy.lazily import _ALL_DEPRECATED, _ALL_DOCS, _ALL_MODS as _MODS
14
14
  from pygeodesy.ltpTuples import Ned4Tuple as _Ned4Tuple
15
- # from pygeodesy.named import _NamedTuple # from .namedTuples
15
+ # from pygeodesy.named import ADict, _NamedTuple # from .karney, .namedTuples
16
16
  from pygeodesy.namedTuples import Forward4Tuple as _Forward4Tuple, \
17
17
  Reverse4Tuple as _Reverse4Tuple, \
18
18
  UtmUps5Tuple as _UtmUps5Tuple, _NamedTuple
@@ -22,7 +22,7 @@ from pygeodesy.trf import TRFXform7Tuple as _TRFXform7Tuple
22
22
  from pygeodesy.units import Bearing, Int, Lamd, Lat, Lon, Meter, Phid
23
23
 
24
24
  __all__ = _ALL_DEPRECATED.deprecated_classes
25
- __version__ = '24.06.15'
25
+ __version__ = '24.07.02'
26
26
 
27
27
 
28
28
  class _Deprecated_NamedTuple(_NamedTuple):
@@ -264,6 +264,13 @@ class UtmUps4Tuple(_Deprecated_NamedTuple): # PYCHOK no cover
264
264
  _Units_ = (_Deprecated_Str,) + _UtmUps5Tuple._Units_[1:4]
265
265
 
266
266
 
267
+ class XDist(ADict):
268
+ '''DEPRECATED on 2024.07.02, use class L{XDict}.'''
269
+ def __init__(self, *args, **kwds): # PYCHOK signature
270
+ deprecated_class(self.__class__)
271
+ ADict.__init__(self, *args, **kwds)
272
+
273
+
267
274
  __all__ += _ALL_DOCS(_Deprecated_NamedTuple)
268
275
 
269
276
  # **) MIT License
pygeodesy/errors.py CHANGED
@@ -27,7 +27,7 @@ from pygeodesy.lazily import _ALL_LAZY, _ALL_MODS as _MODS, _getenv, _PYTHON_X_D
27
27
  from copy import copy as _copy
28
28
 
29
29
  __all__ = _ALL_LAZY.errors # _ALL_DOCS('_InvalidError', '_IsnotError') _under
30
- __version__ = '24.06.24'
30
+ __version__ = '24.07.07'
31
31
 
32
32
  _argument_ = 'argument'
33
33
  _box_ = 'box'
@@ -827,6 +827,15 @@ def _xkwds_item2(kwds):
827
827
  raise _xAssertionError(_xkwds_item2, kwds)
828
828
 
829
829
 
830
+ def _xkwds_kwds(kwds, **names_defaults):
831
+ '''(INTERNAL) Return a C{dict} of C{named_defaults} items replaced with C{kwds}.
832
+ '''
833
+ if not isinstance(kwds, dict):
834
+ raise _xAssertionError(_xkwds_get_, kwds)
835
+ _g = kwds.get
836
+ return dict((n, _g(n, v)) for n, v in names_defaults.items())
837
+
838
+
830
839
  def _xkwds_not(*args, **kwds):
831
840
  '''(INTERNAL) Return C{kwds} with a value not in C{args}.
832
841
  '''