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/__init__.py +8 -8
- pygeodesy/ellipsoidalBase.py +52 -58
- pygeodesy/elliptic.py +246 -225
- pygeodesy/fmath.py +6 -4
- pygeodesy/fsums.py +40 -18
- pygeodesy/geodesici.py +3 -3
- pygeodesy/geodesicx/__init__.py +1 -1
- pygeodesy/geodesicx/__main__.py +2 -2
- pygeodesy/geodesicx/gx.py +3 -2
- pygeodesy/geodesicx/gxarea.py +4 -5
- pygeodesy/geodesicx/gxbases.py +3 -2
- {pygeodesy-25.5.28.dist-info → pygeodesy-25.7.25.dist-info}/METADATA +8 -8
- {pygeodesy-25.5.28.dist-info → pygeodesy-25.7.25.dist-info}/RECORD +15 -15
- {pygeodesy-25.5.28.dist-info → pygeodesy-25.7.25.dist-info}/WHEEL +0 -0
- {pygeodesy-25.5.28.dist-info → pygeodesy-25.7.25.dist-info}/top_level.txt +0 -0
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,
|
|
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.
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
|
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}
|
|
1585
|
-
remove
|
|
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
|
|
2707
|
+
_sum = _fsum
|
|
2686
2708
|
except ImportError:
|
|
2687
|
-
_sum = sum
|
|
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
|
-
|
|
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.
|
|
60
|
+
__version__ = '25.06.02'
|
|
61
61
|
|
|
62
62
|
_0t = 0, # int
|
|
63
63
|
_1_1t = -1, +1
|
pygeodesy/geodesicx/__init__.py
CHANGED
pygeodesy/geodesicx/__main__.py
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
pygeodesy/geodesicx/gxarea.py
CHANGED
|
@@ -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.
|
|
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 =
|
|
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)
|
pygeodesy/geodesicx/gxbases.py
CHANGED
|
@@ -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.
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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-
|
|
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.
|
|
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:
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
33
|
+
pygeodesy/fsums.py,sha256=I2yr6XtQH4Mf4qaiSuta2U_sKc_N0xCc7cIez9YLVo4,104978
|
|
34
34
|
pygeodesy/gars.py,sha256=AXioT4Lh1cwrd7fF6dHcVJw-9vu2oAnZrzo_ka2Y3Ts,11761
|
|
35
|
-
pygeodesy/geodesici.py,sha256=
|
|
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=
|
|
106
|
-
pygeodesy/geodesicx/__main__.py,sha256=
|
|
107
|
-
pygeodesy/geodesicx/gx.py,sha256=
|
|
108
|
-
pygeodesy/geodesicx/gxarea.py,sha256=
|
|
109
|
-
pygeodesy/geodesicx/gxbases.py,sha256=
|
|
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.
|
|
117
|
-
pygeodesy-25.
|
|
118
|
-
pygeodesy-25.
|
|
119
|
-
pygeodesy-25.
|
|
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,,
|
|
File without changes
|
|
File without changes
|