pygeodesy 25.5.28__py2.py3-none-any.whl → 25.7.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.
pygeodesy/fmath.py CHANGED
@@ -7,8 +7,8 @@ C{fused-multiply-add}, polynomials, roots, etc.
7
7
  # make sure int/int division yields float quotient, see .basics
8
8
  from __future__ import division as _; del _ # noqa: E702 ;
9
9
 
10
- from pygeodesy.basics import _copysign, copysign0, isbool, isint, isscalar, \
11
- len2, map1, _xiterable, typename
10
+ from pygeodesy.basics import _copysign, copysign0, isbool, isint, isodd, \
11
+ isscalar, len2, map1, _xiterable, typename
12
12
  from pygeodesy.constants import EPS0, EPS02, EPS1, NAN, PI, PI_2, PI_4, \
13
13
  _0_0, _0_125, _1_6th, _0_25, _1_3rd, _0_5, _1_0, \
14
14
  _1_5, _copysign_0_0, isfinite, remainder
@@ -25,7 +25,7 @@ from math import fabs, sqrt # pow
25
25
  import operator as _operator # in .datums, .trf, .utm
26
26
 
27
27
  __all__ = _ALL_LAZY.fmath
28
- __version__ = '25.05.12'
28
+ __version__ = '25.06.03'
29
29
 
30
30
  # sqrt(2) - 1 <https://WikiPedia.org/wiki/Square_root_of_2>
31
31
  _0_4142 = 0.41421356237309504880 # ~ 3_730_904_090_310_553 / 9_007_199_254_740_992
@@ -66,7 +66,7 @@ class Fdot(Fsum):
66
66
  self._facc_dot(n, a, b, **kwds)
67
67
 
68
68
 
69
- class Fdot_(Fdot):
69
+ class Fdot_(Fdot): # in .elliptic
70
70
  '''Precision dot product.
71
71
  '''
72
72
  def __init__(self, *xys, **start_name_f2product_nonfinites_RESIDUAL):
@@ -78,6 +78,8 @@ class Fdot_(Fdot):
78
78
 
79
79
  @see: Class L{Fdot<Fdot.__init__>} for further details.
80
80
  '''
81
+ if isodd(len(xys)):
82
+ raise LenError(Fdot_, xys=len(xys))
81
83
  Fdot.__init__(self, xys[0::2], *xys[1::2], **start_name_f2product_nonfinites_RESIDUAL)
82
84
 
83
85
 
pygeodesy/fsums.py CHANGED
@@ -39,15 +39,13 @@ results may differ from Python's C{math.fsum} results.
39
39
  # make sure int/int division yields float quotient, see .basics
40
40
  from __future__ import division as _; del _ # noqa: E702 ;
41
41
 
42
- from pygeodesy.basics import _gcd, isbool, iscomplex, isint, isscalar, \
42
+ from pygeodesy.basics import _gcd, isbool, iscomplex, isint, isodd, isscalar, \
43
43
  _signOf, itemsorted, signOf, _xiterable
44
- from pygeodesy.constants import INF, INT0, MANT_DIG, NEG0, NINF, _0_0, \
45
- _1_0, _N_1_0, _isfinite, _pos_self, \
46
- Float, Int
47
- from pygeodesy.errors import _AssertionError, _OverflowError, _TypeError, \
48
- _ValueError, _xError, _xError2, _xkwds, \
49
- _xkwds_get, _xkwds_get1, _xkwds_not, \
50
- _xkwds_pop, _xsError
44
+ from pygeodesy.constants import INF, INT0, MANT_DIG, NEG0, NINF, _0_0, _1_0, \
45
+ _N_1_0, _isfinite, _pos_self, Float, Int
46
+ from pygeodesy.errors import _AssertionError, _OverflowError, LenError, _TypeError, \
47
+ _ValueError, _xError, _xError2, _xkwds, _xkwds_get, \
48
+ _xkwds_get1, _xkwds_not, _xkwds_pop, _xsError
51
49
  from pygeodesy.internals import _enquote, _envPYGEODESY, _passarg, typename # _sizeof
52
50
  from pygeodesy.interns import NN, _arg_, _COMMASPACE_, _DMAIN_, _DOT_, _from_, \
53
51
  _not_finite_, _SPACE_, _std_, _UNDER_
@@ -64,7 +62,7 @@ from math import fabs, isinf, isnan, \
64
62
  ceil as _ceil, floor as _floor # PYCHOK used! .ltp
65
63
 
66
64
  __all__ = _ALL_LAZY.fsums
67
- __version__ = '25.05.12'
65
+ __version__ = '25.06.03'
68
66
 
69
67
  from pygeodesy.interns import (
70
68
  _PLUS_ as _add_op_, # in .auxilats.auxAngle
@@ -121,7 +119,9 @@ try: # MCCABE 26
121
119
  f = x * y
122
120
  yield f
123
121
  if _isfinite(f):
124
- yield _fma(x, y, -f)
122
+ f = _fma(x, y, -f)
123
+ if f:
124
+ yield f
125
125
  for z in zs:
126
126
  yield z
127
127
 
@@ -162,7 +162,7 @@ except ImportError: # PYCHOK DSPACE! Python 3.12-
162
162
  def _fmaX(r, *a_b_c): # PYCHOK no cover
163
163
  # handle non-finite fma result as Python 3.13+ C-function U{math_fma_impl
164
164
  # <https://GitHub.com/python/cpython/blob/main/Modules/mathmodule.c#L2305>}:
165
- # raise a ValueError for a NAN result from non-NAN C{a_b_c}s otherwise an
165
+ # raise a ValueError for a NAN result from non-NAN C{a_b_c}s, otherwise an
166
166
  # OverflowError for a non-finite, non-NAN result from all finite C{a_b_c}s.
167
167
  if isnan(r):
168
168
  def _x(x):
@@ -560,7 +560,6 @@ class Fsum(_Named): # sync __methods__ with .vector3dBase.Vector3dBase, .fstats
560
560
  self._fset(other, op=_fset_op_, **up)
561
561
  return self
562
562
 
563
-
564
563
  def __ceil__(self): # PYCHOK not special in Python 2-
565
564
  '''Return this instance' C{math.ceil} as C{int} or C{float}.
566
565
 
@@ -1137,7 +1136,7 @@ class Fsum(_Named): # sync __methods__ with .vector3dBase.Vector3dBase, .fstats
1137
1136
  return E(u, txt=t, cause=X)
1138
1137
 
1139
1138
  def _facc(self, xs, up=True, **_X_x_origin):
1140
- '''(INTERNAL) Accumulate more C{scalar}s or L{Fsum}s.
1139
+ '''(INTERNAL) Accumulate more C{scalar}s, L{Fsum}s pr L{Fsum2Tuple}s.
1141
1140
  '''
1142
1141
  if xs:
1143
1142
  kwds = self._isfine
@@ -1472,6 +1471,29 @@ class Fsum(_Named): # sync __methods__ with .vector3dBase.Vector3dBase, .fstats
1472
1471
  f = self._nonfiniteX(X, op, f, **nonfinites)
1473
1472
  return self._fset(f)
1474
1473
 
1474
+ def fma_(self, *xys, **nonfinites):
1475
+ '''Fused-multiply-accumulate C{for i in range(0, len(xys), B{2}):
1476
+ self = }L{fma<pygeodesy.fmath.fma>}C{(xys[i], xys[i+1], self)}.
1477
+
1478
+ @arg xys: Pairwise multiplicand, multiplier (each C{scalar},
1479
+ an L{Fsum} or L{Fsum2Tuple}), all positional.
1480
+ @kwarg nonfinites: Use C{B{nonfinites}=True} or C{False}, to
1481
+ override L{nonfinites<Fsum.nonfinites>} and
1482
+ L{nonfiniterrors} default (C{bool}).
1483
+
1484
+ @note: Equivalent to L{fdot_<pygeodesy.fmath.fdot_>}C{(*xys,
1485
+ start=self)}.
1486
+ '''
1487
+ if xys:
1488
+ n = len(xys)
1489
+ if n < 2 or isodd(n):
1490
+ raise LenError(self.fma_, xys=n)
1491
+ f, _fmath_fma = self, _MODS.fmath.fma
1492
+ for x, y in zip(xys[0::2], xys[1::2]):
1493
+ f = _fmath_fma(x, y, f, **nonfinites)
1494
+ self._fset(f)
1495
+ return self
1496
+
1475
1497
  fmul = __imul__
1476
1498
 
1477
1499
  def _fmul(self, other, op):
@@ -1581,8 +1603,8 @@ class Fsum(_Named): # sync __methods__ with .vector3dBase.Vector3dBase, .fstats
1581
1603
  L{Fsum}, overriding the L{f2product} default.
1582
1604
 
1583
1605
  @arg two: If omitted, leave the override unchanged, if C{True},
1584
- turn I{TwoProduct} on, if C{False} off, if C{None}e
1585
- remove th override (C{bool} or C{None}).
1606
+ turn I{TwoProduct} on, if C{False} off, or if C{None}
1607
+ remove the override (C{bool} or C{None}).
1586
1608
 
1587
1609
  @return: The previous setting (C{bool} or C{None} if not set).
1588
1610
 
@@ -2682,11 +2704,11 @@ try:
2682
2704
  del _fsum # nope, remove _fsum ...
2683
2705
  raise ImportError() # ... use _fsum below
2684
2706
 
2685
- _sum = _fsum # in .elliptic
2707
+ _sum = _fsum
2686
2708
  except ImportError:
2687
- _sum = sum # in .elliptic
2709
+ _sum = sum
2688
2710
 
2689
- def _fsum(xs):
2711
+ def _fsum(xs): # in .elliptic
2690
2712
  '''(INTERNAL) Precision summation, Python 2.5-.
2691
2713
  '''
2692
2714
  F = Fsum(name=_fsum.name, f2product=False, nonfinites=True)
pygeodesy/geodesici.py CHANGED
@@ -29,8 +29,8 @@ from pygeodesy.basics import _copy, _enumereverse, map1, \
29
29
  _xinstanceof, _xor, typename
30
30
  from pygeodesy.constants import EPS, INF, INT0, PI, PI2, PI_4, \
31
31
  _0_0, _0_5, _1_0, _1_5, _2_0, _3_0, \
32
- _45_0, _64_0, _90_0, isfinite, \
33
- _EPSjam # PYCHOK used!
32
+ _45_0, _64_0, _90_0, isfinite
33
+ from pygeodesy.constants import _EPSjam # PYCHOK used!
34
34
  from pygeodesy.ellipsoids import _EWGS84, Fmt, unstr
35
35
  from pygeodesy.errors import GeodesicError, IntersectionError, _an, \
36
36
  _xgeodesics, _xkwds_get, _xkwds_kwds, \
@@ -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.05.12'
60
+ __version__ = '25.06.02'
61
61
 
62
62
  _0t = 0, # int
63
63
  _1_1t = -1, +1
@@ -23,7 +23,7 @@ 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.05.12'
26
+ __version__ = '25.06.04'
27
27
 
28
28
  # **) MIT License
29
29
  #
@@ -5,7 +5,7 @@ u'''Print L{geodesicx} version, etc. using C{python -m pygeodesy.geodesicx}.
5
5
  '''
6
6
 
7
7
  __all__ = ()
8
- __version__ = '25.04.14'
8
+ __version__ = '25.06.01'
9
9
 
10
10
 
11
11
  def _main(**C4order): # PYCHOK no cover
@@ -47,7 +47,7 @@ from sys import argv # .internals._isPyChOK
47
47
  _main(C4order=int(argv[1])) if len(argv) == 2 and argv[1].isdigit() else _main()
48
48
 
49
49
  # % python3.13 -m pygeodesy.geodesicx
50
- # pygeodesy.geodesicx 25.04.14: C4order=30, C4n=5425, C4u=5107, C4u_n=94.1%, C4x=465, C4t=tuple, C4z=166008, geographiclib 2.0 (pygeodesy 25.4.24 Python 3.13.3 64bit arm64 macOS 15.4)
50
+ # pygeodesy.geodesicx 25.06.01: C4order=30, C4n=5425, C4u=5107, C4u_n=94.1%, C4x=465, C4t=tuple, C4z=166008, geographiclib 2.0 (pygeodesy 25.5.28 Python 3.13.3 64bit arm64 macOS 15.5)
51
51
 
52
52
  # % python3.13 -m pygeodesy.geodesicx 30
53
53
  # pygeodesy.geodesicx 24.09.06: C4order=30, C4n=5425, C4u=5107, C4u_n=94.1%, C4x=465, C4t=tuple, C4z=166008 (pygeodesy 24.9.6 Python 3.13.0rc1 64bit arm64 macOS 14.6.1)
pygeodesy/geodesicx/gx.py CHANGED
@@ -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.05.28'
68
+ __version__ = '25.06.01'
69
69
 
70
70
  _MAXIT1 = 20
71
71
  _MAXIT2 = 10 + _MAXIT1 + MANT_DIG # MANT_DIG == C++ digits
@@ -1227,7 +1227,8 @@ class GeodesicExact(_GeodesicBase):
1227
1227
  tripb = fsum1f_(calp1a, -calp1, _abs(salp1a - salp1)) < TOLb or \
1228
1228
  fsum1f_(calp1b, -calp1, _abs(salp1b - salp1)) < TOLb
1229
1229
  else:
1230
- raise GeodesicError(Fmt.no_convergence(v, TOLv), txt=repr(self)) # self.toRepr()
1230
+ v = Fmt.no_convergence(v, TOLv)
1231
+ raise GeodesicError(v, txt=repr(self)) # self.toRepr()
1231
1232
 
1232
1233
  p.set_(iter=i, trip=tripb) # like .geodsolve._GDictInvoke: iter NOT iteration!
1233
1234
  return sig12, salp1, calp1, salp2, calp2, domg12
@@ -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__ = '25.05.28'
34
+ __version__ = '25.06.04'
35
35
 
36
36
 
37
37
  class GeodesicAreaExact(_NamedBase):
@@ -172,7 +172,7 @@ class GeodesicAreaExact(_NamedBase):
172
172
  r, n = None, self.num
173
173
  if n < 2:
174
174
  p = _0_0
175
- a = NAN if self.polyline else p
175
+ a = NAN if n > 0 and self.polyline else p
176
176
  elif self._Area:
177
177
  r = self._Inverse(self.lat1, self.lon1, self.lat0, self.lon0)
178
178
  a = self._reduced(r.S12, r.xing, n, reverse=reverse, sign=sign, polar=polar)
@@ -319,9 +319,8 @@ class GeodesicAreaExact(_NamedBase):
319
319
  @kwarg reverse_sign_polar: Optional C{B{reverse}=False}, C{B{sign}=True} and
320
320
  C{B{polar}=False} keyword arguments, see method L{Compute}.
321
321
 
322
- @return: L{Area3Tuple}C{(number, perimeter, area)}.
323
-
324
- @raise GeodesicError: No points.
322
+ @return: L{Area3Tuple}C{(number, perimeter, area)}, with C{perimeter} and
323
+ C{area} both C{NAN} for insuffcient C{number} of points.
325
324
  '''
326
325
  r, n = None, self.num + 1
327
326
  if n < 2: # raise GeodesicError(num=self.num)
@@ -20,7 +20,7 @@ from pygeodesy.karney import _CapsBase, GeodesicError, _2cos2x, \
20
20
  from math import fabs, ldexp as _ldexp
21
21
 
22
22
  __all__ = ()
23
- __version__ = '25.05.28'
23
+ __version__ = '25.06.01'
24
24
 
25
25
  # valid C{nC4}s and C{C4order}s, see _xnC4 below
26
26
  _nC4s = {24: 2900, 27: 4032, 30: 5425}
@@ -162,7 +162,8 @@ def _xnC4(**name_nC4):
162
162
  '''
163
163
  n, nC4 = _xkwds_item2(name_nC4)
164
164
  if nC4 not in _nC4s or not isinstance(nC4, int):
165
- raise GeodesicError(n, nC4, txt_not_=_or(*map(str, _nC4s)))
165
+ t = map(str, _nC4s)
166
+ raise GeodesicError(n, nC4, txt_not_=_or(*t))
166
167
  return _nC4s[nC4]
167
168
 
168
169
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pygeodesy
3
- Version: 25.5.28
3
+ Version: 25.7.25
4
4
  Summary: Pure Python geodesy tools
5
5
  Home-page: https://GitHub.com/mrJean1/PyGeodesy
6
6
  Author: Jean M. Brouwers
@@ -119,7 +119,7 @@ test results (on macOS only) and the complete documentation_ generated by Epydoc
119
119
  Tests
120
120
  =====
121
121
 
122
- The tests ran with Python 3.13.3 (with geographiclib_ 2.0), 3.12.7 (with geographiclib_ 2.0, numpy_ 2.1.0,
122
+ The tests ran with Python 3.13.5 (with geographiclib_ 2.0), 3.12.7 (with geographiclib_ 2.0, numpy_ 2.1.0,
123
123
  scipy_ 1.14.1, GeodSolve_ 2.5, IntersectTool_ 2.5 and RhumbSolve_ 2.5), 3.11.5 (with geographiclib_ 2.0,
124
124
  numpy_ 1.24.2 and scipy_ 1.10.1), Python 3.10.8 (with geographiclib_ 2.0, numpy_ 1.23.3, scipy_ 1.9.1,
125
125
  GeoConvert_ 2.5, GeodSolve_ 2.5), Python 3.9.6 and Python 2.7.18 (with geographiclib_ 1.50, numpy_ 1.16.6,
@@ -130,20 +130,20 @@ All tests ran with and without ``lazy import`` for Python 3 and with command lin
130
130
  and env variable ``PYGEODESY_WARNINGS=on`` for all Python versions. The results of those tests are
131
131
  included in the distribution files.
132
132
 
133
- Python 3.13.3, 3.12.7, 3.11.5 and 3.10.8 run on Apple M4 Si (``arm64``), *natively*. Python 2.7.18 runs
133
+ Python 3.13.5, 3.12.7, 3.11.5 and 3.10.8 run on Apple M4 Si (``arm64``), *natively*. Python 2.7.18 runs
134
134
  on Intel (``x86_64``) or Intel *emulation* (\"``arm64_x86_64``\", see function `pygeodesy.machine`_).
135
135
 
136
- Test coverage has been measured with coverage_ 7.6.1 using Python 3.13.3, 3.12.7, 3.11.5 and 3.10.8. The
136
+ Test coverage has been measured with coverage_ 7.6.1 using Python 3.13.4, 3.12.7, 3.11.5 and 3.10.8. The
137
137
  complete coverage report in HTML and a PDF summary are included in the distribution files.
138
138
 
139
- The tests also ran with Python 3.13.3 (and geographiclib_ 2.0) on `Debian 12`_ in 64-bit only and with
139
+ The tests also ran with Python 3.13.5 (and geographiclib_ 2.0) on `Debian 12`_ in 64-bit only and with
140
140
  Python 3.12.8 (and geographiclib_ 2.0) on `Windows 2019Server`_ in 64-bit only and with Python 2.7.18
141
141
  (and with geographiclib_ 1.52) on `Windows 10`_ in 64- and 32-bit.
142
142
 
143
143
  A single-File and single-Directory application with ``pygeodesy`` has been bundled using PyInstaller_ 3.4
144
144
  and 64-bit Python 3.7.4 and 3.7.3 on macOS 10.13.6 High Sierra.
145
145
 
146
- Previously, the tests were run with Python 3.13.0-2, 3.12.0-6, 3.11.2-4, 3.10.1-7, 3.9.1, 3.8.7, 3.7.1, 2.7.15,
146
+ Previously, the tests were run with Python 3.13.0-4, 3.12.0-6, 3.11.2-4, 3.10.1-7, 3.9.1, 3.8.7, 3.7.1, 2.7.15,
147
147
  PyPy_ 7.3.12 (Python 3.10.12), 7.3.1 (Python 3.6.9) and PyPy_ 7.1.1 (Python 2.7.13) (and geographiclib_ 1.52,
148
148
  numpy_ 1.16.3, 1.16.4, 1.16.6, 1.19.0, 1.19.4, 1.19.5 or 1.22.4 and scipy_ 1.2.1, 1.4.1, 1.5.2 or 1.8.1) on
149
149
  Ubuntu 16.04, with Python 3.10.0-1, 3.9.0-5, 3.8.0-6, 3.7.2-6, 3.7.0, 3.6.2-5, 3.5.3, 2.7.13-17, 2.7.10
@@ -159,12 +159,12 @@ Server 2012R2, Windows 10 Pro and 32-bit Python 2.6.6 on Windows XP SP3.
159
159
  Notes
160
160
  =====
161
161
 
162
- All Python source code has been statically checked_ with Ruff_ using Python 3.13.3 and with PyChecker_, PyFlakes_,
162
+ All Python source code has been statically checked_ with Ruff_ using Python 3.13.5 and with PyChecker_, PyFlakes_,
163
163
  PyCodeStyle_ (formerly Pep8) and McCabe_ using Python 2.7.18, both in 64-bit on macOS 15.5 Sequoia only.
164
164
 
165
165
  For a summary of all *Karney*-based functionality in ``pygeodesy``, see module karney_.
166
166
 
167
- *Last updated: May 28, 2025.*
167
+ *Last updated: July 25, 2025.*
168
168
 
169
169
  License
170
170
  =======
@@ -1,5 +1,5 @@
1
1
  pygeodesy/LICENSE,sha256=YfgAiyxOwY6P9Kkb1_5XN81nueTLrpb3Ffkv3EuPgFU,1144
2
- pygeodesy/__init__.py,sha256=C2E8VxEx5MOANjeIZ12lgXtsJSbJdYh1Ee05IkobA1w,42290
2
+ pygeodesy/__init__.py,sha256=eQka0vi00N446lUD8M76mPfU8TsRK4VgBqY0tdqocuk,42285
3
3
  pygeodesy/__main__.py,sha256=HpOBmuhI7yVP1FIAEugvd9Lb54kzew-nM78be0r4SC4,5597
4
4
  pygeodesy/albers.py,sha256=mb3YbVvoBq8a7AytT0HeVxe8DGEvx1KFN2Usl2ksKwk,30908
5
5
  pygeodesy/azimuthal.py,sha256=acwIA1B7jmg1oDpJBuFitnOVHUWRUk7Y73yI8zqIGrc,49854
@@ -14,7 +14,7 @@ pygeodesy/dms.py,sha256=CKXt2EOYFBluQV5q6cFYppJl3dCvvEB_0E84J0ki6ws,42202
14
14
  pygeodesy/ecef.py,sha256=DcWNhnOZC7-Olns9c1XI9p4MmuC00KN5rZ5W1UQVUxw,59009
15
15
  pygeodesy/ecefLocals.py,sha256=zoxGUJeYX2UXzR9r0jaByrvfrrpmrvAhjyQsz433RjA,7794
16
16
  pygeodesy/elevations.py,sha256=WrWPZNgkZX9Ys_1ij_gyE4jzdIv85JYAaR2cK3vc4gQ,10879
17
- pygeodesy/ellipsoidalBase.py,sha256=n6VHIaRZ6UvC1H36qolKxwlHJX5BZysvgE3iir-PunE,55743
17
+ pygeodesy/ellipsoidalBase.py,sha256=UpmJfjAuC7pvN9VIxLXveAmotPVW7oL2APAJUTi34Uc,55711
18
18
  pygeodesy/ellipsoidalBaseDI.py,sha256=PbSJkUUHpRGYgnnciMD-sWqTCReZv_FAc8SUonF3ZbI,38544
19
19
  pygeodesy/ellipsoidalExact.py,sha256=kKnQV3gz293dPowsRx5aI0CJ05a2TWGpEcWoJCxut30,17111
20
20
  pygeodesy/ellipsoidalGeodSolve.py,sha256=w5TubUdqYwvrtxfIwP2Scr1FzISq2szx1HX88TUa42E,17107
@@ -22,17 +22,17 @@ pygeodesy/ellipsoidalKarney.py,sha256=W_Liw5MxTqJJGsxMi50ui8grRSPKwkG2HH-Mv_mXQY
22
22
  pygeodesy/ellipsoidalNvector.py,sha256=HLFjX6o26q2fzVCjLSL0PdEh96xhGtjfzo2V_k54j4A,30146
23
23
  pygeodesy/ellipsoidalVincenty.py,sha256=zeTvid09NGuYJ1WJ__a3ApCBGSzX0A-Rhs8-sQXMNQQ,26273
24
24
  pygeodesy/ellipsoids.py,sha256=v964yZIL2nCc8MJgt3nzV6pczaQsQubXmX_sAh_nrBw,107765
25
- pygeodesy/elliptic.py,sha256=nob5Iby3RIj1tnsZJ1AzzxDLwPJm48M9Cf_kIAwU6l8,45035
25
+ pygeodesy/elliptic.py,sha256=4MdiatI5RZuP9t2nMdmzeoqk37R2U8Ll5SeW5w2wymY,45670
26
26
  pygeodesy/epsg.py,sha256=VIBidzAEuoBF4LdlJ4r3WtpL0Ymhru8kf4fAgfFr5ok,8220
27
27
  pygeodesy/errors.py,sha256=OUEJ51M3c-JH1n0BBbRtPTCDX0I00rH_BQPYSRoKrqo,32043
28
28
  pygeodesy/etm.py,sha256=NDtpmbQmbGieV64iJ-EDIAvD9ryjrW0hiD3wBBtxULk,46744
29
- pygeodesy/fmath.py,sha256=sIN7mW2KOiK0yU93mvmHo1OOTkGxKvwRinvyr_Qdf6I,37689
29
+ pygeodesy/fmath.py,sha256=QLUVgzjTuz2NuoxCdx12T2P7nS_5HPxYf2892278SHU,37788
30
30
  pygeodesy/formy.py,sha256=7-CdPiagdVrbDMjWieX_guN4RvFVCYKOM3yDKSFPRWU,69777
31
31
  pygeodesy/frechet.py,sha256=dBnQ5ePuaUdKv62-e9RfovFDxELsZPQEKMLww9NOf7Q,35588
32
32
  pygeodesy/fstats.py,sha256=M6UOrwmeGp6kjYuYfc6Iq9ibMJAFNm6D4C5GnvlJeuM,28348
33
- pygeodesy/fsums.py,sha256=3pXl8rfDPeKzXHEhtf9qNzBtUme4ckskDx3HWfJbfyg,103988
33
+ pygeodesy/fsums.py,sha256=I2yr6XtQH4Mf4qaiSuta2U_sKc_N0xCc7cIez9YLVo4,104978
34
34
  pygeodesy/gars.py,sha256=AXioT4Lh1cwrd7fF6dHcVJw-9vu2oAnZrzo_ka2Y3Ts,11761
35
- pygeodesy/geodesici.py,sha256=wPUDlRPOcj3MvvWA0CtnZvC30t1onKyZYvR51iCjgks,74891
35
+ pygeodesy/geodesici.py,sha256=V2FW_xQUwm6HfiVoZoBXhipsAV0EjXHnAc_wUG78kAQ,74889
36
36
  pygeodesy/geodesicw.py,sha256=xDxxxr4HOT-8Mh85zD6QZzyO-mfqUavfwQMStYrsF8c,30029
37
37
  pygeodesy/geodsolve.py,sha256=fFlyNlkEOpkJaeddEuKwfhtqaZjmVs0egNGM5cwFFoc,29101
38
38
  pygeodesy/geohash.py,sha256=1P9-k9sMN-ZVFr2iWbQpFi1lg3uNmChHFCIfETkgFJU,40153
@@ -102,18 +102,18 @@ pygeodesy/deprecated/rhumbx.py,sha256=YSzTywlDLfVYZmJjAEi_gLtWbsf4eGxZembaL3wOTu
102
102
  pygeodesy/geodesicx/_C4_24.py,sha256=3OkzOxf0DdO1QL4N9CVYjpOgFCm8FcYjCyvcTLpL2wc,90707
103
103
  pygeodesy/geodesicx/_C4_27.py,sha256=grqtju94Nu9V_eQPqe_7aRbLCYflxRuK127pPOPwuDA,134215
104
104
  pygeodesy/geodesicx/_C4_30.py,sha256=I4ZuTy64yOq1IVgRtc_kqOL0HnKzXeTea7kTFSolcJs,201921
105
- pygeodesy/geodesicx/__init__.py,sha256=KXnzEGNtOtOke01y72dkIgT6sAwOP3zd6wgXho1F3T4,2468
106
- pygeodesy/geodesicx/__main__.py,sha256=ugi6c-4y91WOMJIL0N-wgXhoGhV90QJIFji2MaIGLiA,4329
107
- pygeodesy/geodesicx/gx.py,sha256=MdnQat0Q4b6h9jlsOCsJLpmpiDSU84vgip7Gny9nBlw,60971
108
- pygeodesy/geodesicx/gxarea.py,sha256=1z-CQzi3vEls9Rs-okn003cdR9o_fWtO3lORbk_jpu8,19506
109
- pygeodesy/geodesicx/gxbases.py,sha256=R9IQXwCK6KOPPcxI6qvdDbVcyuqfYJiZy5jcmrfkJ5A,6390
105
+ pygeodesy/geodesicx/__init__.py,sha256=BCF5Wx1dMQMqOTq8YMSjte-osL0fTBzeplVOj4tFA6U,2468
106
+ pygeodesy/geodesicx/__main__.py,sha256=Uz_BTWU3EVjnimhZwIodrNfez-KKiT3NBJhuY10D3o4,4329
107
+ pygeodesy/geodesicx/gx.py,sha256=8xyVSUD9WZXdh0FUi2hg6OQ-A1Wz_puMheVvGeLmrP0,60989
108
+ pygeodesy/geodesicx/gxarea.py,sha256=UgniZh-WGteC86mMT7tWO_AG05gYJ5n4136cCk8hitc,19571
109
+ pygeodesy/geodesicx/gxbases.py,sha256=0e1qYL7AOfTn7FyI8gaB0W_uQaUtFnk8hMcC5HTStl8,6404
110
110
  pygeodesy/geodesicx/gxline.py,sha256=JbFzLraITpW4xoOx8qCEzkF_5z8AgDSywZj0tcSexsg,27873
111
111
  pygeodesy/rhumb/__init__.py,sha256=DsE5a16CUYWE5YTuo1U8mnDCtykuWw7VeGx23Yny_VU,2207
112
112
  pygeodesy/rhumb/aux_.py,sha256=NeHkNLS2ULh3sTb3eBTtmRih9SZNyVJKMtJj7imKkuI,16117
113
113
  pygeodesy/rhumb/bases.py,sha256=P5AQyL-MTbJaO4oKH_Y7qcusQxaHoAii0hJVQ9mT7hU,54250
114
114
  pygeodesy/rhumb/ekx.py,sha256=GMY6ik4fgiRrjek-42cpZxU3U2bdoAcY6ZcbZRckpII,24026
115
115
  pygeodesy/rhumb/solve.py,sha256=z8z_XYObTgz7w1skNLNcLBpe-EO_r0H4sVcZGlBcWnc,24005
116
- pygeodesy-25.5.28.dist-info/METADATA,sha256=fowmWp0l0feRG1MkGeJGcJxfcyDdvoKZu6TrePRyaNY,20102
117
- pygeodesy-25.5.28.dist-info/WHEEL,sha256=Kh9pAotZVRFj97E15yTA4iADqXdQfIVTHcNaZTjxeGM,110
118
- pygeodesy-25.5.28.dist-info/top_level.txt,sha256=cEQPatCXzKZqrivpULC5V5fuy9_V_bAwaP_gUGid7pQ,10
119
- pygeodesy-25.5.28.dist-info/RECORD,,
116
+ pygeodesy-25.7.25.dist-info/METADATA,sha256=l3Vhf9Rra1Q1RsaUfPbDVHlRIpEyUpfzZseoSLAeIYA,20103
117
+ pygeodesy-25.7.25.dist-info/WHEEL,sha256=Kh9pAotZVRFj97E15yTA4iADqXdQfIVTHcNaZTjxeGM,110
118
+ pygeodesy-25.7.25.dist-info/top_level.txt,sha256=cEQPatCXzKZqrivpULC5V5fuy9_V_bAwaP_gUGid7pQ,10
119
+ pygeodesy-25.7.25.dist-info/RECORD,,