pygeodesy 24.10.10__py2.py3-none-any.whl → 24.11.11__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-24.10.10.dist-info → PyGeodesy-24.11.11.dist-info}/METADATA +12 -12
- PyGeodesy-24.11.11.dist-info/RECORD +118 -0
- {PyGeodesy-24.10.10.dist-info → PyGeodesy-24.11.11.dist-info}/WHEEL +1 -1
- pygeodesy/__init__.py +14 -14
- pygeodesy/__main__.py +5 -5
- pygeodesy/albers.py +12 -17
- pygeodesy/azimuthal.py +51 -61
- pygeodesy/basics.py +60 -62
- pygeodesy/booleans.py +87 -79
- pygeodesy/cartesianBase.py +6 -6
- pygeodesy/constants.py +23 -19
- pygeodesy/css.py +7 -8
- pygeodesy/datums.py +3 -3
- pygeodesy/deprecated/__init__.py +1 -1
- pygeodesy/deprecated/classes.py +9 -9
- pygeodesy/deprecated/functions.py +6 -6
- pygeodesy/dms.py +250 -270
- pygeodesy/ecef.py +11 -14
- pygeodesy/ellipsoidalBase.py +106 -121
- pygeodesy/ellipsoidalBaseDI.py +114 -118
- pygeodesy/ellipsoidalExact.py +35 -37
- pygeodesy/ellipsoidalNvector.py +4 -4
- pygeodesy/ellipsoidalVincenty.py +2 -2
- pygeodesy/ellipsoids.py +10 -51
- pygeodesy/elliptic.py +14 -14
- pygeodesy/errors.py +28 -28
- pygeodesy/etm.py +92 -68
- pygeodesy/fmath.py +42 -40
- pygeodesy/formy.py +7 -6
- pygeodesy/fsums.py +72 -51
- pygeodesy/geodesici.py +43 -40
- pygeodesy/geodesicw.py +17 -16
- pygeodesy/geodesicx/__init__.py +2 -2
- pygeodesy/geodesicx/gxarea.py +3 -2
- pygeodesy/geodsolve.py +79 -39
- pygeodesy/geohash.py +2 -2
- pygeodesy/geoids.py +32 -31
- pygeodesy/heights.py +2 -2
- pygeodesy/internals.py +201 -147
- pygeodesy/interns.py +23 -20
- pygeodesy/karney.py +62 -13
- pygeodesy/ktm.py +11 -13
- pygeodesy/latlonBase.py +18 -20
- pygeodesy/lazily.py +210 -218
- pygeodesy/lcc.py +4 -4
- pygeodesy/ltp.py +10 -10
- pygeodesy/ltpTuples.py +74 -75
- pygeodesy/mgrs.py +20 -21
- pygeodesy/named.py +15 -10
- pygeodesy/nvectorBase.py +1 -1
- pygeodesy/osgr.py +9 -12
- pygeodesy/points.py +2 -2
- pygeodesy/props.py +35 -14
- pygeodesy/resections.py +9 -10
- pygeodesy/rhumb/__init__.py +1 -1
- pygeodesy/rhumb/bases.py +5 -5
- pygeodesy/rhumb/solve.py +9 -10
- pygeodesy/simplify.py +5 -5
- pygeodesy/solveBase.py +7 -25
- pygeodesy/sphericalBase.py +20 -23
- pygeodesy/sphericalNvector.py +103 -145
- pygeodesy/sphericalTrigonometry.py +68 -73
- pygeodesy/streprs.py +5 -5
- pygeodesy/trf.py +6 -4
- pygeodesy/triaxials.py +46 -9
- pygeodesy/units.py +5 -4
- pygeodesy/ups.py +6 -6
- pygeodesy/utily.py +2 -2
- pygeodesy/utm.py +7 -7
- pygeodesy/vector2d.py +13 -13
- pygeodesy/vector3d.py +19 -21
- pygeodesy/vector3dBase.py +21 -19
- pygeodesy/webmercator.py +4 -4
- pygeodesy/wgrs.py +4 -4
- PyGeodesy-24.10.10.dist-info/RECORD +0 -118
- {PyGeodesy-24.10.10.dist-info → PyGeodesy-24.11.11.dist-info}/top_level.txt +0 -0
pygeodesy/vector2d.py
CHANGED
|
@@ -12,7 +12,7 @@ from pygeodesy.constants import EPS, EPS0, EPS02, EPS4, INF, INT0, \
|
|
|
12
12
|
_1_0, _1_0_1T, _N_1_0, _2_0, _N_2_0, _4_0
|
|
13
13
|
from pygeodesy.errors import _and, _AssertionError, IntersectionError, NumPyError, \
|
|
14
14
|
PointsError, TriangleError, _xError, _xkwds
|
|
15
|
-
from pygeodesy.fmath import fabs, fdot, hypot, hypot2_, sqrt
|
|
15
|
+
from pygeodesy.fmath import fabs, fdot, fdot_, hypot, hypot2_, sqrt
|
|
16
16
|
from pygeodesy.fsums import _Fsumf_, fsumf_, fsum1f_
|
|
17
17
|
from pygeodesy.interns import NN, _a_, _and_, _b_, _c_, _center_, _coincident_, \
|
|
18
18
|
_colinear_, _COMMASPACE_, _concentric_, _few_, \
|
|
@@ -31,7 +31,7 @@ from contextlib import contextmanager
|
|
|
31
31
|
# from math import fabs, sqrt # from .fmath
|
|
32
32
|
|
|
33
33
|
__all__ = _ALL_LAZY.vector2d
|
|
34
|
-
__version__ = '24.
|
|
34
|
+
__version__ = '24.11.10'
|
|
35
35
|
|
|
36
36
|
_cA_ = 'cA'
|
|
37
37
|
_cB_ = 'cB'
|
|
@@ -175,7 +175,7 @@ def _circin6(point1, point2, point3, eps=EPS4, useZ=True, dLL3=False, **Vector_k
|
|
|
175
175
|
C = V(c.x, c.y, c.z, **V_kwds)
|
|
176
176
|
return c, C
|
|
177
177
|
|
|
178
|
-
t, p1, p2, p3 =
|
|
178
|
+
t, p1, p2, p3 = _radii11ABC4(point1, point2, point3, useZ=useZ)
|
|
179
179
|
V, r1, r2, r3 = point1.classof, t.rA, t.rB, t.rC
|
|
180
180
|
|
|
181
181
|
c1, cA = _contact2(t.a, p2, r2, p3, r3, V, _xkwds(Vector_kwds, name=_cA_))
|
|
@@ -251,8 +251,8 @@ def circum4(points, useZ=True, **Vector_and_kwds):
|
|
|
251
251
|
@kwarg useZ: If C{True}, use the points' Z component, otherwise force C{z=INT0}
|
|
252
252
|
(C{bool}).
|
|
253
253
|
@kwarg Vector_and_kwds: Optional class C{B{Vector}=None} to return the center point
|
|
254
|
-
and
|
|
255
|
-
the
|
|
254
|
+
and optionally, additional B{C{Vector}} keyword arguments, otherwise
|
|
255
|
+
the B{C{points}}' (sub-)class.
|
|
256
256
|
|
|
257
257
|
@return: L{Circum4Tuple}C{(radius, center, rank, residuals)} with C{center} an
|
|
258
258
|
instance of C{B{points}[0]}' (sub-)class or B{C{Vector}} if specified.
|
|
@@ -509,12 +509,12 @@ def radii11(point1, point2, point3, useZ=True):
|
|
|
509
509
|
U{Tangent Circles<https://MathWorld.Wolfram.com/TangentCircles.html>}.
|
|
510
510
|
'''
|
|
511
511
|
try:
|
|
512
|
-
return
|
|
512
|
+
return _radii11ABC4(point1, point2, point3, useZ=useZ)[0]
|
|
513
513
|
except (TypeError, ValueError) as x:
|
|
514
514
|
raise _xError(x, point1=point1, point2=point2, point3=point3)
|
|
515
515
|
|
|
516
516
|
|
|
517
|
-
def
|
|
517
|
+
def _radii11ABC4(point1, point2, point3, useZ=True):
|
|
518
518
|
# (INTERNAL) Tangent, Circum, Incircle, Soddy radii, sides and semi-perimeter
|
|
519
519
|
A = _otherV3d(useZ=useZ, point1=point1, NN_OK=False)
|
|
520
520
|
B = _otherV3d(useZ=useZ, point2=point2, NN_OK=False)
|
|
@@ -589,7 +589,7 @@ def soddy4(point1, point2, point3, eps=EPS4, useZ=True):
|
|
|
589
589
|
@see: Functions L{radii11} and L{circum3} and U{Soddy Circles
|
|
590
590
|
<https://MathWorld.Wolfram.com/SoddyCircles.html>}.
|
|
591
591
|
'''
|
|
592
|
-
t, p1, p2, p3 =
|
|
592
|
+
t, p1, p2, p3 = _radii11ABC4(point1, point2, point3, useZ=useZ)
|
|
593
593
|
|
|
594
594
|
r = t.riS
|
|
595
595
|
c, d = _tricenter3d2(p1, t.rA + r,
|
|
@@ -685,8 +685,8 @@ def trilaterate2d2(x1, y1, radius1, x2, y2, radius2, x3, y3, radius3,
|
|
|
685
685
|
@kwarg eps: Tolerance to check the trilaterated point I{delta} on
|
|
686
686
|
all 3 circles (C{scalar}) or C{None} for no checking.
|
|
687
687
|
@kwarg Vector_and_kwds: Optional class C{B{Vector}=None} to return
|
|
688
|
-
|
|
689
|
-
|
|
688
|
+
the trilateration and optionally, additional B{C{Vector}}
|
|
689
|
+
keyword arguments).
|
|
690
690
|
|
|
691
691
|
@return: Trilaterated point as C{B{Vector}(x, y, **B{Vector_kwds})}
|
|
692
692
|
or L{Vector2Tuple}C{(x, y)} if C{B{Vector} is None}.
|
|
@@ -742,14 +742,14 @@ def _trilaterate2d2(x1, y1, radius1, x2, y2, radius2, x3, y3, radius3,
|
|
|
742
742
|
raise IntersectionError(_and(_astr(x3=x3, y3=y3, radius3=r3),
|
|
743
743
|
_astr(x1=x1, y1=y1, radius1=r1)), txt=t)
|
|
744
744
|
|
|
745
|
-
q = (a
|
|
745
|
+
q = fdot_(a, e, -b, d) * _2_0
|
|
746
746
|
if isnear0(q):
|
|
747
747
|
t = _no_(_intersection_)
|
|
748
748
|
raise IntersectionError(_and(_astr(x1=x1, y1=y1, radius1=r1),
|
|
749
749
|
_astr(x2=x2, y2=y2, radius2=r2),
|
|
750
750
|
_astr(x3=x3, y3=y3, radius3=r3)), txt=t)
|
|
751
|
-
t = Vector2Tuple((c
|
|
752
|
-
(a
|
|
751
|
+
t = Vector2Tuple(fdot_(c, e, -b, f) / q,
|
|
752
|
+
fdot_(a, f, -c, d) / q, name=trilaterate2d2.__name__)
|
|
753
753
|
|
|
754
754
|
if eps and eps > 0: # check distances to center vs radius
|
|
755
755
|
for x, y, r in ((x1, y1, r1), (x2, y2, r2), (x3, y3, r3)):
|
pygeodesy/vector3d.py
CHANGED
|
@@ -31,7 +31,7 @@ from pygeodesy.vector3dBase import Vector3dBase
|
|
|
31
31
|
# from math import fabs, sqrt # from .fmath
|
|
32
32
|
|
|
33
33
|
__all__ = _ALL_LAZY.vector3d
|
|
34
|
-
__version__ = '24.
|
|
34
|
+
__version__ = '24.11.11'
|
|
35
35
|
|
|
36
36
|
_vector2d = _MODS.into(vector2d=__name__)
|
|
37
37
|
|
|
@@ -272,7 +272,7 @@ class Vector3d(Vector3dBase):
|
|
|
272
272
|
Circles<https://MathWorld.Wolfram.com/TangentCircles.html>}.
|
|
273
273
|
'''
|
|
274
274
|
try:
|
|
275
|
-
return _vector2d.
|
|
275
|
+
return _vector2d._radii11ABC4(self, point2, point3, useZ=True)[0]
|
|
276
276
|
except (TypeError, ValueError) as x:
|
|
277
277
|
raise _xError(x, point=self, point2=point2, point3=point3)
|
|
278
278
|
|
|
@@ -497,17 +497,16 @@ def intersection3d3(start1, end1, start2, end2, eps=EPS, useZ=True,
|
|
|
497
497
|
B{C{start2}} (Ccompass C{degrees}).
|
|
498
498
|
@kwarg eps: Tolerance for skew line distance and length (C{EPS}).
|
|
499
499
|
@kwarg useZ: If C{True}, use the Z components, otherwise force C{z=INT0} (C{bool}).
|
|
500
|
-
@kwarg Vector_and_kwds: Optional class C{B{Vector}=None} to return the
|
|
501
|
-
|
|
502
|
-
|
|
500
|
+
@kwarg Vector_and_kwds: Optional class C{B{Vector}=None} to return the intersection
|
|
501
|
+
points and optional, additional B{C{Vector}} keyword arguments,
|
|
502
|
+
otherwise B{C{start1}}'s (sub-)class.
|
|
503
503
|
|
|
504
|
-
@return: An L{Intersection3Tuple}C{(point, outside1, outside2)} with
|
|
505
|
-
|
|
504
|
+
@return: An L{Intersection3Tuple}C{(point, outside1, outside2)} with C{point}
|
|
505
|
+
an instance of B{C{Vector}} or B{C{start1}}'s (sub-)class.
|
|
506
506
|
|
|
507
507
|
@note: The C{outside} values is C{0} for lines specified by point and bearing.
|
|
508
508
|
|
|
509
|
-
@raise IntersectionError: Invalid, skew, non-co-planar or otherwise
|
|
510
|
-
non-intersecting lines.
|
|
509
|
+
@raise IntersectionError: Invalid, skew, non-co-planar or otherwise non-intersecting lines.
|
|
511
510
|
|
|
512
511
|
@see: U{Line-line intersection<https://MathWorld.Wolfram.com/Line-LineIntersection.html>}
|
|
513
512
|
and U{line-line distance<https://MathWorld.Wolfram.com/Line-LineDistance.html>},
|
|
@@ -538,9 +537,9 @@ def intersections2(center1, radius1, center2, radius2, sphere=True, **Vector_and
|
|
|
538
537
|
@kwarg sphere: If C{True}, compute the center and radius of the intersection of
|
|
539
538
|
two spheres. If C{False}, ignore the C{z}-component and compute
|
|
540
539
|
the intersection of two circles (C{bool}).
|
|
541
|
-
@kwarg Vector_and_kwds: Optional class C{B{Vector}=None} to return the
|
|
542
|
-
|
|
543
|
-
|
|
540
|
+
@kwarg Vector_and_kwds: Optional class C{B{Vector}=None} to return the intersection
|
|
541
|
+
points and optionally, additional B{C{Vector}} keyword arguments,
|
|
542
|
+
otherwise B{C{center1}}'s (sub-)class.
|
|
544
543
|
|
|
545
544
|
@return: If C{B{sphere} is True}, a 2-tuple of the C{center} and C{radius} of the
|
|
546
545
|
intersection of the I{spheres}. For abutting circles, C{radius} is C{0.0}
|
|
@@ -725,12 +724,12 @@ def nearestOn6(point, points, closed=False, useZ=True, **Vector_and_kwds): # ep
|
|
|
725
724
|
@kwarg closed: Optionally, close the path or polygon (C{bool}).
|
|
726
725
|
@kwarg useZ: If C{True}, use the Z components, otherwise force C{z=INT0} (C{bool}).
|
|
727
726
|
@kwarg Vector_and_kwds: Optional class C{B{Vector}=None} to return the closest
|
|
728
|
-
|
|
729
|
-
|
|
727
|
+
point and optionally, additional B{C{Vector}} keyword arguments,
|
|
728
|
+
otherwise B{C{point}}'s (sub-)class.
|
|
730
729
|
|
|
731
730
|
@return: A L{NearestOn6Tuple}C{(closest, distance, fi, j, start, end)} with the
|
|
732
731
|
C{closest}, the C{start} and the C{end} point each an instance of the
|
|
733
|
-
B{C{Vector}} keyword argument
|
|
732
|
+
B{C{Vector}} keyword argument or if {B{Vector}=None} or not specified,
|
|
734
733
|
an instance of the reference B{C{point}}'s (sub-)class.
|
|
735
734
|
|
|
736
735
|
@raise PointsError: Insufficient number of B{C{points}}
|
|
@@ -854,17 +853,16 @@ def trilaterate3d2(center1, radius1, center2, radius2, center3, radius3,
|
|
|
854
853
|
and C{z}).
|
|
855
854
|
@kwarg eps: Pertubation tolerance (C{scalar}), same units as C{x},
|
|
856
855
|
C{y} and C{z} or C{None} for no pertubations.
|
|
857
|
-
@kwarg Vector_and_kwds: Optional class C{B{Vector}=None} to return
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
the B{C{center1}}'s (sub-)class.
|
|
856
|
+
@kwarg Vector_and_kwds: Optional class C{B{Vector}=None} to return the
|
|
857
|
+
trilateration and optionally, additional B{C{Vector}}
|
|
858
|
+
keyword arguments, otherwise B{C{center1}}'s (sub-)class.
|
|
861
859
|
|
|
862
860
|
@return: 2-Tuple with two trilaterated points, each a B{C{Vector}}
|
|
863
861
|
instance. Both points are the same instance if all three
|
|
864
862
|
spheres abut/intersect in a single point.
|
|
865
863
|
|
|
866
|
-
@raise ImportError: Package C{numpy} not found, not installed or
|
|
867
|
-
|
|
864
|
+
@raise ImportError: Package C{numpy} not found, not installed or older
|
|
865
|
+
than version 1.10.
|
|
868
866
|
|
|
869
867
|
@raise IntersectionError: Near-concentric, -colinear, too distant or
|
|
870
868
|
non-intersecting spheres.
|
pygeodesy/vector3dBase.py
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
u'''(INTERNAL) Private, 3-D vector base class C{Vector3dBase}.
|
|
5
5
|
|
|
6
6
|
A pure Python implementation of vector-based functions by I{(C) Chris Veness
|
|
7
|
-
2011-
|
|
7
|
+
2011-2024} published under the same MIT Licence**, see U{Vector-based geodesy
|
|
8
8
|
<https://www.Movable-Type.co.UK/scripts/latlong-vectors.html>}.
|
|
9
9
|
'''
|
|
10
10
|
|
|
@@ -14,10 +14,9 @@ from pygeodesy.constants import EPS, EPS0, INT0, PI, PI2, _copysignINF, \
|
|
|
14
14
|
_float0, isnear0, isnear1, isneg0, \
|
|
15
15
|
_pos_self, _1_0
|
|
16
16
|
from pygeodesy.errors import CrossError, VectorError, _xcallable, _xError
|
|
17
|
-
from pygeodesy.fmath import euclid_, fdot, hypot_, hypot2_
|
|
17
|
+
from pygeodesy.fmath import euclid_, fdot, fdot_, hypot_, hypot2_ # _MODS.fmath.fma
|
|
18
18
|
from pygeodesy.interns import _coincident_, _colinear_, _COMMASPACE_, _xyz_
|
|
19
|
-
from pygeodesy.lazily import _ALL_LAZY, _ALL_DOCS, _ALL_MODS as _MODS
|
|
20
|
-
_sys_version_info2
|
|
19
|
+
from pygeodesy.lazily import _ALL_LAZY, _ALL_DOCS, _ALL_MODS as _MODS
|
|
21
20
|
from pygeodesy.named import _NamedBase, _NotImplemented, _xother3
|
|
22
21
|
# from pygeodesy.namedTuples import Vector3Tuple # _MODS
|
|
23
22
|
from pygeodesy.props import deprecated_method, Property, Property_RO, \
|
|
@@ -29,7 +28,7 @@ from pygeodesy.utily import sincos2, atan2, fabs
|
|
|
29
28
|
from math import ceil as _ceil, floor as _floor, trunc as _trunc
|
|
30
29
|
|
|
31
30
|
__all__ = _ALL_LAZY.vector3dBase
|
|
32
|
-
__version__ = '24.
|
|
31
|
+
__version__ = '24.11.10'
|
|
33
32
|
|
|
34
33
|
|
|
35
34
|
class Vector3dBase(_NamedBase): # sync __methods__ with .fsums.Fsum
|
|
@@ -142,10 +141,6 @@ class Vector3dBase(_NamedBase): # sync __methods__ with .fsums.Fsum
|
|
|
142
141
|
'''Not implemented.'''
|
|
143
142
|
return _NotImplemented(self, other)
|
|
144
143
|
|
|
145
|
-
def __format__(self, *other): # PYCHOK no cover
|
|
146
|
-
'''Not implemented.'''
|
|
147
|
-
return _NotImplemented(self, *other)
|
|
148
|
-
|
|
149
144
|
def __ge__(self, other):
|
|
150
145
|
'''Is this vector longer than or equal to an other vector?
|
|
151
146
|
|
|
@@ -421,7 +416,7 @@ class Vector3dBase(_NamedBase): # sync __methods__ with .fsums.Fsum
|
|
|
421
416
|
'''
|
|
422
417
|
return self._mapped(_trunc)
|
|
423
418
|
|
|
424
|
-
if
|
|
419
|
+
if _MODS.sys_version_info2 < (3, 0): # PYCHOK no cover
|
|
425
420
|
# <https://docs.Python.org/2/library/operator.html#mapping-operators-to-functions>
|
|
426
421
|
__div__ = __truediv__
|
|
427
422
|
__idiv__ = __itruediv__
|
|
@@ -505,9 +500,9 @@ class Vector3dBase(_NamedBase): # sync __methods__ with .fsums.Fsum
|
|
|
505
500
|
'''
|
|
506
501
|
X, Y, Z = self.others(other).xyz3
|
|
507
502
|
x, y, z = self.xyz3
|
|
508
|
-
xyz = ((y
|
|
509
|
-
(z
|
|
510
|
-
(x
|
|
503
|
+
xyz = (fdot_(y, Z, -z, Y),
|
|
504
|
+
fdot_(z, X, -x, Z),
|
|
505
|
+
fdot_(x, Y, -y, X))
|
|
511
506
|
|
|
512
507
|
if raiser and self.crosserrors and eps0 > 0 \
|
|
513
508
|
and max(map(fabs, xyz)) < eps0:
|
|
@@ -824,11 +819,12 @@ class Vector3dBase(_NamedBase): # sync __methods__ with .fsums.Fsum
|
|
|
824
819
|
'''
|
|
825
820
|
return self._plus(*_xyz3(self.plus_, other_x, *y_z))
|
|
826
821
|
|
|
827
|
-
def rotate(self, axis, theta):
|
|
822
|
+
def rotate(self, axis, theta, fma=False):
|
|
828
823
|
'''Rotate this vector around an axis by a specified angle.
|
|
829
824
|
|
|
830
825
|
@arg axis: The axis being rotated around (L{Vector3d}).
|
|
831
826
|
@arg theta: The angle of rotation (C{radians}).
|
|
827
|
+
@kwarg fma: If C{True}, use fused-multiply-add (C{bool}).
|
|
832
828
|
|
|
833
829
|
@return: New, rotated vector (L{Vector3d}).
|
|
834
830
|
|
|
@@ -847,17 +843,23 @@ class Vector3dBase(_NamedBase): # sync __methods__ with .fsums.Fsum
|
|
|
847
843
|
bx, by, bz = r.times(d).xyz3
|
|
848
844
|
sx, sy, sz = r.times(s).xyz3
|
|
849
845
|
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
846
|
+
if fma:
|
|
847
|
+
_fma = _MODS.fmath.fma
|
|
848
|
+
else:
|
|
849
|
+
def _fma(a, b, c):
|
|
850
|
+
return a * b + c
|
|
851
|
+
|
|
852
|
+
x = fdot(p, _fma(ax, bx, c), _fma(ax, by, -sz), _fma(ax, bz, sy))
|
|
853
|
+
y = fdot(p, _fma(ay, bx, sz), _fma(ay, by, c), _fma(ay, bz, -sx))
|
|
854
|
+
z = fdot(p, _fma(az, bx, -sy), _fma(az, by, sx), _fma(az, bz, c))
|
|
853
855
|
else: # unrotated
|
|
854
856
|
x, y, z = self.xyz3
|
|
855
857
|
return self.classof(x, y, z)
|
|
856
858
|
|
|
857
859
|
@deprecated_method
|
|
858
|
-
def rotateAround(self, axis, theta):
|
|
860
|
+
def rotateAround(self, axis, theta):
|
|
859
861
|
'''DEPRECATED, use method C{rotate}.'''
|
|
860
|
-
return self.rotate(axis, theta)
|
|
862
|
+
return self.rotate(axis, theta) # PYCHOK no cover
|
|
861
863
|
|
|
862
864
|
def times(self, factor):
|
|
863
865
|
'''Multiply this vector by a scalar.
|
pygeodesy/webmercator.py
CHANGED
|
@@ -36,7 +36,7 @@ from pygeodesy.utily import degrees90, degrees180
|
|
|
36
36
|
from math import atan, atanh, exp, radians, sin, tanh
|
|
37
37
|
|
|
38
38
|
__all__ = _ALL_LAZY.webmercator
|
|
39
|
-
__version__ = '24.
|
|
39
|
+
__version__ = '24.11.06'
|
|
40
40
|
|
|
41
41
|
# _FalseEasting = 0 # false Easting (C{meter})
|
|
42
42
|
# _FalseNorthing = 0 # false Northing (C{meter})
|
|
@@ -314,10 +314,10 @@ def toWm(latlon, lon=None, earth=R_MA, Wm=Wm, **name_Wm_kwds_radius):
|
|
|
314
314
|
L{a_f2Tuple}, L{Ellipsoid} or L{Ellipsoid2}), overridden
|
|
315
315
|
by B{C{latlon}}'s datum if present.
|
|
316
316
|
@kwarg Wm: Optional class to return the WM coordinate (L{Wm}) or C{None}.
|
|
317
|
-
@kwarg name_Wm_kwds_radius: Optional C{B{name}=NN} (C{str}),
|
|
317
|
+
@kwarg name_Wm_kwds_radius: Optional C{B{name}=NN} (C{str}), optionally,
|
|
318
318
|
additional B{C{Wm}} keyword arguments, ignored if C{B{Wm} is
|
|
319
|
-
None} and DEPRECATED keyword argument C{B{radius}=earth},
|
|
320
|
-
|
|
319
|
+
None} and DEPRECATED keyword argument C{B{radius}=earth}, use
|
|
320
|
+
B{C{earth}}.
|
|
321
321
|
|
|
322
322
|
@return: The WM coordinate (B{C{Wm}}) or if C{B{Wm} is None}, an
|
|
323
323
|
L{EasNorRadius3Tuple}C{(easting, northing, radius)}.
|
pygeodesy/wgrs.py
CHANGED
|
@@ -32,7 +32,7 @@ from pygeodesy.utily import ft2m, m2ft, m2NM
|
|
|
32
32
|
from math import floor
|
|
33
33
|
|
|
34
34
|
__all__ = _ALL_LAZY.wgrs
|
|
35
|
-
__version__ = '24.
|
|
35
|
+
__version__ = '24.11.06'
|
|
36
36
|
|
|
37
37
|
_Base = 10
|
|
38
38
|
_BaseLen = 4
|
|
@@ -212,9 +212,9 @@ class Georef(Str):
|
|
|
212
212
|
|
|
213
213
|
@kwarg LatLon: Class to use (C{LatLon}) or C{None}.
|
|
214
214
|
@kwarg height: Optional height (C{meter}), overriding this height.
|
|
215
|
-
@kwarg name_LatLon_kwds: Optional C{B{name}=NN} (C{str}) and
|
|
216
|
-
additional B{C{LatLon}} keyword arguments, ignored if
|
|
217
|
-
|
|
215
|
+
@kwarg name_LatLon_kwds: Optional C{B{name}=NN} (C{str}) and optionally,
|
|
216
|
+
additional B{C{LatLon}} keyword arguments, ignored if C{B{LatLon}
|
|
217
|
+
is None}.
|
|
218
218
|
|
|
219
219
|
@return: This georef location (B{C{LatLon}}) or if C{B{LatLon} is None},
|
|
220
220
|
a L{LatLon3Tuple}C{(lat, lon, height)}.
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
pygeodesy/LICENSE,sha256=YfgAiyxOwY6P9Kkb1_5XN81nueTLrpb3Ffkv3EuPgFU,1144
|
|
2
|
-
pygeodesy/__init__.py,sha256=44KoRZEfeBEA_093Z9NhDUB-NZ2etmdLYWMcKPEtj30,42477
|
|
3
|
-
pygeodesy/__main__.py,sha256=OupAiDFT_RXFw1Lh6C8bVG9NaonV_Wy6jibN_hA4aJg,5442
|
|
4
|
-
pygeodesy/albers.py,sha256=JXqeWAteV2N601e5R-D7bCsa8qAYv3oWm7M3R4uszXM,31078
|
|
5
|
-
pygeodesy/azimuthal.py,sha256=erI5DTM0-Nr5YC2LnBTVNbUKlrnnXJUwKe0SCQ7-Soc,50223
|
|
6
|
-
pygeodesy/basics.py,sha256=JPANq5maTBqd4PhHIO4TLCfl9SG0D0n6OiUF421p1bQ,30163
|
|
7
|
-
pygeodesy/booleans.py,sha256=gEh1bWdHEoSv-4yp0M9JE73xa4DLwLllgKC9d0mNLwM,73460
|
|
8
|
-
pygeodesy/cartesianBase.py,sha256=jzPJR4_3Yp5jmK7A5inGOXskDebs7YMdjQzINHjzkP8,46935
|
|
9
|
-
pygeodesy/clipy.py,sha256=hzI6IutTRkbssjPPgAjXv9OcgCIIZchjnMWaHin4YAU,27728
|
|
10
|
-
pygeodesy/constants.py,sha256=E3ANfteZK05I89wbGP4Noxms0pT2TKBOyaVSv8jmlxg,19673
|
|
11
|
-
pygeodesy/css.py,sha256=rPr5EcGm_blVt72h-851ytpVxdPhx1MEqqGs3Ppx3eI,25651
|
|
12
|
-
pygeodesy/datums.py,sha256=-m9-cvUVOaJ92eeFgc3O54lel3WqnVYcS7o6WCXkNyw,34043
|
|
13
|
-
pygeodesy/dms.py,sha256=QxiRtyc8QSiW-egm6Mrcrgmi_deWz3YnYwIm82JS4TU,44443
|
|
14
|
-
pygeodesy/ecef.py,sha256=_yy_TIUGsXmEZ7aRcmchbJwTp7x__edx6EPiS3Xznes,59587
|
|
15
|
-
pygeodesy/elevations.py,sha256=4FuVcVNb_D09gmcvUlck344N4f7Jms76SIRrdutvKjk,10801
|
|
16
|
-
pygeodesy/ellipsoidalBase.py,sha256=IDu0-cKGhkCk3Aj16DJXt2gxjGYsFcjSTrvwG5GbATs,55385
|
|
17
|
-
pygeodesy/ellipsoidalBaseDI.py,sha256=wsUcdVdp1Tcs8IOS6bM773tAShIOqt_yscRFU2oiehI,38397
|
|
18
|
-
pygeodesy/ellipsoidalExact.py,sha256=wmIGgZyd0cvjswP4KOeDuEcuagjwQQRRq1cmseRoD-Q,16946
|
|
19
|
-
pygeodesy/ellipsoidalGeodSolve.py,sha256=fAT4b3HXkM6i1W_C0rb4vbSxZqr4c6rS7PIvGF2ad7s,16666
|
|
20
|
-
pygeodesy/ellipsoidalKarney.py,sha256=qvJa8kZ4SgaRR2UbjtkcRxw_CRbwhXoUT4Dn_6DJ6Ag,18721
|
|
21
|
-
pygeodesy/ellipsoidalNvector.py,sha256=rzjFx-y1Z2apUK4yYelcZMYelYFTU-diFGI6o-nxkUk,30039
|
|
22
|
-
pygeodesy/ellipsoidalVincenty.py,sha256=hSQ7s6QGDJSsrZvP7KwM1Q4wJz0YjyFjODF6XPGZ5WQ,25946
|
|
23
|
-
pygeodesy/ellipsoids.py,sha256=i7piclEb17hYt5wqL7Q0p5qLuRVvz3yonUSUcvmiozc,108005
|
|
24
|
-
pygeodesy/elliptic.py,sha256=M30EjB1Il_5Y8E94rN5hz4zPhYBQNoCo5Lj0TvCkiRE,45010
|
|
25
|
-
pygeodesy/epsg.py,sha256=Vq_M1g7Z0x5Noqsmt6OCQkPdYJj4jpWObtixL5pAjDA,8220
|
|
26
|
-
pygeodesy/errors.py,sha256=ATfeHd7mnox2MQ1xxEMLCY5d6hKH7h86iBR-CzVWfS4,32042
|
|
27
|
-
pygeodesy/etm.py,sha256=G6dtN1LQAoft5mcUoxVgxHPnl9s8NBsXl-IlS8WP7jo,45328
|
|
28
|
-
pygeodesy/fmath.py,sha256=acNpvowoCYKH6bmg6KWOTGHE4qVE6yam80niXQoQrKk,36484
|
|
29
|
-
pygeodesy/formy.py,sha256=FvbkYhJ-iIOFR-IOImwm0I_dgXM9CfnWrJK_IvBX0SU,75082
|
|
30
|
-
pygeodesy/frechet.py,sha256=F6TYbOEYSOFcll6nvp4GhqafUWXh1umAKb1QaMYQtuM,34372
|
|
31
|
-
pygeodesy/fstats.py,sha256=8Vn1cwlgCQD444WX8FfAEC-AXQcJDeI9_i14Mizp59U,28288
|
|
32
|
-
pygeodesy/fsums.py,sha256=p08RcOrs8kpVeG4GXLyfywP6GEU7vFNr9rdKOj9Er44,102945
|
|
33
|
-
pygeodesy/gars.py,sha256=KRlyZUv1euEl7ZkDYSZG913GAfFMRG2m2hp37ObYY_Y,11829
|
|
34
|
-
pygeodesy/geodesici.py,sha256=I9e7saiO5lRodOXJk5DSQxladVcGfT0FR6KJSJVCw7Y,75015
|
|
35
|
-
pygeodesy/geodesicw.py,sha256=oEs96Epw839BH3rVpxVdpXuQRBudbOftUsSBUid8fcc,28710
|
|
36
|
-
pygeodesy/geodsolve.py,sha256=_Vlb1c3j8n7dW99AinJ2HA_DiV4YnlRjbBY7Ha8AvEk,23553
|
|
37
|
-
pygeodesy/geohash.py,sha256=CHJUhvV26PLpjkaTwF4fS42ZRSSsnpH2zyGvadPxqG4,40201
|
|
38
|
-
pygeodesy/geoids.py,sha256=EWKfkmdl2GSL0eQCr79ndDwSGXYOPChGokxocCy7YuM,82371
|
|
39
|
-
pygeodesy/hausdorff.py,sha256=-aKtRbMefDSoIk4V3wCvNrXPZ7Bqk1P6-XuGuI7o8Zc,34770
|
|
40
|
-
pygeodesy/heights.py,sha256=Gv3b1xC7I0tBvTO-DdmWVW8A3ZV3RKxY3jveUUZso38,42909
|
|
41
|
-
pygeodesy/internals.py,sha256=QgxNtfirxCsfQCrnLiIWjVVhI70YF9jT4tQrl6K1tp4,22551
|
|
42
|
-
pygeodesy/interns.py,sha256=XvNyWODsUd8_vBLX9XLmcU9Bq97L0nahhF-gvLivzKA,23278
|
|
43
|
-
pygeodesy/iters.py,sha256=xPH0ytomvJeKHu717Fjzi3QbRrEikO6n7vqkY_IDz1k,20311
|
|
44
|
-
pygeodesy/karney.py,sha256=ZkZhbsieGnr2cAIXjzmK-9OJdh72Hjp6Hya1wIoVP3c,38913
|
|
45
|
-
pygeodesy/ktm.py,sha256=eUWYKhoPou1AiWiNz-xI8eDr-q-RvKDY6newAmYP26Q,27239
|
|
46
|
-
pygeodesy/latlonBase.py,sha256=kCK6IcVg4oeGPYkIU0rgKbZLCRo36wC9NtY5OKBlpeQ,79106
|
|
47
|
-
pygeodesy/lazily.py,sha256=NpWnTIAOkIxMorgUMvyR7d3D65-55DqaU98eBnwxcrQ,47411
|
|
48
|
-
pygeodesy/lcc.py,sha256=oDooTzFHnqsMtSKmmmfEbypHpdlPltfo7Mt0pAO4-_A,25669
|
|
49
|
-
pygeodesy/ltp.py,sha256=ZMdfJHLKeDHSoymmjWfoAZTtrdoADf0O6WccRf53L2w,50745
|
|
50
|
-
pygeodesy/ltpTuples.py,sha256=oNTxtjxmHveMDQvPdQCHl-JzSJJGb1jFRrF8SEG_Ojw,58480
|
|
51
|
-
pygeodesy/mgrs.py,sha256=B3_BATbbCwBXKcxRtyX4PKScyWl0SmhAeXF8CVoc0_A,29903
|
|
52
|
-
pygeodesy/named.py,sha256=-uqZk54BC4rFtuVh4LwfWty704DVPLEIwI1EzpNImIg,52350
|
|
53
|
-
pygeodesy/namedTuples.py,sha256=e0rV1Zb2tbx8fztXcSkUFsRTmZtye8B5i_Hi4vBUndU,28758
|
|
54
|
-
pygeodesy/nvectorBase.py,sha256=rClYu26Bof9DsM1F60i0eccktNo8xYA_vkThwoY7N4o,28644
|
|
55
|
-
pygeodesy/osgr.py,sha256=3Qon_oWuVrIb1vYnd3ae3L5MDkjp_tngyVdiYHuL4to,30821
|
|
56
|
-
pygeodesy/points.py,sha256=vtPQdL2kLOenIrpOdGjOYrUWsav3I1JXQEJugMv46eY,64383
|
|
57
|
-
pygeodesy/props.py,sha256=3BIkcaEDwyhSMJle6ufBaji0R0FrD64G3nuR4tPsnrU,23819
|
|
58
|
-
pygeodesy/resections.py,sha256=IrPHAHbF9JdBgAVd9LMgXoPgPFRkY8j1G7p0P8y8pdc,43543
|
|
59
|
-
pygeodesy/simplify.py,sha256=vkOtO478sOjZHZBuSFvCaRh72qSDQuzXLQpMK1LKyYI,25232
|
|
60
|
-
pygeodesy/solveBase.py,sha256=oI_-FFjSPI1_yQ598hF6HFKUa4tLsAfbnWtKoQ-TJgE,19206
|
|
61
|
-
pygeodesy/sphericalBase.py,sha256=bDVuArfePzqcothiTTkyisUGrMDTallXKROjihotcn8,32239
|
|
62
|
-
pygeodesy/sphericalNvector.py,sha256=Ip0jPv-MXBoHf3f-uXitGqiMz2xynDtE15OSJEl268Q,56913
|
|
63
|
-
pygeodesy/sphericalTrigonometry.py,sha256=cfXuJaJJ6jrJZxQ5anFHhz3ZbgkAB7aiMfuyMtJXqsE,64064
|
|
64
|
-
pygeodesy/streprs.py,sha256=owtyWBlieE4SOuS3Aa7D6-lzYf2mtmJ7PYs351fAGJ4,23453
|
|
65
|
-
pygeodesy/trf.py,sha256=CRFHmu0lFNtc41fddXavEkHmgnTFWEqR4RTFodcFKsw,119022
|
|
66
|
-
pygeodesy/triaxials.py,sha256=a9vdXmSqUXOneL0WpLriEFwNMW9EB6MpVbKYXuw_wi8,62562
|
|
67
|
-
pygeodesy/units.py,sha256=gHN-uzsOwIYjyhtWs0th0VHNY-fOiUiZo9G1cZi0oXg,35272
|
|
68
|
-
pygeodesy/unitsBase.py,sha256=ZZ-VDntCOTjSerQJf9aaLE_J0lozrpmUhynRBaCtg24,14060
|
|
69
|
-
pygeodesy/ups.py,sha256=zapIvzoVuj_FDGC6sr8O8ynPhfqXwUg-EFCVnJdM9Eo,23329
|
|
70
|
-
pygeodesy/utily.py,sha256=Zb6L9unzHHhp67znmQLLdizvyX6p4eczR1PDtcyWH-s,36189
|
|
71
|
-
pygeodesy/utm.py,sha256=lCp7mNEaJNrAYnbdPaNUKkhbsX_GdssTEkp68uYdMLI,31091
|
|
72
|
-
pygeodesy/utmups.py,sha256=g2Z_aEOt6fhV9f4fASlW4_K_O_P4zBsBbWfQV11mIKo,13196
|
|
73
|
-
pygeodesy/utmupsBase.py,sha256=S4s1Sehj9jSMy-XRxwtwVstG3QhyVt924V0FHu0cPIk,18730
|
|
74
|
-
pygeodesy/vector2d.py,sha256=O9a3uRIREL2k7G-pnpuacjBcAlKg75MnokjtfJB-nBs,39659
|
|
75
|
-
pygeodesy/vector3d.py,sha256=PaiuJgHCf0bO8nhOai42ut2zk0_DskSNCrOtCuHxw6U,42673
|
|
76
|
-
pygeodesy/vector3dBase.py,sha256=UOy6W-r8nTZTOMvxUgFQN6cFQo9H4zw0efqtcSpyy8s,36154
|
|
77
|
-
pygeodesy/webmercator.py,sha256=fFQtTxIsjOE35_nX_mAgFv1Eov7AdcsCBjT2ONm3qmI,14934
|
|
78
|
-
pygeodesy/wgrs.py,sha256=6dO31uMKF-t-uQz58hdutilE2A5msOs5Bybq5Uq3qgk,15453
|
|
79
|
-
pygeodesy/auxilats/_CX_4.py,sha256=WsxGrwqEhdWBx-K5ocwwDuatIkDTZB-FwrqQITbcNU0,6829
|
|
80
|
-
pygeodesy/auxilats/_CX_6.py,sha256=PsaVhzOdCDyRuZ-SH6ZwbWrf_rAkidtwLuAQTlvv5XQ,11277
|
|
81
|
-
pygeodesy/auxilats/_CX_8.py,sha256=mxk12xvzOMNimyHM74fn9sFB0aUSBLojYqtenYhAekQ,18899
|
|
82
|
-
pygeodesy/auxilats/_CX_Rs.py,sha256=z7UXI7KUyURE44wGuLJE2on6SlgAZzfbay4jkbpON1U,7967
|
|
83
|
-
pygeodesy/auxilats/__init__.py,sha256=ywIs1e5wes3qq3dvCvX0VdxoGtFNQwBmY8Ar-07f9Kg,2881
|
|
84
|
-
pygeodesy/auxilats/__main__.py,sha256=pb0GWDrrg440xNvHvPAz-UTGrLu2uXp4g-RlbkW7P6c,3171
|
|
85
|
-
pygeodesy/auxilats/auxAngle.py,sha256=nr-su1loEbv1uVxg7_cEjH0M1DLyodsulPfq4NVT5kY,16745
|
|
86
|
-
pygeodesy/auxilats/auxDLat.py,sha256=3sq7Wc-ykpVbldNh10IZ3tIlJ7DcQFDlmZ4nOhJEgo0,10969
|
|
87
|
-
pygeodesy/auxilats/auxDST.py,sha256=BSHR0M3hQBR1KjF_BUJHrNzGXr2PblYXUQsMD5L1Kcc,10468
|
|
88
|
-
pygeodesy/auxilats/auxLat.py,sha256=7uxe7mtkY-9uSI3z2wmUNBqzCKyFujIpJU1v-8yDgds,31934
|
|
89
|
-
pygeodesy/auxilats/auxily.py,sha256=X1y4_qC40Th7CgmZILqoQCLAUQoyORcR5W-bN4X0W4I,7882
|
|
90
|
-
pygeodesy/deprecated/__init__.py,sha256=jSwmipBzyIOYIQhiZxZwsIQlqMXPfNaPfVpppBu7zkw,2815
|
|
91
|
-
pygeodesy/deprecated/bases.py,sha256=nxUtxscAg5cb7HEzTSmPJFafLc9Ad2SL5ovwkYaU5z8,1655
|
|
92
|
-
pygeodesy/deprecated/classes.py,sha256=gktUr5qYXCm8ztH6lfzFgaHKqMiw1tHc1Vw6i6DEvNA,12377
|
|
93
|
-
pygeodesy/deprecated/consterns.py,sha256=W-rQiw443_zCFEUzjCGykGND-i5P_ghEIyJUSGg7-Nc,1908
|
|
94
|
-
pygeodesy/deprecated/datum.py,sha256=s8Hke053RucP5ACvg3gdX8weQfGM0x59pQyHpY11eOs,1875
|
|
95
|
-
pygeodesy/deprecated/functions.py,sha256=-spa_5k7yRWGd7s4UBObzf9QpAM0o-tgP4S0wX876JY,14122
|
|
96
|
-
pygeodesy/deprecated/nvector.py,sha256=_dZf84RdmPr7e7i8Yi683R-8Mqn0ipTqIsDhNl29hGo,2117
|
|
97
|
-
pygeodesy/deprecated/rhumbBase.py,sha256=d7YKW--dnRpobB2CSvhFsntWF0B5-HYJqID2pv5lD5k,1375
|
|
98
|
-
pygeodesy/deprecated/rhumbaux.py,sha256=n29xazYMbVG4MJkLjAGu8B88bbcFF5xnvuj9xSxjfIk,1428
|
|
99
|
-
pygeodesy/deprecated/rhumbsolve.py,sha256=QprjRfo5T1_C4ovaa1cffAcmNczzkhGIfmybAup9a9w,1431
|
|
100
|
-
pygeodesy/deprecated/rhumbx.py,sha256=OS0p_meaoVrpZe5UhK6qZljjlrGpL0pCHWw8gofw7ks,1425
|
|
101
|
-
pygeodesy/geodesicx/_C4_24.py,sha256=r5-So2i4z-OFY6NFYERUvhtxYHaYphPRgUUC3PWC5K4,90707
|
|
102
|
-
pygeodesy/geodesicx/_C4_27.py,sha256=Pkpns4kBAHxBcvi0f9l_3GQeE6qcrl123DccEQ593To,134215
|
|
103
|
-
pygeodesy/geodesicx/_C4_30.py,sha256=cseNhROi7DHi77kgdrXXDXO6yiiq00DNcX0HOVf2Rpg,201921
|
|
104
|
-
pygeodesy/geodesicx/__init__.py,sha256=Z-Pq7wWevRZeMdG2qqL7OE1b8hRUubyZE2w1GqF1OzI,2478
|
|
105
|
-
pygeodesy/geodesicx/__main__.py,sha256=wsJPK6lW_PsgVCR1ZJksgGhwxwrsMGSXhYkhpjbknTc,4188
|
|
106
|
-
pygeodesy/geodesicx/gx.py,sha256=yeNpMQbw_uWfs4KOQX8RMAQt6WNsG3zsGgmZRVgbQIk,60612
|
|
107
|
-
pygeodesy/geodesicx/gxarea.py,sha256=RbxhU4oXY6koFSCyJk9gsMlewaaTfXiGBAroexpEYjg,19423
|
|
108
|
-
pygeodesy/geodesicx/gxbases.py,sha256=AyvsjiSENqikJK6qpm55rDkUlBSmTDk_-FoqzzMFX1M,6130
|
|
109
|
-
pygeodesy/geodesicx/gxline.py,sha256=zNQF8lz9caHZlsUcL8NfjG02KIza39Q6Qd6XizDp_UI,27537
|
|
110
|
-
pygeodesy/rhumb/__init__.py,sha256=G8qo1yrLhKfd0yWiVUdJbIPj3udcmsgqKZqFD0PYfeA,2207
|
|
111
|
-
pygeodesy/rhumb/aux_.py,sha256=XN0zlNwhU525NdcHko-G_Igvc7-mzXbT7ypcVIt5ADw,16048
|
|
112
|
-
pygeodesy/rhumb/bases.py,sha256=awpP60K6EOzS753oXM-h9S6paS6FwoCnco8Zt8n81jY,54162
|
|
113
|
-
pygeodesy/rhumb/ekx.py,sha256=JsmdCatWKqsffF8jCh4HDu5IKt_kHq1qUdmP1LMuofY,24044
|
|
114
|
-
pygeodesy/rhumb/solve.py,sha256=d4RujlW8B7BFAHlrwfj2Bup-uXZZTpgKWgI2JJBqUGc,24059
|
|
115
|
-
PyGeodesy-24.10.10.dist-info/METADATA,sha256=J8Ssw_oRSiu74syF_P35vCfWG-jWa6tTyEg6p0X4mMo,19891
|
|
116
|
-
PyGeodesy-24.10.10.dist-info/WHEEL,sha256=fS9sRbCBHs7VFcwJLnLXN1MZRR0_TVTxvXKzOnaSFs8,110
|
|
117
|
-
PyGeodesy-24.10.10.dist-info/top_level.txt,sha256=cEQPatCXzKZqrivpULC5V5fuy9_V_bAwaP_gUGid7pQ,10
|
|
118
|
-
PyGeodesy-24.10.10.dist-info/RECORD,,
|
|
File without changes
|