pygeodesy 25.5.5__py2.py3-none-any.whl → 25.5.25__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 (81) hide show
  1. pygeodesy/__init__.py +186 -186
  2. pygeodesy/__main__.py +2 -2
  3. pygeodesy/albers.py +4 -4
  4. pygeodesy/auxilats/_CX_Rs.py +3 -3
  5. pygeodesy/auxilats/auxAngle.py +2 -2
  6. pygeodesy/auxilats/auxDLat.py +2 -2
  7. pygeodesy/auxilats/auxDST.py +2 -2
  8. pygeodesy/auxilats/auxLat.py +2 -2
  9. pygeodesy/auxilats/auxily.py +2 -2
  10. pygeodesy/azimuthal.py +2 -2
  11. pygeodesy/booleans.py +2 -2
  12. pygeodesy/cartesianBase.py +2 -2
  13. pygeodesy/clipy.py +2 -2
  14. pygeodesy/constants.py +2 -2
  15. pygeodesy/datums.py +2 -2
  16. pygeodesy/deprecated/__init__.py +8 -8
  17. pygeodesy/deprecated/bases.py +2 -2
  18. pygeodesy/deprecated/rhumbBase.py +2 -2
  19. pygeodesy/deprecated/rhumbaux.py +2 -2
  20. pygeodesy/deprecated/rhumbsolve.py +2 -2
  21. pygeodesy/deprecated/rhumbx.py +2 -2
  22. pygeodesy/ecef.py +3 -4
  23. pygeodesy/ellipsoidalBase.py +2 -2
  24. pygeodesy/ellipsoidalBaseDI.py +7 -6
  25. pygeodesy/ellipsoidalExact.py +3 -3
  26. pygeodesy/ellipsoidalNvector.py +4 -4
  27. pygeodesy/ellipsoidalVincenty.py +15 -14
  28. pygeodesy/ellipsoids.py +4 -4
  29. pygeodesy/elliptic.py +2 -2
  30. pygeodesy/errors.py +1 -1
  31. pygeodesy/etm.py +2 -2
  32. pygeodesy/fmath.py +9 -9
  33. pygeodesy/formy.py +2 -2
  34. pygeodesy/frechet.py +5 -5
  35. pygeodesy/fstats.py +2 -2
  36. pygeodesy/fsums.py +37 -28
  37. pygeodesy/gars.py +2 -3
  38. pygeodesy/geodesici.py +4 -4
  39. pygeodesy/geodesicx/__init__.py +3 -3
  40. pygeodesy/geodesicx/gx.py +2 -2
  41. pygeodesy/geodesicx/gxarea.py +2 -2
  42. pygeodesy/geodesicx/gxline.py +2 -2
  43. pygeodesy/geoids.py +5 -5
  44. pygeodesy/hausdorff.py +4 -4
  45. pygeodesy/heights.py +2 -2
  46. pygeodesy/iters.py +1 -1
  47. pygeodesy/karney.py +2 -2
  48. pygeodesy/ktm.py +2 -2
  49. pygeodesy/latlonBase.py +3 -4
  50. pygeodesy/lazily.py +1 -1
  51. pygeodesy/lcc.py +2 -2
  52. pygeodesy/ltp.py +5 -5
  53. pygeodesy/mgrs.py +3 -3
  54. pygeodesy/namedTuples.py +3 -3
  55. pygeodesy/nvectorBase.py +2 -2
  56. pygeodesy/osgr.py +2 -2
  57. pygeodesy/points.py +2 -3
  58. pygeodesy/props.py +16 -16
  59. pygeodesy/resections.py +30 -24
  60. pygeodesy/rhumb/aux_.py +2 -2
  61. pygeodesy/rhumb/bases.py +3 -3
  62. pygeodesy/rhumb/ekx.py +3 -4
  63. pygeodesy/rhumb/solve.py +2 -2
  64. pygeodesy/simplify.py +2 -2
  65. pygeodesy/solveBase.py +2 -2
  66. pygeodesy/sphericalBase.py +6 -6
  67. pygeodesy/sphericalNvector.py +2 -2
  68. pygeodesy/sphericalTrigonometry.py +6 -5
  69. pygeodesy/trf.py +4 -4
  70. pygeodesy/triaxials.py +2 -2
  71. pygeodesy/units.py +7 -8
  72. pygeodesy/utily.py +2 -2
  73. pygeodesy/utmupsBase.py +2 -2
  74. pygeodesy/vector2d.py +13 -7
  75. pygeodesy/vector3d.py +3 -3
  76. pygeodesy/webmercator.py +2 -2
  77. {pygeodesy-25.5.5.dist-info → pygeodesy-25.5.25.dist-info}/METADATA +16 -16
  78. pygeodesy-25.5.25.dist-info/RECORD +119 -0
  79. pygeodesy-25.5.5.dist-info/RECORD +0 -119
  80. {pygeodesy-25.5.5.dist-info → pygeodesy-25.5.25.dist-info}/WHEEL +0 -0
  81. {pygeodesy-25.5.5.dist-info → pygeodesy-25.5.25.dist-info}/top_level.txt +0 -0
pygeodesy/frechet.py CHANGED
@@ -90,9 +90,9 @@ from pygeodesy.interns import _DMAIN_, _DOT_, _n_, NN, _units_
90
90
  # from pygeodesy.iters import points2 as _points2 # from .points
91
91
  from pygeodesy.lazily import _ALL_LAZY, _ALL_MODS as _MODS, _FOR_DOCS
92
92
  from pygeodesy.named import _name2__, _Named, _NamedTuple, _Pass
93
- # from pygeodesy.namedTuples import PhiLam2Tuple # from .points
94
- from pygeodesy.points import _distanceTo, _fractional, PhiLam2Tuple, \
95
- points2 as _points2, radians
93
+ from pygeodesy.namedTuples import PhiLam2Tuple
94
+ from pygeodesy.points import _distanceTo, _fractional, \
95
+ points2 as _points2, radians
96
96
  from pygeodesy.props import Property, property_doc_, property_RO
97
97
  from pygeodesy.units import FIx, Float, Number_
98
98
  from pygeodesy import unitsBase as _unitsBase # _Str_..., _xUnit, _xUnits
@@ -101,7 +101,7 @@ from collections import defaultdict as _defaultdict
101
101
  # from math import radians # from .points
102
102
 
103
103
  __all__ = _ALL_LAZY.frechet
104
- __version__ = '25.04.21'
104
+ __version__ = '25.05.21'
105
105
 
106
106
  _formy = _MODS.into(formy=__name__)
107
107
 
@@ -129,7 +129,7 @@ class Frechet(_Named):
129
129
  be overloaded.
130
130
  '''
131
131
  _datum = _WGS84
132
- _func = None # formy function/property
132
+ # _func = None # formy function/property
133
133
  _f1 = 1
134
134
  _kwds = {} # func_ options
135
135
  _n1 = 0
pygeodesy/fstats.py CHANGED
@@ -6,7 +6,7 @@ L{pygeodesy.Fsum}, precision floating point summation and accurate
6
6
  multiplication.
7
7
  '''
8
8
  # make sure int/int division yields float quotient, see .basics
9
- from __future__ import division as _; del _ # PYCHOK semicolon
9
+ from __future__ import division as _; del _ # noqa: E702 ;
10
10
 
11
11
  from pygeodesy.basics import isscalar, isodd, _xinstanceof, \
12
12
  _xiterable, _xsubclassof, _zip, typename
@@ -24,7 +24,7 @@ from pygeodesy.named import _name__, _Named, _NotImplemented, \
24
24
  # from pygeodesy.streprs import Fmt # from .fmath
25
25
 
26
26
  __all__ = _ALL_LAZY.fstats
27
- __version__ = '25.04.14'
27
+ __version__ = '25.05.12'
28
28
 
29
29
 
30
30
  def _sampled(n, sample):
pygeodesy/fsums.py CHANGED
@@ -37,7 +37,7 @@ respectively C{ValueError} exceptions. However, in that case I{non-finite}
37
37
  results may differ from Python's C{math.fsum} results.
38
38
  '''
39
39
  # make sure int/int division yields float quotient, see .basics
40
- from __future__ import division as _; del _ # PYCHOK semicolon
40
+ from __future__ import division as _; del _ # noqa: E702 ;
41
41
 
42
42
  from pygeodesy.basics import _gcd, isbool, iscomplex, isint, isscalar, \
43
43
  _signOf, itemsorted, signOf, _xiterable
@@ -48,7 +48,7 @@ from pygeodesy.errors import _AssertionError, _OverflowError, _TypeError, \
48
48
  _ValueError, _xError, _xError2, _xkwds, \
49
49
  _xkwds_get, _xkwds_get1, _xkwds_not, \
50
50
  _xkwds_pop, _xsError
51
- from pygeodesy.internals import _enquote, _envPYGEODESY, _passarg, typename
51
+ from pygeodesy.internals import _enquote, _envPYGEODESY, _passarg, typename # _sizeof
52
52
  from pygeodesy.interns import NN, _arg_, _COMMASPACE_, _DMAIN_, _DOT_, _from_, \
53
53
  _not_finite_, _SPACE_, _std_, _UNDER_
54
54
  # from pygeodesy.lazily import _ALL_LAZY, _ALL_MODS as _MODS # from .named
@@ -64,7 +64,7 @@ from math import fabs, isinf, isnan, \
64
64
  ceil as _ceil, floor as _floor # PYCHOK used! .ltp
65
65
 
66
66
  __all__ = _ALL_LAZY.fsums
67
- __version__ = '25.04.26'
67
+ __version__ = '25.05.12'
68
68
 
69
69
  from pygeodesy.interns import (
70
70
  _PLUS_ as _add_op_, # in .auxilats.auxAngle
@@ -230,13 +230,13 @@ def f2product(two=None):
230
230
  def _Fsumf_(*xs): # in .auxLat, ...
231
231
  '''(INTERNAL) An C{Fsum(xs)}, all C{scalar}, an L{Fsum} or L{Fsum2Tuple}.
232
232
  '''
233
- return Fsum()._facc_scalarf(xs, up=False)
233
+ return Fsum()._facc_xsum(xs, up=False)
234
234
 
235
235
 
236
236
  def _Fsum1f_(*xs): # in .albers
237
237
  '''(INTERNAL) An C{Fsum(xs)}, all C{scalar}, an L{Fsum} or L{Fsum2Tuple}, 1-primed.
238
238
  '''
239
- return Fsum()._facc_scalarf(_1primed(xs), origin=-1, up=False)
239
+ return Fsum()._facc_xsum(_1primed(xs), origin=-1, up=False)
240
240
 
241
241
 
242
242
  def _halfeven(s, r, p):
@@ -585,7 +585,7 @@ class Fsum(_Named): # sync __methods__ with .vector3dBase.Vector3dBase, .fstats
585
585
  with quotient C{div} an C{int} in Python 3+ or C{float}
586
586
  in Python 2- and remainder C{mod} an L{Fsum} instance.
587
587
 
588
- @arg other: An L{Fsum}, L{Fsum2Tuple} or C{scalar} modulus.
588
+ @arg other: Modulus (C{scalar}, an L{Fsum} or L{Fsum2Tuple}).
589
589
  @kwarg raiser_RESIDUAL: Use C{B{raiser}=False} to ignore
590
590
  L{ResidualError}s (C{bool}) and C{B{RESIDUAL}=scalar}
591
591
  to override the current L{RESIDUAL<Fsum.RESIDUAL>}.
@@ -623,7 +623,7 @@ class Fsum(_Named): # sync __methods__ with .vector3dBase.Vector3dBase, .fstats
623
623
  def __floordiv__(self, other):
624
624
  '''Return C{B{self} // B{other}} as an L{Fsum}.
625
625
 
626
- @arg other: An L{Fsum}, L{Fsum2Tuple} or C{scalar} divisor.
626
+ @arg other: Divisor (C{scalar}, an L{Fsum} or L{Fsum2Tuple}).
627
627
 
628
628
  @return: The C{floor} quotient (L{Fsum}).
629
629
 
@@ -632,6 +632,10 @@ class Fsum(_Named): # sync __methods__ with .vector3dBase.Vector3dBase, .fstats
632
632
  f = self._copyd(self.__floordiv__)
633
633
  return f._floordiv(other, _floordiv_op_)
634
634
 
635
+ # def __format__(self, *other): # PYCHOK no cover
636
+ # '''Not implemented.'''
637
+ # return _NotImplemented(self, *other)
638
+
635
639
  def __ge__(self, other):
636
640
  '''Return C{(B{self} >= B{other})}, see C{__eq__}.
637
641
  '''
@@ -672,7 +676,7 @@ class Fsum(_Named): # sync __methods__ with .vector3dBase.Vector3dBase, .fstats
672
676
  def __ifloordiv__(self, other):
673
677
  '''Apply C{B{self} //= B{other}} to this instance.
674
678
 
675
- @arg other: An L{Fsum}, L{Fsum2Tuple} or C{scalar} divisor.
679
+ @arg other: Divisor (C{scalar}, an L{Fsum} or L{Fsum2Tuple}).
676
680
 
677
681
  @return: This instance, updated (L{Fsum}).
678
682
 
@@ -696,7 +700,7 @@ class Fsum(_Named): # sync __methods__ with .vector3dBase.Vector3dBase, .fstats
696
700
  def __imod__(self, other):
697
701
  '''Apply C{B{self} %= B{other}} to this instance.
698
702
 
699
- @arg other: An L{Fsum}, L{Fsum2Tuple} or C{scalar} modulus.
703
+ @arg other: Modulus (C{scalar}, an L{Fsum} or L{Fsum2Tuple}).
700
704
 
701
705
  @return: This instance, updated (L{Fsum}).
702
706
 
@@ -707,7 +711,7 @@ class Fsum(_Named): # sync __methods__ with .vector3dBase.Vector3dBase, .fstats
707
711
  def __imul__(self, other):
708
712
  '''Apply C{B{self} *= B{other}} to this instance.
709
713
 
710
- @arg other: An L{Fsum}, L{Fsum2Tuple} or C{scalar} factor.
714
+ @arg other: Factor (C{scalar}, an L{Fsum} or L{Fsum2Tuple}).
711
715
 
712
716
  @return: This instance, updated (L{Fsum}).
713
717
 
@@ -736,7 +740,7 @@ class Fsum(_Named): # sync __methods__ with .vector3dBase.Vector3dBase, .fstats
736
740
  def __ipow__(self, other, *mod, **raiser_RESIDUAL): # PYCHOK 2 vs 3 args
737
741
  '''Apply C{B{self} **= B{other}} to this instance.
738
742
 
739
- @arg other: The exponent (C{scalar}, an L{Fsum} or L{Fsum2Tuple}).
743
+ @arg other: Exponent (C{scalar}, an L{Fsum} or L{Fsum2Tuple}).
740
744
  @arg mod: Optional modulus (C{int} or C{None}) for the 3-argument
741
745
  C{pow(B{self}, B{other}, B{mod})} version.
742
746
  @kwarg raiser_RESIDUAL: Use C{B{raiser}=False} to ignore
@@ -798,7 +802,7 @@ class Fsum(_Named): # sync __methods__ with .vector3dBase.Vector3dBase, .fstats
798
802
  def __itruediv__(self, other, **raiser_RESIDUAL):
799
803
  '''Apply C{B{self} /= B{other}} to this instance.
800
804
 
801
- @arg other: An L{Fsum}, L{Fsum2Tuple} or C{scalar} divisor.
805
+ @arg other: Divisor (C{scalar}, an L{Fsum} or L{Fsum2Tuple}).
802
806
  @kwarg raiser_RESIDUAL: Use C{B{raiser}=False} to ignore
803
807
  L{ResidualError}s (C{bool}) and C{B{RESIDUAL}=scalar}
804
808
  to override the current L{RESIDUAL<Fsum.RESIDUAL>}.
@@ -917,7 +921,7 @@ class Fsum(_Named): # sync __methods__ with .vector3dBase.Vector3dBase, .fstats
917
921
  f = self._rcopyd(other, self.__rfloordiv__)
918
922
  return f._floordiv(self, _floordiv_op_)
919
923
 
920
- def __rmatmul__(self, other): # PYCHOK no coveS
924
+ def __rmatmul__(self, other): # PYCHOK no cover
921
925
  '''Not implemented.'''
922
926
  return _NotImplemented(self, other)
923
927
 
@@ -970,6 +974,11 @@ class Fsum(_Named): # sync __methods__ with .vector3dBase.Vector3dBase, .fstats
970
974
  f = self._rcopyd(other, self.__rtruediv__)
971
975
  return f._ftruediv(self, _truediv_op_, **raiser_RESIDUAL)
972
976
 
977
+ # def __sizeof__(self):
978
+ # '''Return the size of this instance (C{int} bytes}).
979
+ # '''
980
+ # return _sizeof(self._ps) + _sizeof(self._n)
981
+
973
982
  def __str__(self):
974
983
  '''Return the default C{str(self)}.
975
984
  '''
@@ -990,7 +999,7 @@ class Fsum(_Named): # sync __methods__ with .vector3dBase.Vector3dBase, .fstats
990
999
  def __truediv__(self, other, **raiser_RESIDUAL):
991
1000
  '''Return C{B{self} / B{other}} as an L{Fsum}.
992
1001
 
993
- @arg other: An L{Fsum}, L{Fsum2Tuple} or C{scalar} divisor.
1002
+ @arg other: Divisor (C{scalar}, an L{Fsum} or L{Fsum2Tuple}).
994
1003
  @kwarg raiser_RESIDUAL: Use C{B{raiser}=False} to ignore
995
1004
  L{ResidualError}s (C{bool}) and C{B{RESIDUAL}=scalar}
996
1005
  to override the current L{RESIDUAL<Fsum.RESIDUAL>}.
@@ -1221,14 +1230,6 @@ class Fsum(_Named): # sync __methods__ with .vector3dBase.Vector3dBase, .fstats
1221
1230
  '''
1222
1231
  return self._facc_scalar(xs, **up)
1223
1232
 
1224
- def _facc_scalarf(self, xs, up=True, **origin_which):
1225
- '''(INTERNAL) Accumulate all C{xs}, each C{scalar}, an L{Fsum} or
1226
- L{Fsum2Tuple}, like function C{_xsum}.
1227
- '''
1228
- fs = _xs(xs, **_x_isfine(self.nonfinitesOK, _Cdot=type(self),
1229
- **origin_which)) # PYCHOK yield
1230
- return self._facc_scalar(fs, up=up)
1231
-
1232
1233
  # def _facc_up(self, up=True):
1233
1234
  # '''(INTERNAL) Update the C{partials}, by removing
1234
1235
  # and re-accumulating the final C{partial}.
@@ -1243,6 +1244,14 @@ class Fsum(_Named): # sync __methods__ with .vector3dBase.Vector3dBase, .fstats
1243
1244
  # break
1244
1245
  # return self._update() if up else self
1245
1246
 
1247
+ def _facc_xsum(self, xs, up=True, **origin_which):
1248
+ '''(INTERNAL) Accumulate all C{xs}, each C{scalar}, an L{Fsum}
1249
+ or L{Fsum2Tuple}, like function C{_xsum}.
1250
+ '''
1251
+ fs = _xs(xs, **_x_isfine(self.nonfinitesOK, _Cdot=type(self),
1252
+ **origin_which)) # PYCHOK yield
1253
+ return self._facc_scalar(fs, up=up)
1254
+
1246
1255
  def fadd(self, xs=()):
1247
1256
  '''Add an iterable's items to this instance.
1248
1257
 
@@ -1533,17 +1542,17 @@ class Fsum(_Named): # sync __methods__ with .vector3dBase.Vector3dBase, .fstats
1533
1542
  def fover(self, over, **raiser_RESIDUAL):
1534
1543
  '''Apply C{B{self} /= B{over}} and summate.
1535
1544
 
1536
- @arg over: An L{Fsum} or C{scalar} denominator.
1545
+ @arg over: Divisor (C{scalar}, an L{Fsum} or L{Fsum2Tuple}).
1537
1546
  @kwarg raiser_RESIDUAL: Use C{B{raiser}=False} to ignore
1538
1547
  L{ResidualError}s (C{bool}) and C{B{RESIDUAL}=scalar}
1539
1548
  to override the current L{RESIDUAL<Fsum.RESIDUAL>}.
1540
1549
 
1541
- @return: Precision running sum (C{float}).
1550
+ @return: Precision running quotient sum (C{float}).
1542
1551
 
1543
1552
  @raise ResidualError: Non-zero, significant residual or invalid
1544
1553
  B{C{RESIDUAL}}.
1545
1554
 
1546
- @see: Methods L{Fsum.fsum} and L{Fsum.__itruediv__}.
1555
+ @see: Methods L{Fsum.fdiv}, L{Fsum.__itruediv__} and L{Fsum.fsum}.
1547
1556
  '''
1548
1557
  return float(self.fdiv(over, **raiser_RESIDUAL)._fprs)
1549
1558
 
@@ -1837,19 +1846,19 @@ class Fsum(_Named): # sync __methods__ with .vector3dBase.Vector3dBase, .fstats
1837
1846
  '''Like method L{Fsum.fsum_} iff I{all} C{B{xs}}, each I{known to be}
1838
1847
  C{scalar}, an L{Fsum} or L{Fsum2Tuple}.
1839
1848
  '''
1840
- return self._facc_scalarf(xs, which=self.fsumf_)._fprs # origin=1?
1849
+ return self._facc_xsum(xs, which=self.fsumf_)._fprs # origin=1?
1841
1850
 
1842
1851
  def Fsumf_(self, *xs):
1843
1852
  '''Like method L{Fsum.Fsum_} iff I{all} C{B{xs}}, each I{known to be}
1844
1853
  C{scalar}, an L{Fsum} or L{Fsum2Tuple}.
1845
1854
  '''
1846
- return self._facc_scalarf(xs, which=self.Fsumf_)._copyd(self.Fsumf_) # origin=1?
1855
+ return self._facc_xsum(xs, which=self.Fsumf_)._copyd(self.Fsumf_) # origin=1?
1847
1856
 
1848
1857
  def fsum2f_(self, *xs):
1849
1858
  '''Like method L{Fsum.fsum2_} iff I{all} C{B{xs}}, each I{known to be}
1850
1859
  C{scalar}, an L{Fsum} or L{Fsum2Tuple}.
1851
1860
  '''
1852
- return self._fsum2(xs, self._facc_scalarf, which=self.fsum2f_) # origin=1?
1861
+ return self._fsum2(xs, self._facc_xsum, which=self.fsum2f_) # origin=1?
1853
1862
 
1854
1863
  # ftruediv = __itruediv__ # for naming consistency?
1855
1864
 
pygeodesy/gars.py CHANGED
@@ -15,8 +15,7 @@ Transcoded from I{Charles Karney}'s C++ class U{GARS
15
15
  '''
16
16
 
17
17
  from pygeodesy.basics import isstr, _splituple, typename
18
- from pygeodesy.constants import _off90, _1_over, _0_5, \
19
- _1_0 # PYCHOK used!
18
+ from pygeodesy.constants import _off90, _1_over, _0_5
20
19
  from pygeodesy.errors import _ValueError, _xkwds, _xStrError
21
20
  # from pygeodesy.internals import typename # from .basics
22
21
  from pygeodesy.interns import NN, _0to9_, _AtoZnoIO_, _INV_
@@ -30,7 +29,7 @@ from pygeodesy.units import Int_, Lat, Lon, Precision_, Scalar_, Str
30
29
  from math import floor
31
30
 
32
31
  __all__ = _ALL_LAZY.gars
33
- __version__ = '25.04.14'
32
+ __version__ = '25.05.07'
34
33
 
35
34
  _Digits = _0to9_
36
35
  _LatLen = 2
pygeodesy/geodesici.py CHANGED
@@ -23,7 +23,7 @@ and I{S. Baselga Moreno & J.C. Martinez-Llario}'s U{Intersection and point-to-li
23
23
  on the ellipsoid<https://riunet.UPV.ES/bitstream/handle/10251/122902/Revised_Manuscript.pdf>}.
24
24
  '''
25
25
  # make sure int/int division yields float quotient
26
- from __future__ import division as _; del _ # PYCHOK semicolon
26
+ from __future__ import division as _; del _ # noqa: E702 ;
27
27
 
28
28
  from pygeodesy.basics import _copy, _enumereverse, map1, \
29
29
  _xinstanceof, _xor, typename
@@ -57,7 +57,7 @@ from pygeodesy.utily import atan2, sincos2, fabs, radians
57
57
  # from math import ceil as _ceil, fabs, radians # .fsums, .utily
58
58
 
59
59
  __all__ = _ALL_LAZY.geodesici
60
- __version__ = '25.04.14'
60
+ __version__ = '25.05.12'
61
61
 
62
62
  _0t = 0, # int
63
63
  _1_1t = -1, +1
@@ -1560,7 +1560,7 @@ if __name__ == _DMAIN_: # MCCABE 14
1560
1560
 
1561
1561
  _isopt = re.compile('^[-]+[a-z]*$', flags=re.IGNORECASE).match
1562
1562
 
1563
- I = Intersector(GeodesicExact()) # PYCHOK I
1563
+ I = Intersector(GeodesicExact()) # noqa: E741 I is eye
1564
1564
  M = m = _R = None
1565
1565
  _T = _V = _h = _C = False
1566
1566
 
@@ -1584,7 +1584,7 @@ if __name__ == _DMAIN_: # MCCABE 14
1584
1584
  elif arg == _R__ and args:
1585
1585
  _R = args.pop(0)
1586
1586
  elif _starts('--Tool', arg):
1587
- I = Intersectool() # PYCHOK I
1587
+ I = Intersectool() # noqa: E741 I is eye
1588
1588
  if _V:
1589
1589
  I.verbose = True
1590
1590
  if not _Xables.X_OK(I.IntersectTool):
@@ -17,13 +17,13 @@ respectively C{GeodesicLine} from I{Karney}'s Python implementation U{geographic
17
17
  L{pygeodesy.geodesicw} and L{pygeodesy.karney}.
18
18
  '''
19
19
 
20
- from pygeodesy.geodesicx.gx import GeodesicExact, GeodesicLineExact # PYCHOK exported
21
- from pygeodesy.geodesicx.gxarea import GeodesicAreaExact, PolygonArea # PYCHOK exported
20
+ from pygeodesy.geodesicx.gx import GeodesicExact, GeodesicLineExact # noqa: F401
21
+ from pygeodesy.geodesicx.gxarea import GeodesicAreaExact, PolygonArea # noqa: F401
22
22
  from pygeodesy.karney import Caps, GeodesicError
23
23
  from pygeodesy.lazily import _ALL_DOCS, _ALL_LAZY
24
24
 
25
25
  __all__ = _ALL_LAZY.geodesicx + _ALL_DOCS(Caps, GeodesicError)
26
- __version__ = '25.04.14'
26
+ __version__ = '25.05.12'
27
27
 
28
28
  # **) MIT License
29
29
  #
pygeodesy/geodesicx/gx.py CHANGED
@@ -13,7 +13,7 @@ and licensed under the MIT/X11 License. For more information, see the
13
13
  U{GeographicLib<https://GeographicLib.SourceForge.io>} documentation.
14
14
  '''
15
15
  # make sure int/int division yields float quotient
16
- from __future__ import division as _; del _ # PYCHOK semicolon
16
+ from __future__ import division as _; del _ # noqa: E702 ;
17
17
 
18
18
  # A copy of comments from Karney's C{GeodesicExact.cpp}:
19
19
  #
@@ -65,7 +65,7 @@ from pygeodesy.utily import atan2, atan2d as _atan2d_reverse, _unrollon, \
65
65
  from math import copysign, cos, degrees, fabs, radians, sqrt
66
66
 
67
67
  __all__ = ()
68
- __version__ = '25.04.14'
68
+ __version__ = '25.05.12'
69
69
 
70
70
  _MAXIT1 = 20
71
71
  _MAXIT2 = 10 + _MAXIT1 + MANT_DIG # MANT_DIG == C++ digits
@@ -15,7 +15,7 @@ and licensed under the MIT/X11 License. For more information, see the
15
15
  U{GeographicLib<https://GeographicLib.SourceForge.io>} documentation.
16
16
  '''
17
17
  # make sure int/int division yields float quotient
18
- from __future__ import division as _; del _ # PYCHOK semicolon
18
+ from __future__ import division as _; del _ # noqa: E702 ;
19
19
 
20
20
  from pygeodesy.basics import isodd, unsigned0
21
21
  from pygeodesy.constants import NAN, _0_0, _0_5, _720_0
@@ -31,7 +31,7 @@ from pygeodesy.props import Property, Property_RO, property_RO
31
31
  from math import fmod as _fmod
32
32
 
33
33
  __all__ = ()
34
- __version__ = '24.10.14'
34
+ __version__ = '25.05.12'
35
35
 
36
36
 
37
37
  class GeodesicAreaExact(_NamedBase):
@@ -13,7 +13,7 @@ and licensed under the MIT/X11 License. For more information, see the
13
13
  U{GeographicLib<https://GeographicLib.SourceForge.io>} documentation.
14
14
  '''
15
15
  # make sure int/int division yields float quotient
16
- from __future__ import division as _; del _ # PYCHOK semicolon
16
+ from __future__ import division as _; del _ # noqa: E702 ;
17
17
 
18
18
  # A copy of comments from Karney's C{GeodesicLineExact.cpp}:
19
19
  #
@@ -55,7 +55,7 @@ from pygeodesy.utily import atan2, atan2d as _atan2d_reverse, sincos2
55
55
  from math import cos, degrees, fabs, floor, radians, sin
56
56
 
57
57
  __all__ = ()
58
- __version__ = '25.04.12'
58
+ __version__ = '25.05.12'
59
59
 
60
60
  _glXs = [] # instances of C{[_]GeodesicLineExact} to be updated
61
61
 
pygeodesy/geoids.py CHANGED
@@ -87,7 +87,7 @@ courtesy of SBFRF.
87
87
  Above Mean Sea Level<https://Wiki.ROS.org/mavros>}.
88
88
  '''
89
89
  # make sure int/int division yields float quotient, see .basics
90
- from __future__ import division as _; del _ # PYCHOK semicolon
90
+ from __future__ import division as _; del _ # noqa: E702 ;
91
91
 
92
92
  from pygeodesy.basics import _isin, len2, min2, isodd, _splituple, \
93
93
  ub2str as _ub2str
@@ -126,7 +126,7 @@ except ImportError: # Python 3+
126
126
  from io import BytesIO as _BytesIO # PYCHOK expected
127
127
 
128
128
  __all__ = _ALL_LAZY.geoids
129
- __version__ = '25.04.14'
129
+ __version__ = '25.05.21'
130
130
 
131
131
  _assert_ = 'assert'
132
132
  _bHASH_ = b'#'
@@ -148,7 +148,7 @@ class GeoidError(HeightError):
148
148
  class _GeoidBase(_HeightBase):
149
149
  '''(INTERNAL) Base class for C{Geoid...}s.
150
150
  '''
151
- _center = None # (lat, lon, height)
151
+ # _center = None # (lat, lon, height)
152
152
  _cropped = None
153
153
  # _datum = _WGS84 # from _HeightBase
154
154
  _egm = None # open C{egm*.pgm} geoid file
@@ -297,7 +297,7 @@ class _GeoidBase(_HeightBase):
297
297
 
298
298
  @Property_RO
299
299
  def _center(self):
300
- ''' Cache for method L{center}.
300
+ '''(INTERNAL) Cache for method L{center}.
301
301
  '''
302
302
  return self._llh3(favg(self._lat_lo, self._lat_hi),
303
303
  favg(self._lon_lo, self._lon_hi))
@@ -907,7 +907,7 @@ def _I(i):
907
907
  '''(INTERNAL) Cache a single C{int} constant.
908
908
  '''
909
909
  i = int(i)
910
- return _intCs.setdefault(i, i) # PYCHOK undefined due to del _intCs
910
+ return _intCs.setdefault(i, i) # noqa: F821 del
911
911
 
912
912
 
913
913
  def _T(cs):
pygeodesy/hausdorff.py CHANGED
@@ -75,8 +75,8 @@ from pygeodesy.interns import NN, _i_, _j_, _units_
75
75
  # from pygeodesy.iters import points2 as _points2 # from .points
76
76
  from pygeodesy.lazily import _ALL_LAZY, _ALL_MODS as _MODS, _FOR_DOCS
77
77
  from pygeodesy.named import _name2__, _Named, _NamedTuple, _Pass
78
- # from pygeodesy.namedTuples import PhiLam2Tuple # from .points
79
- from pygeodesy.points import _distanceTo, PhiLam2Tuple, points2 as _points2, radians
78
+ from pygeodesy.namedTuples import PhiLam2Tuple
79
+ from pygeodesy.points import _distanceTo, points2 as _points2, radians
80
80
  from pygeodesy.props import Property, Property_RO, property_doc_, property_RO
81
81
  from pygeodesy.units import Float, Number_
82
82
  from pygeodesy import unitsBase as _unitsBase # _Str_..., _xUnit, _xUnits
@@ -85,7 +85,7 @@ from pygeodesy import unitsBase as _unitsBase # _Str_..., _xUnit, _xUnits
85
85
  from random import Random
86
86
 
87
87
  __all__ = _ALL_LAZY.hausdorff
88
- __version__ = '25.04.21'
88
+ __version__ = '25.05.21'
89
89
 
90
90
  _formy = _MODS.into(formy=__name__)
91
91
 
@@ -101,7 +101,7 @@ class Hausdorff(_Named):
101
101
  be overloaded.
102
102
  '''
103
103
  _datum = _WGS84
104
- _func = None # formy function/property
104
+ # _func = None # formy function/property
105
105
  _kwds = {} # func_ options
106
106
  _model = ()
107
107
  _seed = None
pygeodesy/heights.py CHANGED
@@ -69,7 +69,7 @@ C{>>> h1, h2, ... = hinterpolator.height_(lat1, lon1, lat2, lon2, ...)}
69
69
  Interpolation.
70
70
  '''
71
71
  # make sure int/int division yields float quotient, see .basics
72
- from __future__ import division as _; del _ # PYCHOK semicolon
72
+ from __future__ import division as _; del _ # noqa: E702 ;
73
73
 
74
74
  from pygeodesy.basics import isscalar, len2, map1, min2, _xnumpy, _xscipy
75
75
  from pygeodesy.constants import EPS, PI, PI_2, PI2, _0_0, _90_0, _180_0
@@ -92,7 +92,7 @@ from pygeodesy.units import _isDegrees, Float_, Int_
92
92
  # from math import radians # from .points
93
93
 
94
94
  __all__ = _ALL_LAZY.heights
95
- __version__ = '25.04.21'
95
+ __version__ = '25.05.12'
96
96
 
97
97
  _error_ = 'error'
98
98
  _formy = _MODS.into(formy=__name__)
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__ = '25.04.14'
29
+ __version__ = '25.05.19'
30
30
 
31
31
  _items_ = 'items'
32
32
  _iterNumpy2len = 1 # adjustable for testing purposes
pygeodesy/karney.py CHANGED
@@ -141,7 +141,7 @@ in C{pygeodesy} are based on I{Karney}'s post U{Area of a spherical polygon
141
141
  <https://MathOverflow.net/questions/97711/the-area-of-spherical-polygons>}, 3rd Answer.
142
142
  '''
143
143
  # make sure int/int division yields float quotient, see .basics
144
- from __future__ import division as _; del _ # PYCHOK semicolon
144
+ from __future__ import division as _; del _ # noqa: E702 ;
145
145
 
146
146
  from pygeodesy.basics import _copysign, _isin, isint, neg, unsigned0, \
147
147
  _xgeographiclib, _zip
@@ -166,7 +166,7 @@ from pygeodesy.utily import atan2d, sincos2d, tand, _unrollon, fabs
166
166
  # from math import fabs # from .utily
167
167
 
168
168
  __all__ = _ALL_LAZY.karney
169
- __version__ = '25.04.14'
169
+ __version__ = '25.05.12'
170
170
 
171
171
  _2_4_ = '2.4'
172
172
  _K_2_0 = _getenv(_PYGEODESY_ENV(typename(_xgeographiclib)[2:]), _2_)
pygeodesy/ktm.py CHANGED
@@ -40,7 +40,7 @@ and licensed under the MIT/X11 License. For more information, see the
40
40
  U{GeographicLib<https://GeographicLib.SourceForge.io>} documentation.
41
41
  '''
42
42
  # make sure int/int division yields float quotient
43
- from __future__ import division as _; del _ # PYCHOK semicolon
43
+ from __future__ import division as _; del _ # noqa: E702 ;
44
44
 
45
45
  from pygeodesy.basics import copysign0, _isin, isodd, neg, neg_, \
46
46
  _reverange, _xinstanceof
@@ -66,7 +66,7 @@ from cmath import polar
66
66
  from math import asinh, cos, cosh, degrees, fabs, sin, sinh, sqrt, tanh
67
67
 
68
68
  __all__ = _ALL_LAZY.ktm
69
- __version__ = '25.04.14'
69
+ __version__ = '25.05.12'
70
70
 
71
71
 
72
72
  class KTMError(_ValueError):
pygeodesy/latlonBase.py CHANGED
@@ -25,9 +25,8 @@ from pygeodesy.errors import _AttributeError, IntersectionError, \
25
25
  # from pygeodesy.fmath import favg # _MODS
26
26
  # from pygeodesy import formy as _formy # _MODS.into
27
27
  from pygeodesy.internals import _passarg, typename
28
- from pygeodesy.interns import NN, _COMMASPACE_, _concentric_, _height_, \
29
- _intersection_, _LatLon_, _m_, _negative_, \
30
- _no_, _overlap_, _too_, _point_ # PYCHOK used!
28
+ from pygeodesy.interns import NN, _COMMASPACE_, _concentric_, _intersection_, \
29
+ _LatLon_, _m_, _no_, _overlap_, _point_ # PYCHOK used!
31
30
  # from pygeodesy.iters import PointsIter, points2 # _MODS
32
31
  # from pygeodesy.karney import Caps # _MODS
33
32
  from pygeodesy.lazily import _ALL_DOCS, _ALL_LAZY, _ALL_MODS as _MODS
@@ -49,7 +48,7 @@ from contextlib import contextmanager
49
48
  from math import asin, cos, degrees, fabs, radians
50
49
 
51
50
  __all__ = _ALL_LAZY.latlonBase
52
- __version__ = '25.04.28'
51
+ __version__ = '25.05.07'
53
52
 
54
53
  _formy = _MODS.into(formy=__name__)
55
54
 
pygeodesy/lazily.py CHANGED
@@ -510,7 +510,7 @@ class _ALL_MODS(_internals._MODS_Base):
510
510
  _internals._MODS = _ALL_MODS = _ALL_MODS() # PYCHOK singleton
511
511
 
512
512
  __all__ = _ALL_LAZY.lazily
513
- __version__ = '25.04.30'
513
+ __version__ = '25.05.19'
514
514
 
515
515
 
516
516
  def _ALL_OTHER(*objs):
pygeodesy/lcc.py CHANGED
@@ -22,7 +22,7 @@ and John P. Snyder U{'Map Projections - A Working Manual'<https://Pubs.USGS.gov/
22
22
  @var Conics.WRF_Lb: Conic(name='WRF_Lb', lat0=40, lon0=-97, par1=33, par2=45, E0=0, N0=0, k0=1, SP=2, datum=Datum(name='WGS84', ellipsoid=Ellipsoids.WGS84, transform=Transforms.WGS84)
23
23
  '''
24
24
  # make sure int/int division yields float quotient, see .basics
25
- from __future__ import division as _; del _ # PYCHOK semicolon
25
+ from __future__ import division as _; del _ # noqa: E702 ;
26
26
 
27
27
  from pygeodesy.basics import copysign0, _isin, _xinstanceof, _xsubclassof, \
28
28
  typename
@@ -50,7 +50,7 @@ from pygeodesy.utily import atan1, degrees90, degrees180, sincos2, tanPI_2_2
50
50
  from math import atan, fabs, log, radians, sin, sqrt
51
51
 
52
52
  __all__ = _ALL_LAZY.lcc
53
- __version__ = '25.04.14'
53
+ __version__ = '25.05.12'
54
54
 
55
55
  _E0_ = 'E0'
56
56
  _N0_ = 'N0'
pygeodesy/ltp.py CHANGED
@@ -11,7 +11,7 @@ and L{ChLVe} and L{Ltp}, L{ChLV}, L{LocalError}, L{Attitude} and L{Frustum}.
11
11
  <https://GeographicLib.SourceForge.io/C++/doc/classGeographicLib_1_1LocalCartesian.html>}.
12
12
  '''
13
13
  # make sure int/int division yields float quotient, see .basics
14
- from __future__ import division as _; del _ # PYCHOK semicolon
14
+ from __future__ import division as _; del _ # noqa: E702 ;
15
15
 
16
16
  from pygeodesy.basics import _args_kwds_names, _isin, map1, map2, _xinstanceof, \
17
17
  _xsubclassof, typename # .datums
@@ -45,7 +45,7 @@ from pygeodesy.vector3d import _ALL_LAZY, Vector3d
45
45
  # from math import fabs, floor as _floor # from .fmath, .fsums
46
46
 
47
47
  __all__ = _ALL_LAZY.ltp
48
- __version__ = '25.05.01'
48
+ __version__ = '25.05.12'
49
49
 
50
50
  _height0_ = _height_ + _0_
51
51
  _narrow_ = 'narrow'
@@ -306,11 +306,11 @@ class Frustum(_NamedBase):
306
306
  # left and right corners, or swapped
307
307
  if r < EPS: # no roll
308
308
  r = a * tan_h_2
309
- l = -r # PYCHOK l is ell
309
+ l = -r # noqa: E741 l is ell
310
310
  else: # roll
311
- r, l = tand_(r - h_2, r + h_2, roll_hfov=r) # PYCHOK l is ell
311
+ r, l = tand_(r - h_2, r + h_2, roll_hfov=r) # noqa: E741 l is ell
312
312
  r *= -a # negate right positive
313
- l *= -a # PYCHOK l is ell
313
+ l *= -a # noqa: E741 l is ell
314
314
  y = a * cotd(e, tilt_vfov=e)
315
315
  return (l, y), (r, y)
316
316
 
pygeodesy/mgrs.py CHANGED
@@ -36,7 +36,7 @@ and compare the MGRS results with those from I{Karney}'s utility U{GeoConvert
36
36
  '''
37
37
 
38
38
  from pygeodesy.basics import halfs2, _isin, _splituple, _xinstanceof
39
- # from pygeodesy.constants import _0_5 # from .units
39
+ from pygeodesy.constants import _0_5
40
40
  from pygeodesy.datums import _ellipsoidal_datum, _WGS84
41
41
  from pygeodesy.errors import _AssertionError, MGRSError, _parseX, \
42
42
  _ValueError, _xkwds
@@ -49,14 +49,14 @@ from pygeodesy.named import _name2__, _NamedBase, _NamedTuple, _Pass
49
49
  from pygeodesy.namedTuples import EasNor2Tuple, UtmUps5Tuple
50
50
  from pygeodesy.props import deprecated_property_RO, property_RO, Property_RO
51
51
  from pygeodesy.streprs import enstr2, _enstr2m3, Fmt, _resolution10, _xzipairs
52
- from pygeodesy.units import Easting, Northing, Str, _100km, _0_5
52
+ from pygeodesy.units import Easting, Northing, Str, _100km
53
53
  from pygeodesy.units import _1um, _2000km # PYCHOK used!
54
54
  from pygeodesy.ups import _hemi, toUps8, Ups, _UPS_ZONE
55
55
  from pygeodesy.utm import toUtm8, _to3zBlat, Utm, _UTM_ZONE_MAX, _UTM_ZONE_MIN
56
56
  # from pygeodesy.utmupsBase import _UTM_ZONE_MAX, _UTM_ZONE_MIN # from .utm
57
57
 
58
58
  __all__ = _ALL_LAZY.mgrs
59
- __version__ = '25.04.14'
59
+ __version__ = '25.05.12'
60
60
 
61
61
  _AN_ = 'AN' # default south pole grid tile and band B
62
62
  _AtoPx_ = _AtoZnoIO_.tillP