pygeodesy 24.5.24__py2.py3-none-any.whl → 24.6.9__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 (71) hide show
  1. {PyGeodesy-24.5.24.dist-info → PyGeodesy-24.6.9.dist-info}/METADATA +6 -5
  2. PyGeodesy-24.6.9.dist-info/RECORD +116 -0
  3. pygeodesy/__init__.py +4 -4
  4. pygeodesy/auxilats/__init__.py +1 -1
  5. pygeodesy/auxilats/__main__.py +2 -2
  6. pygeodesy/auxilats/auxAngle.py +4 -4
  7. pygeodesy/basics.py +39 -5
  8. pygeodesy/booleans.py +54 -67
  9. pygeodesy/cartesianBase.py +138 -147
  10. pygeodesy/constants.py +3 -3
  11. pygeodesy/deprecated/functions.py +9 -3
  12. pygeodesy/ecef.py +67 -72
  13. pygeodesy/ellipsoidalBase.py +18 -56
  14. pygeodesy/ellipsoidalGeodSolve.py +2 -2
  15. pygeodesy/ellipsoidalKarney.py +3 -3
  16. pygeodesy/ellipsoidalNvector.py +7 -7
  17. pygeodesy/ellipsoids.py +6 -5
  18. pygeodesy/errors.py +20 -10
  19. pygeodesy/etm.py +16 -21
  20. pygeodesy/fmath.py +9 -20
  21. pygeodesy/formy.py +60 -74
  22. pygeodesy/frechet.py +13 -14
  23. pygeodesy/fsums.py +60 -26
  24. pygeodesy/geodesicx/__init__.py +1 -1
  25. pygeodesy/geodesicx/__main__.py +2 -2
  26. pygeodesy/geodesicx/gx.py +3 -5
  27. pygeodesy/geodsolve.py +24 -26
  28. pygeodesy/geohash.py +27 -40
  29. pygeodesy/geoids.py +1 -1
  30. pygeodesy/hausdorff.py +17 -18
  31. pygeodesy/heights.py +17 -30
  32. pygeodesy/internals.py +15 -14
  33. pygeodesy/interns.py +3 -9
  34. pygeodesy/iters.py +2 -2
  35. pygeodesy/karney.py +8 -7
  36. pygeodesy/latlonBase.py +189 -176
  37. pygeodesy/lazily.py +92 -56
  38. pygeodesy/lcc.py +2 -2
  39. pygeodesy/ltp.py +93 -55
  40. pygeodesy/ltpTuples.py +304 -240
  41. pygeodesy/mgrs.py +51 -24
  42. pygeodesy/named.py +159 -136
  43. pygeodesy/namedTuples.py +43 -14
  44. pygeodesy/nvectorBase.py +20 -23
  45. pygeodesy/osgr.py +40 -48
  46. pygeodesy/points.py +11 -11
  47. pygeodesy/props.py +29 -16
  48. pygeodesy/rhumb/aux_.py +13 -15
  49. pygeodesy/rhumb/bases.py +12 -5
  50. pygeodesy/rhumb/ekx.py +24 -18
  51. pygeodesy/rhumb/solve.py +20 -70
  52. pygeodesy/simplify.py +16 -16
  53. pygeodesy/solveBase.py +35 -32
  54. pygeodesy/sphericalBase.py +33 -31
  55. pygeodesy/sphericalTrigonometry.py +17 -17
  56. pygeodesy/streprs.py +6 -4
  57. pygeodesy/trf.py +11 -9
  58. pygeodesy/triaxials.py +71 -50
  59. pygeodesy/units.py +40 -65
  60. pygeodesy/unitsBase.py +2 -2
  61. pygeodesy/ups.py +66 -70
  62. pygeodesy/utily.py +7 -6
  63. pygeodesy/utm.py +152 -156
  64. pygeodesy/utmups.py +38 -38
  65. pygeodesy/utmupsBase.py +102 -106
  66. pygeodesy/vector3d.py +34 -36
  67. pygeodesy/vector3dBase.py +12 -9
  68. pygeodesy/webmercator.py +43 -51
  69. PyGeodesy-24.5.24.dist-info/RECORD +0 -116
  70. {PyGeodesy-24.5.24.dist-info → PyGeodesy-24.6.9.dist-info}/WHEEL +0 -0
  71. {PyGeodesy-24.5.24.dist-info → PyGeodesy-24.6.9.dist-info}/top_level.txt +0 -0
pygeodesy/heights.py CHANGED
@@ -75,8 +75,8 @@ from pygeodesy.errors import _AssertionError, LenError, PointsError, \
75
75
  _SciPyIssue, _xattr, _xkwds, _xkwds_get, _xkwds_item2
76
76
  # from pygeodesy.fmath import fidw # _MODS
77
77
  # from pygeodesy.formy import cosineAndoyerLambert, cosineForsytheAndoyerLambert, \
78
- # cosineLaw, equirectangular_, euclidean, flatLocal, \
79
- # flatPolar, haversine, thomas, vincentys # _MODS
78
+ # cosineLaw, equirectangular4, euclidean, flatLocal, \
79
+ # flatPolar, haversine, thomas, vincentys # _MODS.into
80
80
  # from pygeodesy.internals import _version2 # _MODS
81
81
  from pygeodesy.interns import NN, _COMMASPACE_, _cubic_, _insufficient_, _linear_, \
82
82
  _NOTEQUAL_, _PLUS_, _scipy_, _SPACE_, _STAR_
@@ -91,9 +91,10 @@ from pygeodesy.units import _isDegrees, Float_, Int_
91
91
  # from math import radians # from .points
92
92
 
93
93
  __all__ = _ALL_LAZY.heights
94
- __version__ = '24.05.23'
94
+ __version__ = '24.06.03'
95
95
 
96
96
  _error_ = 'error'
97
+ _formy = _MODS.into(formy=__name__)
97
98
  _llis_ = 'llis'
98
99
  _smoothing_ = 'smoothing'
99
100
 
@@ -693,20 +694,6 @@ class _HeightIDW(_HeightBase):
693
694
  i = Fmt.INDEX(knots=i)
694
695
  raise HeightError(i, k, cause=e)
695
696
 
696
- @property_RO
697
- def _fmath(self):
698
- '''(INTERNAL) Get module C{fmath}, I{once}.
699
- '''
700
- _HeightIDW._fmath = f = _MODS.fmath # overwrite property_RO
701
- return f
702
-
703
- @property_RO
704
- def _formy(self):
705
- '''(INTERNAL) Get module C{formy}, I{once}.
706
- '''
707
- _HeightIDW._formy = f = _MODS.formy # overwrite property_RO
708
- return f
709
-
710
697
  def height(self, lats, lons, **wrap):
711
698
  '''Interpolate the height for one or several lat-/longitudes.
712
699
 
@@ -735,7 +722,7 @@ class _HeightIDW(_HeightBase):
735
722
  '''
736
723
  ds, hs = self._distances(x, y), self._heights
737
724
  try:
738
- return self._fmath.fidw(hs, ds, beta=self.beta)
725
+ return _MODS.fmath.fidw(hs, ds, beta=self.beta)
739
726
  except (TypeError, ValueError) as e:
740
727
  raise HeightError(x=x, y=y, cause=e)
741
728
 
@@ -798,7 +785,7 @@ class HeightIDWcosineAndoyerLambert(_HeightIDW):
798
785
  @see: L{Here<_HeightIDW.__init__>} for further details.
799
786
  '''
800
787
  _HeightIDW.__init__(self, knots, beta=beta, **name__datum_wrap)
801
- self._func = self._formy.cosineAndoyerLambert
788
+ self._func = _formy.cosineAndoyerLambert
802
789
 
803
790
  if _FOR_DOCS:
804
791
  __call__ = _HeightIDW.__call__
@@ -821,7 +808,7 @@ class HeightIDWcosineForsytheAndoyerLambert(_HeightIDW):
821
808
  @see: L{Here<_HeightIDW.__init__>} for further details.
822
809
  '''
823
810
  _HeightIDW.__init__(self, knots, beta=beta, **name__datum_wrap)
824
- self._func = self._formy.cosineForsytheAndoyerLambert
811
+ self._func = _formy.cosineForsytheAndoyerLambert
825
812
 
826
813
  if _FOR_DOCS:
827
814
  __call__ = _HeightIDW.__call__
@@ -845,7 +832,7 @@ class HeightIDWcosineLaw(_HeightIDW):
845
832
  @see: L{Here<_HeightIDW.__init__>} for further details.
846
833
  '''
847
834
  _HeightIDW.__init__(self, knots, beta=beta, **name__radius_wrap)
848
- self._func = self._formy.cosineLaw
835
+ self._func = _formy.cosineLaw
849
836
 
850
837
  if _FOR_DOCS:
851
838
  __call__ = _HeightIDW.__call__
@@ -898,14 +885,14 @@ class HeightIDWequirectangular(_HeightIDW):
898
885
  '''Height interpolator using U{Inverse Distance Weighting
899
886
  <https://WikiPedia.org/wiki/Inverse_distance_weighting>} (IDW) and
900
887
  the I{angular} distance in C{radians squared} like function
901
- L{pygeodesy.equirectangular_}.
888
+ L{pygeodesy.equirectangular4}.
902
889
  '''
903
890
  def __init__(self, knots, beta=2, **name__adjust_limit_wrap): # XXX beta=1
904
891
  '''New L{HeightIDWequirectangular} interpolator.
905
892
 
906
893
  @kwarg name__adjust_limit_wrap: Optional C{B{name}=NN} for this
907
894
  height interpolator (C{str}) and keyword arguments
908
- for function L{pygeodesy.equirectangular_}.
895
+ for function L{pygeodesy.equirectangular4}.
909
896
 
910
897
  @see: L{Here<_HeightIDW.__init__>} for further details.
911
898
  '''
@@ -914,7 +901,7 @@ class HeightIDWequirectangular(_HeightIDW):
914
901
  def _distances(self, x, y):
915
902
  '''(INTERNAL) Yield distances to C{(x, y)}.
916
903
  '''
917
- _f, kwds = self._formy.equirectangular_, self._kwds
904
+ _f, kwds = _formy.equirectangular4, self._kwds
918
905
  try:
919
906
  for i, k in enumerate(self._knots):
920
907
  yield _f(y, x, k.lat, k.lon, **kwds).distance2
@@ -942,7 +929,7 @@ class HeightIDWeuclidean(_HeightIDW):
942
929
  @see: L{Here<_HeightIDW.__init__>} for further details.
943
930
  '''
944
931
  _HeightIDW.__init__(self, knots, beta=beta, **name__adjust_radius_wrap)
945
- self._func = self._formy.euclidean
932
+ self._func = _formy.euclidean
946
933
 
947
934
  if _FOR_DOCS:
948
935
  __call__ = _HeightIDW.__call__
@@ -995,7 +982,7 @@ class HeightIDWflatLocal(_HeightIDW):
995
982
  '''
996
983
  _HeightIDW.__init__(self, knots, beta=beta,
997
984
  **name__datum_hypot_scaled_wrap)
998
- self._func = self._formy.flatLocal
985
+ self._func = _formy.flatLocal
999
986
 
1000
987
  if _FOR_DOCS:
1001
988
  __call__ = _HeightIDW.__call__
@@ -1018,7 +1005,7 @@ class HeightIDWflatPolar(_HeightIDW):
1018
1005
  @see: L{Here<_HeightIDW.__init__>} for further details.
1019
1006
  '''
1020
1007
  _HeightIDW.__init__(self, knots, beta=beta, **name__radius_wrap)
1021
- self._func = self._formy.flatPolar
1008
+ self._func = _formy.flatPolar
1022
1009
 
1023
1010
  if _FOR_DOCS:
1024
1011
  __call__ = _HeightIDW.__call__
@@ -1042,7 +1029,7 @@ class HeightIDWhaversine(_HeightIDW):
1042
1029
  @see: L{Here<_HeightIDW.__init__>} for further details.
1043
1030
  '''
1044
1031
  _HeightIDW.__init__(self, knots, beta=beta, **name__radius_wrap)
1045
- self._func = self._formy.haversine
1032
+ self._func = _formy.haversine
1046
1033
 
1047
1034
  if _FOR_DOCS:
1048
1035
  __call__ = _HeightIDW.__call__
@@ -1106,7 +1093,7 @@ class HeightIDWthomas(_HeightIDW):
1106
1093
  @see: L{Here<_HeightIDW.__init__>} for further details.
1107
1094
  '''
1108
1095
  _HeightIDW.__init__(self, knots, beta=beta, **name__datum_wrap)
1109
- self._func = self._formy.thomas
1096
+ self._func = _formy.thomas
1110
1097
 
1111
1098
  if _FOR_DOCS:
1112
1099
  __call__ = _HeightIDW.__call__
@@ -1130,7 +1117,7 @@ class HeightIDWvincentys(_HeightIDW):
1130
1117
  @see: L{Here<_HeightIDW.__init__>} for further details.
1131
1118
  '''
1132
1119
  _HeightIDW.__init__(self, knots, beta=beta, **name__radius_wrap)
1133
- self._func = self._formy.vincentys
1120
+ self._func = _formy.vincentys
1134
1121
 
1135
1122
  if _FOR_DOCS:
1136
1123
  __call__ = _HeightIDW.__call__
pygeodesy/internals.py CHANGED
@@ -32,7 +32,7 @@ def _dunder_nameof(inst, *dflt):
32
32
 
33
33
 
34
34
  def _Property_RO(method):
35
- '''(INTERNAL) Can't Irecursively import L{props.property_RO}.
35
+ '''(INTERNAL) Can't I{recursively} import L{props.property_RO}.
36
36
  '''
37
37
  name = _dunder_nameof(method)
38
38
 
@@ -53,7 +53,7 @@ def _Property_RO(method):
53
53
  return property(_get, _set, _del)
54
54
 
55
55
 
56
- class _ALL_MODS_Base(object):
56
+ class _MODS_Base(object):
57
57
  '''(INTERNAL) Base-class for C{lazily._ALL_MODS}.
58
58
  '''
59
59
  def __delattr__(self, attr): # PYCHOK no cover
@@ -207,7 +207,7 @@ class _ALL_MODS_Base(object):
207
207
  from pygeodesy import streprs # DON'T _lazy_import2
208
208
  return streprs
209
209
 
210
- _MODS = _ALL_MODS_Base() # PYCHOK overwritten by .lazily
210
+ _MODS = _MODS_Base() # PYCHOK overwritten by .lazily
211
211
 
212
212
 
213
213
  def _caller3(up): # in .lazily, .named
@@ -217,8 +217,9 @@ def _caller3(up): # in .lazily, .named
217
217
  # sys._getframe(1) ... 'importlib._bootstrap' line 1032,
218
218
  # may throw a ValueError('call stack not deep enough')
219
219
  f = _sys._getframe(up + 1)
220
- return (f.f_code.co_name, # caller name
221
- _os_path.basename(f.f_code.co_filename), # file name
220
+ c = f.f_code
221
+ return (c.co_name, # caller name
222
+ _os_path.basename(c.co_filename), # file name .py
222
223
  f.f_lineno) # line number
223
224
 
224
225
 
@@ -359,7 +360,7 @@ def _plural(noun, n):
359
360
  return NN(noun, _s_) if n > 1 else (noun if n else NN)
360
361
 
361
362
 
362
- def print_(*args, **nl_nt_prec_prefix__end_file_flush_sep_kwds): # PYCHOK no cover
363
+ def print_(*args, **nl_nt_prec_prefix__end_file_flush_sep__kwds): # PYCHOK no cover
363
364
  '''Python 3+ C{print}-like formatting and printing.
364
365
 
365
366
  @arg args: Values to be converted to C{str} and joined by B{C{sep}},
@@ -367,16 +368,16 @@ def print_(*args, **nl_nt_prec_prefix__end_file_flush_sep_kwds): # PYCHOK no co
367
368
 
368
369
  @see: Function L{printf} for further details.
369
370
  '''
370
- return printf(NN, *args, **nl_nt_prec_prefix__end_file_flush_sep_kwds)
371
+ return printf(NN, *args, **nl_nt_prec_prefix__end_file_flush_sep__kwds)
371
372
 
372
373
 
373
- def printf(fmt, *args, **nl_nt_prec_prefix__end_file_flush_sep_kwds):
374
+ def printf(fmt, *args, **nl_nt_prec_prefix__end_file_flush_sep__kwds):
374
375
  '''C{Printf-style} and Python 3+ C{print}-like formatting and printing.
375
376
 
376
377
  @arg fmt: U{Printf-style<https://Docs.Python.org/3/library/stdtypes.html#
377
378
  printf-style-string-formatting>} format specification (C{str}).
378
379
  @arg args: Arguments to be formatted (any C{type}, all positional).
379
- @kwarg nl_nt_prec_prefix__end_file_flush_sep_kwds: Optional keyword arguments
380
+ @kwarg nl_nt_prec_prefix__end_file_flush_sep__kwds: Optional keyword arguments
380
381
  C{B{nl}=0} for the number of leading blank lines (C{int}), C{B{nt}=0}
381
382
  the number of trailing blank lines (C{int}), C{B{prefix}=NN} to be
382
383
  inserted before the formatted text (C{str}) and Python 3+ C{print}
@@ -387,7 +388,7 @@ def printf(fmt, *args, **nl_nt_prec_prefix__end_file_flush_sep_kwds):
387
388
 
388
389
  @return: Number of bytes written.
389
390
  '''
390
- b, e, f, fl, p, s, kwds = _print7(**nl_nt_prec_prefix__end_file_flush_sep_kwds)
391
+ b, e, f, fl, p, s, kwds = _print7(**nl_nt_prec_prefix__end_file_flush_sep__kwds)
391
392
  try:
392
393
  if args:
393
394
  t = (fmt % args) if fmt else s.join(map(str, args))
@@ -399,7 +400,7 @@ def printf(fmt, *args, **nl_nt_prec_prefix__end_file_flush_sep_kwds):
399
400
  except Exception as x:
400
401
  _E, s = _MODS.errors._xError2(x)
401
402
  unstr = _MODS.streprs.unstr
402
- t = unstr(printf, fmt, *args, **nl_nt_prec_prefix__end_file_flush_sep_kwds)
403
+ t = unstr(printf, fmt, *args, **nl_nt_prec_prefix__end_file_flush_sep__kwds)
403
404
  raise _E(s, txt=t, cause=x)
404
405
  try:
405
406
  n = f.write(NN(b, t, e))
@@ -543,15 +544,15 @@ def _version_ints(vs):
543
544
 
544
545
 
545
546
  __all__ = tuple(map(_dunder_nameof, (machine, print_, printf)))
546
- __version__ = '24.05.21'
547
+ __version__ = '24.06.05'
547
548
 
548
549
  if _dunder_ismain(__name__): # PYCHOK no cover
549
550
 
550
551
  from pygeodesy import _isfrozen, isLazy, version as vs
551
552
 
552
553
  print_(_pygeodesy_, vs, *(_Pythonarchine() + _osversion2()
553
- + ['isfrozen', _isfrozen,
554
- 'isLazy', isLazy]))
554
+ + ['_isfrozen', _isfrozen,
555
+ 'isLazy', isLazy]))
555
556
 
556
557
  # **) MIT License
557
558
  #
pygeodesy/interns.py CHANGED
@@ -10,8 +10,8 @@ except NameError: # Python 3+
10
10
  _intern = _sys.intern
11
11
 
12
12
  _COMMASPACE_ = ', ' # overriden below
13
- _sub_packages = 'auxilats', 'deprecated', 'geodesicx', 'rhumb' # PYCHOK in .lazily,
14
- # ... make._dist, MANIFEST, setup.setup, test.bases, test.testModules
13
+ _SUB_PACKAGES = 'auxilats', 'deprecated', 'geodesicx', 'rhumb' # PYCHOK in ...
14
+ # ... .lazily, make._dist, MANIFEST, setup.setup, test.bases, .testModules
15
15
 
16
16
 
17
17
  class _Dash(str):
@@ -145,7 +145,6 @@ _and_ = 'and' # PYCHOK OK
145
145
  # _AND_ = _AMPERSAND_ # PYCHOK OK
146
146
  _angle_ = 'angle' # PYCHOK OK
147
147
  _antipodal_ = 'antipodal' # PYCHOK OK
148
- _areaOf_ = 'areaOf' # PYCHOK OK
149
148
  _arg_ = 'arg' # PYCHOK OK
150
149
  # _ASTERISK_ = _STAR_ # PYCHOK OK
151
150
  _AT_ = Str_('@') # PYCHOK OK
@@ -214,7 +213,6 @@ _ELLIPSIS4_ = Str_('....') # PYCHOK OK
214
213
  # _ELLIPSISPACED_ = Str_(' ... ') # PYCHOK <https://www.ThePunctuationGuide.com/ellipses.html>
215
214
  _ellipsoid_ = 'ellipsoid' # PYCHOK OK
216
215
  _ellipsoidal_ = 'ellipsoidal' # PYCHOK OK
217
- _enabled_ = 'enabled' # PYCHOK OK
218
216
  _encode_ = 'encode' # PYCHOK OK
219
217
  _end_ = 'end' # PYCHOK OK
220
218
  _epoch_ = 'epoch' # PYCHOK OK
@@ -254,8 +252,6 @@ _intersection_ = 'intersection' # PYCHOK OK
254
252
  _Intl1924_ = 'Intl1924' # PYCHOK OK
255
253
  _invalid_ = 'invalid' # PYCHOK OK
256
254
  _invokation_ = 'invokation' # PYCHOK OK
257
- _isclockwise_ = 'isclockwise' # PYCHOK OK
258
- _ispolar_ = 'ispolar' # PYCHOK OK
259
255
  _j_ = 'j' # PYCHOK OK
260
256
  _k0_ = 'k0' # PYCHOK OK
261
257
  _keyword_ = 'keyword' # PYCHOK OK
@@ -317,7 +313,6 @@ _NLHASH_ = Str_(_NL_ + '# ') # PYCHOK OK
317
313
  _NN_ = 'NN' # PYCHOK OK
318
314
  _no_ = _Prefix('no') # PYCHOK OK
319
315
  _northing_ = 'northing' # PYCHOK OK
320
- _NorthPole_ = 'NorthPole' # PYCHOK OK
321
316
  _not_ = _Prefix('not') # PYCHOK OK
322
317
  _NOTEQUAL_ = _BANG_ + _EQUAL_ # PYCHOK OK
323
318
  _not_finite_ = 'not finite' # PYCHOK _not_(_finite_), _infinite_
@@ -385,7 +380,6 @@ _SLASH_ = Str_('/') # PYCHOK OK
385
380
  _small_ = 'small' # PYCHOK OK
386
381
  _Sphere_ = 'Sphere' # PYCHOK OK
387
382
  _spherical_ = 'spherical' # PYCHOK OK
388
- _SouthPole_ = 'SouthPole' # PYCHOK OK
389
383
  _SPACE_ = Str_(' ') # PYCHOK OK
390
384
  _specified_ = 'specified' # PYCHOK OK
391
385
  _STAR_ = Str_('*') # PYCHOK OK
@@ -447,7 +441,7 @@ _LR_PAIRS = {_LANGLE_: _RANGLE_,
447
441
 
448
442
  __all__ = (_NN_, # NOT MISSING!
449
443
  Str_.__name__) # classes
450
- __version__ = '24.05.21'
444
+ __version__ = '24.06.05'
451
445
 
452
446
  if __name__ == '__main__':
453
447
 
pygeodesy/iters.py CHANGED
@@ -26,7 +26,7 @@ from pygeodesy.units import Int, Radius
26
26
  from pygeodesy.utily import degrees2m, _Wrap, _1_0
27
27
 
28
28
  __all__ = _ALL_LAZY.iters
29
- __version__ = '24.05.23'
29
+ __version__ = '24.06.09'
30
30
 
31
31
  _items_ = 'items'
32
32
  _iterNumpy2len = 1 # adjustable for testing purposes
@@ -83,7 +83,7 @@ class _BaseIter(_Named):
83
83
  try:
84
84
  self._loop = tuple(self.next for _ in range(loop))
85
85
  if self.loop != loop:
86
- raise RuntimeError # force Error
86
+ raise RuntimeError() # force Error
87
87
  except (RuntimeError, StopIteration):
88
88
  raise self._Error(self.name, self.loop, txt=_too_(_few_))
89
89
 
pygeodesy/karney.py CHANGED
@@ -143,12 +143,13 @@ from pygeodesy.basics import _copysign, int1s, isint, itemsorted, neg, unsigned0
143
143
  _xgeographiclib, _zip, _version_info
144
144
  from pygeodesy.constants import NAN, _isfinite as _math_isfinite, _0_0, \
145
145
  _1_16th, _1_0, _2_0, _180_0, _N_180_0, _360_0
146
- from pygeodesy.errors import GeodesicError, _ValueError, _xkwds, _xkwds_get
146
+ from pygeodesy.errors import GeodesicError, _ValueError, _xkwds, _xkwds_get1
147
147
  from pygeodesy.fmath import cbrt, fremainder, norm2
148
148
  # from pygeodesy.internals import _version_info # from .basics
149
- from pygeodesy.interns import NN, _2_, _a12_, _area_, _azi2_, _azi12_, _composite_, \
150
- _lat1_, _lat2_, _lon1_, _lon2_, _m12_, _M12_, _M21_, \
151
- _number_, _s12_, _S12_, _UNDER_, _BAR_ # PYCHOK used!
149
+ from pygeodesy.interns import _2_, _a12_, _area_, _azi2_, _azi12_, _composite_, \
150
+ _lat1_, _lat2_, _lon1_, _lon2_, _m12_, _M12_, \
151
+ _M21_, _number_, _s12_, _S12_, _UNDER_, \
152
+ _BAR_, NN # PYCHOK used!
152
153
  from pygeodesy.lazily import _ALL_DOCS, _ALL_LAZY, _ALL_MODS as _MODS, _getenv
153
154
  from pygeodesy.named import ADict, _NamedBase, _NamedTuple, notImplemented, _Pass
154
155
  from pygeodesy.props import deprecated_method, Property_RO
@@ -159,7 +160,7 @@ from pygeodesy.utily import atan2d, sincos2d, tand, _unrollon, fabs
159
160
  # from math import fabs # from .utily
160
161
 
161
162
  __all__ = _ALL_LAZY.karney
162
- __version__ = '24.05.20'
163
+ __version__ = '24.05.31'
163
164
 
164
165
  _K_2_0 = _getenv('PYGEODESY_GEOGRAPHICLIB', _2_) == _2_
165
166
  _perimeter_ = 'perimeter'
@@ -171,7 +172,7 @@ class _GTuple(_NamedTuple): # in .testNamedTuples
171
172
  def toGDict(self, **updates): # NO name=NN
172
173
  '''Convert this C{*Tuple} to a L{GDict}.
173
174
 
174
- @kwarg updates: Optional items to apply (C{nam=value} pairs)
175
+ @kwarg updates: Optional items to apply (C{name=value} pairs)
175
176
  '''
176
177
  r = GDict(_zip(self._Names_, self)) # strict=True
177
178
  if updates:
@@ -845,7 +846,7 @@ def _sum2_(s, t, *vs, **x):
845
846
 
846
847
  @note: NOT "error-free", see C{pygeodesy.test/testKarney.py}.
847
848
  '''
848
- x = _xkwds_get(x, x=_1_0)
849
+ x = _xkwds_get1(x, x=_1_0)
849
850
  p = x != _1_0
850
851
 
851
852
  _s2, _u0 = _sum2, unsigned0