pygeodesy 25.11.5__py2.py3-none-any.whl → 25.12.12__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 (125) hide show
  1. pygeodesy/__init__.py +25 -12
  2. pygeodesy/__main__.py +1 -1
  3. pygeodesy/albers.py +1 -1
  4. pygeodesy/angles.py +960 -0
  5. pygeodesy/auxilats/_CX_4.py +1 -1
  6. pygeodesy/auxilats/_CX_6.py +1 -1
  7. pygeodesy/auxilats/_CX_8.py +1 -1
  8. pygeodesy/auxilats/_CX_Rs.py +1 -1
  9. pygeodesy/auxilats/__init__.py +2 -2
  10. pygeodesy/auxilats/__main__.py +1 -1
  11. pygeodesy/auxilats/auxAngle.py +7 -8
  12. pygeodesy/auxilats/auxDLat.py +1 -1
  13. pygeodesy/auxilats/auxDST.py +1 -1
  14. pygeodesy/auxilats/auxLat.py +1 -1
  15. pygeodesy/auxilats/auxily.py +1 -1
  16. pygeodesy/azimuthal.py +6 -5
  17. pygeodesy/basics.py +14 -10
  18. pygeodesy/booleans.py +1 -1
  19. pygeodesy/cartesianBase.py +7 -7
  20. pygeodesy/clipy.py +1 -1
  21. pygeodesy/constants.py +27 -24
  22. pygeodesy/css.py +1 -1
  23. pygeodesy/datums.py +1 -1
  24. pygeodesy/deprecated/__init__.py +1 -1
  25. pygeodesy/deprecated/bases.py +1 -1
  26. pygeodesy/deprecated/classes.py +14 -7
  27. pygeodesy/deprecated/consterns.py +1 -1
  28. pygeodesy/deprecated/datum.py +1 -1
  29. pygeodesy/deprecated/functions.py +1 -1
  30. pygeodesy/deprecated/nvector.py +1 -1
  31. pygeodesy/deprecated/rhumbBase.py +1 -1
  32. pygeodesy/deprecated/rhumbaux.py +1 -1
  33. pygeodesy/deprecated/rhumbsolve.py +1 -1
  34. pygeodesy/deprecated/rhumbx.py +1 -1
  35. pygeodesy/dms.py +1 -1
  36. pygeodesy/ecef.py +1 -1
  37. pygeodesy/ecefLocals.py +1 -1
  38. pygeodesy/elevations.py +1 -1
  39. pygeodesy/ellipsoidalBase.py +1 -1
  40. pygeodesy/ellipsoidalBaseDI.py +1 -1
  41. pygeodesy/ellipsoidalExact.py +1 -1
  42. pygeodesy/ellipsoidalGeodSolve.py +1 -1
  43. pygeodesy/ellipsoidalKarney.py +1 -1
  44. pygeodesy/ellipsoidalNvector.py +1 -1
  45. pygeodesy/ellipsoidalVincenty.py +1 -1
  46. pygeodesy/ellipsoids.py +7 -6
  47. pygeodesy/elliptic.py +1 -1
  48. pygeodesy/epsg.py +1 -1
  49. pygeodesy/errors.py +8 -4
  50. pygeodesy/etm.py +1 -1
  51. pygeodesy/fmath.py +15 -8
  52. pygeodesy/formy.py +107 -5
  53. pygeodesy/frechet.py +1 -1
  54. pygeodesy/fstats.py +1 -1
  55. pygeodesy/fsums.py +1 -1
  56. pygeodesy/gars.py +1 -1
  57. pygeodesy/geod3solve.py +488 -0
  58. pygeodesy/geodesici.py +4 -4
  59. pygeodesy/geodesicw.py +1 -1
  60. pygeodesy/geodesicx/_C4_24.py +1 -1
  61. pygeodesy/geodesicx/_C4_27.py +1 -1
  62. pygeodesy/geodesicx/_C4_30.py +1 -1
  63. pygeodesy/geodesicx/__init__.py +1 -1
  64. pygeodesy/geodesicx/__main__.py +1 -1
  65. pygeodesy/geodesicx/gx.py +1 -1
  66. pygeodesy/geodesicx/gxarea.py +1 -1
  67. pygeodesy/geodesicx/gxbases.py +1 -1
  68. pygeodesy/geodesicx/gxline.py +1 -1
  69. pygeodesy/geodsolve.py +70 -102
  70. pygeodesy/geohash.py +1 -1
  71. pygeodesy/geoids.py +1 -1
  72. pygeodesy/hausdorff.py +1 -1
  73. pygeodesy/heights.py +1 -1
  74. pygeodesy/internals.py +1 -1
  75. pygeodesy/interns.py +3 -3
  76. pygeodesy/iters.py +1 -1
  77. pygeodesy/karney.py +132 -116
  78. pygeodesy/ktm.py +1 -1
  79. pygeodesy/latlonBase.py +1 -1
  80. pygeodesy/lazily.py +23 -12
  81. pygeodesy/lcc.py +1 -1
  82. pygeodesy/ltp.py +1 -1
  83. pygeodesy/ltpTuples.py +1 -1
  84. pygeodesy/mgrs.py +3 -3
  85. pygeodesy/named.py +14 -9
  86. pygeodesy/namedTuples.py +1 -1
  87. pygeodesy/nvectorBase.py +1 -1
  88. pygeodesy/osgr.py +1 -1
  89. pygeodesy/points.py +1 -1
  90. pygeodesy/props.py +1 -1
  91. pygeodesy/resections.py +1 -1
  92. pygeodesy/rhumb/__init__.py +8 -6
  93. pygeodesy/rhumb/aux_.py +1 -1
  94. pygeodesy/rhumb/bases.py +1 -1
  95. pygeodesy/rhumb/ekx.py +1 -1
  96. pygeodesy/rhumb/solve.py +91 -84
  97. pygeodesy/simplify.py +1 -1
  98. pygeodesy/solveBase.py +72 -49
  99. pygeodesy/sphericalBase.py +1 -1
  100. pygeodesy/sphericalNvector.py +1 -1
  101. pygeodesy/sphericalTrigonometry.py +1 -1
  102. pygeodesy/streprs.py +6 -4
  103. pygeodesy/trf.py +1 -1
  104. pygeodesy/triaxials/__init__.py +70 -0
  105. pygeodesy/triaxials/bases.py +935 -0
  106. pygeodesy/triaxials/conformal3.py +617 -0
  107. pygeodesy/triaxials/triaxial3.py +969 -0
  108. pygeodesy/{triaxials.py → triaxials/triaxial5.py} +353 -781
  109. pygeodesy/units.py +1 -1
  110. pygeodesy/unitsBase.py +1 -1
  111. pygeodesy/ups.py +2 -3
  112. pygeodesy/utily.py +17 -14
  113. pygeodesy/utm.py +1 -1
  114. pygeodesy/utmups.py +1 -1
  115. pygeodesy/utmupsBase.py +1 -1
  116. pygeodesy/vector2d.py +1 -1
  117. pygeodesy/vector3d.py +1 -1
  118. pygeodesy/vector3dBase.py +1 -1
  119. pygeodesy/webmercator.py +1 -1
  120. pygeodesy/wgrs.py +1 -1
  121. {pygeodesy-25.11.5.dist-info → pygeodesy-25.12.12.dist-info}/METADATA +12 -12
  122. pygeodesy-25.12.12.dist-info/RECORD +125 -0
  123. pygeodesy-25.11.5.dist-info/RECORD +0 -119
  124. {pygeodesy-25.11.5.dist-info → pygeodesy-25.12.12.dist-info}/WHEEL +0 -0
  125. {pygeodesy-25.11.5.dist-info → pygeodesy-25.12.12.dist-info}/top_level.txt +0 -0
pygeodesy/units.py CHANGED
@@ -877,7 +877,7 @@ __all__ += _ALL_DOCS(_NamedUnit)
877
877
 
878
878
  # **) MIT License
879
879
  #
880
- # Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
880
+ # Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
881
881
  #
882
882
  # Permission is hereby granted, free of charge, to any person obtaining a
883
883
  # copy of this software and associated documentation files (the "Software"),
pygeodesy/unitsBase.py CHANGED
@@ -350,7 +350,7 @@ __all__ += _ALL_DOCS(_NamedUnit)
350
350
 
351
351
  # **) MIT License
352
352
  #
353
- # Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
353
+ # Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
354
354
  #
355
355
  # Permission is hereby granted, free of charge, to any person obtaining a
356
356
  # copy of this software and associated documentation files (the "Software"),
pygeodesy/ups.py CHANGED
@@ -22,7 +22,7 @@ other than C{"std"}, zones C{'A'} and C{'Y'} are used for negative, west longitu
22
22
  '''
23
23
 
24
24
  # from pygeodesy.basics import neg as _neg # from .dms
25
- from pygeodesy.constants import EPS, EPS0, _EPSmin as _Tol90, \
25
+ from pygeodesy.constants import EPS, EPS0, _EPSmin as _Tol90, _K0_UPS, \
26
26
  isnear90, _0_0, _0_5, _1_0, _2_0
27
27
  from pygeodesy.datums import _ellipsoidal_datum, _WGS84
28
28
  from pygeodesy.dms import degDMS, _neg, parseDMS2
@@ -53,7 +53,6 @@ __version__ = '25.04.14'
53
53
 
54
54
  _BZ_UPS = _envPYGEODESY('UPS_POLES', _std_) == _std_
55
55
  _Falsing = Meter(2000e3) # false easting and northing (C{meter})
56
- _K0_UPS = Float(_K0_UPS= 0.994) # scale factor at central meridian
57
56
  _K1_UPS = Float(_K1_UPS=_1_0) # rescale point scale factor
58
57
 
59
58
 
@@ -509,7 +508,7 @@ def upsZoneBand5(lat, lon, strict=True, **name):
509
508
 
510
509
  # **) MIT License
511
510
  #
512
- # Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
511
+ # Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
513
512
  #
514
513
  # Permission is hereby granted, free of charge, to any person obtaining a
515
514
  # copy of this software and associated documentation files (the "Software"),
pygeodesy/utily.py CHANGED
@@ -16,7 +16,7 @@ from pygeodesy.constants import EPS, EPS0, NAN, PI, PI2, PI_2, PI_4, PI_6, R_M,
16
16
  _M_KM, _M_NM, _M_SM, _0_0, _0_5, _1_0, _N_1_0, \
17
17
  _10_0, _90_0, _180_0, _360_0, _copysign_0_0, \
18
18
  _copysignINF, _float, _isfinite, isnan, isnear0, \
19
- _over_1, _umod_360, _umod_PI2
19
+ _over_1, _umod_360, _umod_PI2, OVERFLOW
20
20
  from pygeodesy.errors import _ValueError, _xkwds, _xkwds_get
21
21
  from pygeodesy.internals import _Enum, _passargs, typename
22
22
  from pygeodesy.interns import _edge_, _radians_, _semi_circular_, _SPACE_
@@ -28,7 +28,7 @@ from math import acos, asin, asinh, atan2 as _atan2, cos, degrees, fabs, \
28
28
  radians, sin, sinh, tan as _tan # pow
29
29
 
30
30
  __all__ = _ALL_LAZY.utily
31
- __version__ = '25.10.29'
31
+ __version__ = '25.11.09'
32
32
 
33
33
  # sqrt(3) <https://WikiPedia.org/wiki/Square_root_of_3>
34
34
  _COS_30, _SIN_30 = 0.86602540378443864676, _0_5 # sqrt(3) / 2
@@ -815,8 +815,8 @@ def SinCos2(x, unit=Radians):
815
815
 
816
816
  @return: 2-Tuple (C{sin(B{x})}, C{cos(B{x})}).
817
817
  '''
818
- return sincos2d(x) if unit is Degrees or isinstanceof(x, Degrees, Degrees_) else (
819
- # sincos2(x) if unit is Radians or isinstanceof(x, Radians, Radians_) else
818
+ return sincos2d(x) if unit is Degrees or unit is degrees or isinstanceof(x, Degrees, Degrees_) else (
819
+ # sincos2(x) if unit is Radians or unit is radians or isinstanceof(x, Radians, Radians_) else
820
820
  sincos2(Radians(x))) # assume C{radians}
821
821
 
822
822
 
@@ -997,13 +997,14 @@ def tan_(*rads, **raiser_kwds):
997
997
  yield _nonfinite(tan_, r, **raiser_kwds)
998
998
 
999
999
 
1000
- def tand(deg, **raiser_kwds):
1000
+ def tand(deg, **raiser_clamp_kwds):
1001
1001
  '''Return the C{tangent} of an angle in C{degrees}.
1002
1002
 
1003
1003
  @arg deg: Angle (C{degrees}).
1004
- @kwarg raiser_kwds: Use C{B{raiser}=False} to avoid
1005
- ValueErrors and optional, additional
1006
- ValueError keyword argments.
1004
+ @kwarg raiser_clamp_kwds: Use C{B{raiser}=False} to avoid
1005
+ ValueErrors, C{B{clamp}=}L{OVERFLOW} and
1006
+ optional, additional ValueError keyword
1007
+ argments.
1007
1008
 
1008
1009
  @return: C{tan(B{deg})}.
1009
1010
 
@@ -1012,10 +1013,10 @@ def tand(deg, **raiser_kwds):
1012
1013
  try:
1013
1014
  return _tanu(*sincos2d(deg))
1014
1015
  except ZeroDivisionError:
1015
- return _nonfinite(tand, deg, **raiser_kwds)
1016
+ return _nonfinite(tand, deg, **raiser_clamp_kwds)
1016
1017
 
1017
1018
 
1018
- def tand_(*degs, **raiser_kwds):
1019
+ def tand_(*degs, **raiser_clamp_kwds):
1019
1020
  '''Yield the C{tangent} of angle(s) in C{degrees}.
1020
1021
 
1021
1022
  @arg degs: One or more angles (each in C{degrees}).
@@ -1026,9 +1027,9 @@ def tand_(*degs, **raiser_kwds):
1026
1027
  '''
1027
1028
  try:
1028
1029
  for d in degs:
1029
- yield _tanu(*sincos2d(d))
1030
+ yield _tanu(*sincos2d(d), **raiser_clamp_kwds)
1030
1031
  except ZeroDivisionError:
1031
- yield _nonfinite(tand_, d, **raiser_kwds)
1032
+ yield _nonfinite(tand_, d, **raiser_clamp_kwds)
1032
1033
 
1033
1034
 
1034
1035
  def tanPI_2_2(rad):
@@ -1042,7 +1043,7 @@ def tanPI_2_2(rad):
1042
1043
  NAN if isnan(rad) else _copysign(_90_0, rad))
1043
1044
 
1044
1045
 
1045
- def _tanu(s, c):
1046
+ def _tanu(s, c, clamp=OVERFLOW, **unused):
1046
1047
  '''(INTERNAL) Helper for functions C{_cotu}, C{sincostan3},
1047
1048
  C{sincostan3d}, C{tan}, C{tan_}, C{tand} and C{tand_}.
1048
1049
  '''
@@ -1052,6 +1053,8 @@ def _tanu(s, c):
1052
1053
  raise ZeroDivisionError()
1053
1054
  else:
1054
1055
  t = _over_1(s, c)
1056
+ if clamp:
1057
+ t = min(clamp, max(t, -clamp))
1055
1058
  return t
1056
1059
 
1057
1060
 
@@ -1384,7 +1387,7 @@ def yard2m(yards):
1384
1387
 
1385
1388
  # **) MIT License
1386
1389
  #
1387
- # Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
1390
+ # Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
1388
1391
  #
1389
1392
  # Permission is hereby granted, free of charge, to any person obtaining a
1390
1393
  # copy of this software and associated documentation files (the "Software"),
pygeodesy/utm.py CHANGED
@@ -733,7 +733,7 @@ def utmZoneBand5(lat, lon, cmoff=False, **name):
733
733
 
734
734
  # **) MIT License
735
735
  #
736
- # Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
736
+ # Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
737
737
  #
738
738
  # Permission is hereby granted, free of charge, to any person obtaining a
739
739
  # copy of this software and associated documentation files (the "Software"),
pygeodesy/utmups.py CHANGED
@@ -294,7 +294,7 @@ def utmupsZoneBand5(lat, lon, cmoff=False, **name):
294
294
 
295
295
  # **) MIT License
296
296
  #
297
- # Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
297
+ # Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
298
298
  #
299
299
  # Permission is hereby granted, free of charge, to any person obtaining a
300
300
  # copy of this software and associated documentation files (the "Software"),
pygeodesy/utmupsBase.py CHANGED
@@ -586,7 +586,7 @@ __all__ += _ALL_DOCS(UtmUpsBase)
586
586
 
587
587
  # **) MIT License
588
588
  #
589
- # Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
589
+ # Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
590
590
  #
591
591
  # Permission is hereby granted, free of charge, to any person obtaining a
592
592
  # copy of this software and associated documentation files (the "Software"),
pygeodesy/vector2d.py CHANGED
@@ -884,7 +884,7 @@ def _tri5perturbs(eps, r):
884
884
 
885
885
  # **) MIT License
886
886
  #
887
- # Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
887
+ # Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
888
888
  #
889
889
  # Permission is hereby granted, free of charge, to any person obtaining a
890
890
  # copy of this software and associated documentation files (the "Software"),
pygeodesy/vector3d.py CHANGED
@@ -914,7 +914,7 @@ __all__ += _ALL_DOCS(intersections2, sumOf, Vector3dBase)
914
914
 
915
915
  # **) MIT License
916
916
  #
917
- # Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
917
+ # Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
918
918
  #
919
919
  # Permission is hereby granted, free of charge, to any person obtaining a
920
920
  # copy of this software and associated documentation files (the "Software"),
pygeodesy/vector3dBase.py CHANGED
@@ -1196,7 +1196,7 @@ __all__ += _ALL_DOCS(Vector3dBase)
1196
1196
 
1197
1197
  # **) MIT License
1198
1198
  #
1199
- # Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
1199
+ # Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
1200
1200
  #
1201
1201
  # Permission is hereby granted, free of charge, to any person obtaining a
1202
1202
  # copy of this software and associated documentation files (the "Software"),
pygeodesy/webmercator.py CHANGED
@@ -353,7 +353,7 @@ def toWm(latlon, lon=None, earth=R_MA, Wm=Wm, **name_Wm_kwds_radius):
353
353
 
354
354
  # **) MIT License
355
355
  #
356
- # Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
356
+ # Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
357
357
  #
358
358
  # Permission is hereby granted, free of charge, to any person obtaining a
359
359
  # copy of this software and associated documentation files (the "Software"),
pygeodesy/wgrs.py CHANGED
@@ -425,7 +425,7 @@ __all__ += _ALL_DOCS(decode3, decode5, # functions
425
425
 
426
426
  # **) MIT License
427
427
  #
428
- # Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
428
+ # Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
429
429
  #
430
430
  # Permission is hereby granted, free of charge, to any person obtaining a
431
431
  # copy of this software and associated documentation files (the "Software"),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pygeodesy
3
- Version: 25.11.5
3
+ Version: 25.12.12
4
4
  Summary: Pure Python geodesy tools
5
5
  Home-page: https://GitHub.com/mrJean1/PyGeodesy
6
6
  Author: Jean M. Brouwers
@@ -120,31 +120,31 @@ test results (on macOS only) and the complete documentation_ generated by Epydoc
120
120
  Tests
121
121
  =====
122
122
 
123
- The tests ran with Python 3.14 (with geographiclib_ 2.1), Python 3.13.7 (with geographiclib_ 2.1,
123
+ The tests ran with Python 3.14.2 (with geographiclib_ 2.1), Python 3.13.9 (with geographiclib_ 2.1,
124
124
  numpy_ 2.3.3, scipy_ 1.16.2, GeoConvert_ 2.5 and GeodSolve_ 2.5), Python 3.12.7 (with geographiclib_ 2.0,
125
125
  numpy_ 2.1.0, scipy_ 1.14.1, GeodSolve_ 2.5, IntersectTool_ 2.5 and RhumbSolve_ 2.5), Python 3.11.5 (with
126
126
  geographiclib_ 2.0, numpy_ 1.24.2 and scipy_ 1.10.1) and with Python 2.7.18 (with geographiclib_ 1.50,
127
127
  numpy_ 1.16.6, scipy_ 1.2.2, GeoConvert_ 2.5, GeodSolve_ 2.5, IntersectTool_ 2.5 and RhumbSolve_ 2.5),
128
- all on macOS 26.0.1 Tahoe in 64-bit.
128
+ all on macOS 26.1 Tahoe in 64-bit.
129
129
 
130
130
  All tests ran with and without ``lazy import`` for Python 3 and with command line option ``-W default``
131
131
  and env variable ``PYGEODESY_WARNINGS=on`` for all Python versions. The results of those tests are
132
132
  included in the distribution files.
133
133
 
134
- Python 3.14, 3.13.7, 3.12.7 and 3.11.5 run on Apple Si M4 (``arm64``), *natively*. Python 2.7.18 runs
134
+ Python 3.14.2, 3.13.9, 3.12.7 and 3.11.5 run on Apple Si M4 (``arm64``), *natively*. Python 2.7.18 runs
135
135
  on Intel (``x86_64``) or Intel *emulation* (\"``arm64_x86_64``\", see function `pygeodesy.machine`_).
136
136
 
137
- Test coverage has been measured with coverage_ 7.10.7 using Python 3.14, 3.13.7 and 3.12.7. The complete
138
- coverage report in HTML and a PDF summary are included in the distribution files.
137
+ Test coverage has been measured with coverage_ 7.10.7 using Python 3.14.2, 3.13.9 and 3.12.7. The
138
+ complete coverage report in HTML and a PDF summary are included in the distribution files.
139
139
 
140
- The tests also ran with Python 3.13.7 (and geographiclib_ 2.1) on `Debian 12`_ in 64-bit only and with
140
+ The tests also ran with Python 3.13.9 (and geographiclib_ 2.1) on `Debian 12`_ in 64-bit only and with
141
141
  Python 3.12.8 (and geographiclib_ 2.0) on `Windows 2019Server`_ in 64-bit only and with Python 2.7.18
142
142
  (and with geographiclib_ 1.52) on `Windows 10`_ in 64- and 32-bit.
143
143
 
144
144
  A single-File and single-Directory application with ``pygeodesy`` has been bundled using PyInstaller_ 3.4
145
145
  and 64-bit Python 3.7.4 and 3.7.3 on macOS 10.13.6 High Sierra.
146
146
 
147
- Previously, the tests were run with Python 3.13.0-6, 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
+ Previously, the tests were run with Python 3.13.0-7, 3.12.0-6, 3.11.2-4, 3.10.1-7, 3.9.1, 3.8.7, 3.7.1, 2.7.15,
148
148
  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,
149
149
  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
150
150
  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
@@ -160,17 +160,17 @@ Server 2012R2, Windows 10 Pro and 32-bit Python 2.6.6 on Windows XP SP3.
160
160
  Notes
161
161
  =====
162
162
 
163
- All Python source code has been statically checked_ with Ruff_ using Python 3.13.7 and with PyChecker_, PyFlakes_,
164
- PyCodeStyle_ (formerly Pep8) and McCabe_ using Python 2.7.18, both in 64-bit on macOS 26.0.1 Tahoe only.
163
+ All Python source code has been statically checked_ with Ruff_ using Python 3.13.9 and with PyChecker_, PyFlakes_,
164
+ PyCodeStyle_ (formerly Pep8) and McCabe_ using Python 2.7.18, both in 64-bit on macOS 26.1 Tahoe only.
165
165
 
166
166
  For a summary of all *Karney*-based functionality in ``pygeodesy``, see module karney_.
167
167
 
168
- *Last updated: Nov 05, 2025.*
168
+ *Last updated: Dec 12, 2025.*
169
169
 
170
170
  License
171
171
  =======
172
172
 
173
- **Copyright (C) 2016-2025 -\- mrJean1 at Gmail -\- All Rights Reserved.**
173
+ **Copyright (C) 2016-2026 -\- mrJean1 at Gmail -\- All Rights Reserved.**
174
174
 
175
175
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
176
176
  documentation files (the "Software"), to deal in the Software without restriction, including without limitation
@@ -0,0 +1,125 @@
1
+ pygeodesy/LICENSE,sha256=YfgAiyxOwY6P9Kkb1_5XN81nueTLrpb3Ffkv3EuPgFU,1144
2
+ pygeodesy/__init__.py,sha256=mlFdhvirSlon80mpgvgMqzKo43dV9_bSTRrfKCoNR-c,43176
3
+ pygeodesy/__main__.py,sha256=06sdpwiuTP1hPvKOdzjqhuuDqqpicErwnAYwioeiTNw,5597
4
+ pygeodesy/albers.py,sha256=1Jt-WWcawNw6Dj7wl6hPSLbYiGGZqFMCnRU8gyGvV7o,30908
5
+ pygeodesy/angles.py,sha256=68sNVXU3QKGZnIYyjWFcKhWlBKSmaduO--rjtoM2sqU,29996
6
+ pygeodesy/azimuthal.py,sha256=7JwLHx-mTkwxuSkWmxNPPnPFAu4a0F5X_T_JyL6aEHE,49867
7
+ pygeodesy/basics.py,sha256=bbQs7M1epOl7t8IF2xs5uA46rrdYdobSuiJJ6v5st0s,32988
8
+ pygeodesy/booleans.py,sha256=kEF7rFvQzUaGFdrDzOXo_GFauXmaDTnhd2LNDh69B28,72636
9
+ pygeodesy/cartesianBase.py,sha256=L6y0Mn3x25eLF0Wd6ntOLlyfvGqmIl15Akvs373lXhg,45382
10
+ pygeodesy/clipy.py,sha256=uLTbX6byZa6fi2Kir1WanfW47JSxAkmfngH3vD7TDfw,27481
11
+ pygeodesy/constants.py,sha256=8UPc_dVrlKMMieFB20nbWMdLK_3hep282IuxSwIAg-M,21345
12
+ pygeodesy/css.py,sha256=Fb_z5nvu5j4To1WgXGPOaEaME71IZW747FdpL4YBczc,25793
13
+ pygeodesy/datums.py,sha256=3uB7cuFdhNNMxKq96J3FjdklwaKOcdshBrGMf1Osbms,34068
14
+ pygeodesy/dms.py,sha256=2jesqmjWy-Pze5VWtgbiyC8CbjeIFbPP1qt2nYriubw,42202
15
+ pygeodesy/ecef.py,sha256=0MSfLlMedBokrrn2YcOyfa2MrJhhKzVemXTHn8Qi4KI,62577
16
+ pygeodesy/ecefLocals.py,sha256=hlx0DUW5n6v2H8SLJvaSEQQj_Sq61bLXpT8PY7SWqe4,7794
17
+ pygeodesy/elevations.py,sha256=Z4jvs_EUv_tKroxxweulRu6XxX9E5h8sbTGUTalRD2I,10879
18
+ pygeodesy/ellipsoidalBase.py,sha256=zb2PQhTWQdba7qJBgcFaQPQhOdSZQwhKGpFuts93API,55711
19
+ pygeodesy/ellipsoidalBaseDI.py,sha256=_2N4zFQN3qEyiD7ah0pzyY0FHKJYQJL6IKsvVhA-w8Y,38544
20
+ pygeodesy/ellipsoidalExact.py,sha256=irv40d_xyDIBgSXswn8op-Wjk-KZUSwVD8xWWGq8wwk,17120
21
+ pygeodesy/ellipsoidalGeodSolve.py,sha256=wuA-veOYC95vcEnbr4zT0ZzDN7s6kSuMRHpd4V1RlEw,17108
22
+ pygeodesy/ellipsoidalKarney.py,sha256=CxPB91CKA0q5E97TOcErTTQdufdB2dT4KF84QZtfnGM,18839
23
+ pygeodesy/ellipsoidalNvector.py,sha256=48N-KtVUn0wi9kXZe12hg0jABWNeaiNXyY__oS-x5I4,30146
24
+ pygeodesy/ellipsoidalVincenty.py,sha256=X4OpMPtoretveNjHlEXKL4ifmAARTRY0yxbIOlR26J8,26273
25
+ pygeodesy/ellipsoids.py,sha256=4U8yK0CnZ-dqLQfInL_5BNGfj_SJG7KrTRhW5KnC4KU,108945
26
+ pygeodesy/elliptic.py,sha256=914gDJmHVu_zlyQJy4tfqTJmq2Buqq5w3Jt-7wrXpEo,45515
27
+ pygeodesy/epsg.py,sha256=wS8Mzzk70Fzry6c0fBA16VVez3ghKG2Dhgpo2eN_Ik8,8220
28
+ pygeodesy/errors.py,sha256=76wVrhxev-n-kBOHv3MicHell3ifA2whUp4SRCrqUx4,32633
29
+ pygeodesy/etm.py,sha256=3pQmpjsrnI0mgLwhkLOCOFq_44bkhHwXExf-Keyky2w,46796
30
+ pygeodesy/fmath.py,sha256=-MjjZ5U-IjK8PjowT4Fv_dhFOxSg2LmLAdU5RnMWtWI,38008
31
+ pygeodesy/formy.py,sha256=ha8i6sqmePlOdA7ee_azhNCfmES1gjrciNhnapMzugQ,73081
32
+ pygeodesy/frechet.py,sha256=FySLdZgLb_NXd81AILx4G2C9J6dxwI5uYW1MEHuEocg,35588
33
+ pygeodesy/fstats.py,sha256=EuyC9UrJ5K0IlZqM7h3C8C7tYDrTujqoBp9-V1ICPx0,28348
34
+ pygeodesy/fsums.py,sha256=jj1gRWr5dutqavpXZacky0m2va87sq0y5JBCVbCFtgg,104978
35
+ pygeodesy/gars.py,sha256=z7yvE6dRAjtXUAB9yakH8duwF2gBKbcjXUIznNnr8_w,11761
36
+ pygeodesy/geod3solve.py,sha256=v17vxrDBnkf_Nl3x7fNm7bxj58NW8ky3G94eiYbm4EQ,21488
37
+ pygeodesy/geodesici.py,sha256=7OSn4VyAoAzPBlRpAnvnhp1PQozD7FhCcQgueYNX14o,74889
38
+ pygeodesy/geodesicw.py,sha256=bhwSBtHAaNAl487uAgifS42cKvcYTe-8O8M5S44u9_k,30029
39
+ pygeodesy/geodsolve.py,sha256=bfXeqCnOeWOXv2xcoJqt2mqBZ7onOCEaCpM7GnkfIZg,24948
40
+ pygeodesy/geohash.py,sha256=LmjvzgrzD0Cj-xPCZNJp3LbVOQ7llaE2sAO0V0SxNOo,40124
41
+ pygeodesy/geoids.py,sha256=Fn3pOCokzQJuEY2UE11Ah5XuiT24WRmmoc3FeNhfpsg,86129
42
+ pygeodesy/hausdorff.py,sha256=_zfkZ4pzUE_6LwFD77RU9NC58aN8imglI7TfapM82Wc,32269
43
+ pygeodesy/heights.py,sha256=T_5ZhtFAskQf-1BHL2Nm5bTYQIMJj-d1UKhW11YPWvs,41011
44
+ pygeodesy/internals.py,sha256=_KTAnSPlLWYBEXaUxiDpE-nN-JbexcN5h_szyJwzgWE,24712
45
+ pygeodesy/interns.py,sha256=h7LupB9eEhwgW8mq3R4VMFI3i-49ObgXAEvV2JJmmpM,23521
46
+ pygeodesy/iters.py,sha256=xH719oFB-0z4jCAHeC6uLqyfWPtpQoSBF6Pgnoz5weQ,20345
47
+ pygeodesy/karney.py,sha256=0hVfPFNisGu4Qmp4LHKnxeRyikdRmvfsm1b6ijT6cHI,42408
48
+ pygeodesy/ktm.py,sha256=262-FbXSHpQnlpHKyqzMO4Uuf7DflDINSSSOEmRXyRc,27270
49
+ pygeodesy/latlonBase.py,sha256=as2BBvogFBANmyixQNgVWVfXuBSvcDtb200XzSMKzE4,75317
50
+ pygeodesy/lazily.py,sha256=67MpN-WnfW7E7cR7SANBJ_HxPyXzbBhX577-VTZZlA8,48627
51
+ pygeodesy/lcc.py,sha256=BXWEHDRgNOzAOM5dVBfpETWVdJ7Me378Wv93n2oR_UI,25785
52
+ pygeodesy/ltp.py,sha256=-dokXawH_nvyjYaQzPQ0pguB0yAlvybnFnokEwLE488,50893
53
+ pygeodesy/ltpTuples.py,sha256=6BcsN1rjshV1w80EtXR14TzDmZLl-YReFJ4UFL-DBt0,59101
54
+ pygeodesy/mgrs.py,sha256=ZUsW0ixGlS0YOuzXFoGj3N0XrI1PbuSVYldZuqKS3g8,29842
55
+ pygeodesy/named.py,sha256=Nt3MJa3fQBKlkwaaCjQiy80_shCM92r-4rHSjZcubh8,52985
56
+ pygeodesy/namedTuples.py,sha256=mIwqxjSRqmJ7D4_BMYhQkSoAaaP3-rwnToNenu1k3yU,30598
57
+ pygeodesy/nvectorBase.py,sha256=hDLrOOBuxz0n5zNH3nyg5FlElUD2Yusd91PRL7QLooA,29927
58
+ pygeodesy/osgr.py,sha256=afrHMVQ6wrdCaKDXMuhXcDy0MTI-8HKQccSlKGUNwps,30852
59
+ pygeodesy/points.py,sha256=Fcz220qrQqLCI9b442sOb1wR0w12EsE1LDbLFwwXWhA,64497
60
+ pygeodesy/props.py,sha256=8B-gajKbNpYpk6Uc3-FoDL1eomjzjKzkhwM-JobDqE8,24600
61
+ pygeodesy/resections.py,sha256=47twtGa_PQ71QUwReECkRpVFyuRSuYhsCecS3cThEiA,43796
62
+ pygeodesy/simplify.py,sha256=8OJj7jkxJFVE5jQRvbpm14_Oxrv4Oju7atIGFRg3zUE,22068
63
+ pygeodesy/solveBase.py,sha256=4lKwoWCiDjQjaS_iMUZ7m8nkLL92yNHBcNsmNsulOdc,19631
64
+ pygeodesy/sphericalBase.py,sha256=54na1mQCuyZ1dYzpt801AC2B7PStLNmt3CRwAC2A03A,32071
65
+ pygeodesy/sphericalNvector.py,sha256=N_qB3ziZMf0spE0fqd-GVW9omAy5YT3HdsE2DB2Td9Y,54948
66
+ pygeodesy/sphericalTrigonometry.py,sha256=YN-Gv2m1rWg2rzAXpuAFPu2WL-ARt3u1zKNWJLZ8JAk,64398
67
+ pygeodesy/streprs.py,sha256=tS21sthUtj06Jmh9rdyAbiczwjNjvZTMWvUmJwD9ODs,23728
68
+ pygeodesy/trf.py,sha256=Uuuai2FMZFJsKXTHZtT4c2gQ4YRlYdw9K_0PSHmP-Fo,119216
69
+ pygeodesy/units.py,sha256=9zAnu28f0c7pELZviZDukxz6hjeAwhBvH5wq8F2-cww,35561
70
+ pygeodesy/unitsBase.py,sha256=9AHGuUuGWmKUYHNZt6tVxUkLDvSAyr2gitikME75eZg,14141
71
+ pygeodesy/ups.py,sha256=_Qyp1cBhAGOGPya09zZQYO468H2Nc8jxKYw-HgOMa8o,23288
72
+ pygeodesy/utily.py,sha256=lucez138JJVLAafMciduGMcDyvPrsSjwr-6ApToHPIM,41330
73
+ pygeodesy/utm.py,sha256=Cu0CTqXVSNIIdzp8cejd0ONvo8Y26WtB3spt2o10ZV8,31123
74
+ pygeodesy/utmups.py,sha256=MsgnWVw0u_4nAO_kol4GjUTg7dMGwURR2hv3TV8eVik,13176
75
+ pygeodesy/utmupsBase.py,sha256=v9ZCOBaaMaAF-rUdzL-kbj0pov-E-8aBq9nuOMSnxYw,22730
76
+ pygeodesy/vector2d.py,sha256=JQZIefGm0GmqsvTnXX2OXqbxPaliFEu7jtHCSb3oeDM,40306
77
+ pygeodesy/vector3d.py,sha256=kGSH5jJl6Z0KaqDX3GcQPgNV7JSTON2BybTgitR8IHk,43045
78
+ pygeodesy/vector3dBase.py,sha256=Qnom8vNf749ILZ0OChW4TeVZCrKnYLf_59rC_-7_cAs,40884
79
+ pygeodesy/webmercator.py,sha256=dra_UVuDBSZcXb1GpCFQzu8SYKnLXyzEFMh1Xo5wKHg,15016
80
+ pygeodesy/wgrs.py,sha256=1GjUTke4vliL_x_niBX-YC7rlWz7VewddQNTvH3ULoA,15503
81
+ pygeodesy/auxilats/_CX_4.py,sha256=SDx8G11WGE5zNscnm1Xa2s5uU1ksXda-WFK3LOH2yZ8,6830
82
+ pygeodesy/auxilats/_CX_6.py,sha256=dpyW7c79v__O9ckP7PYYRS7mDwCoWU0_OBdG1D5o7vo,11278
83
+ pygeodesy/auxilats/_CX_8.py,sha256=vmR0CyTPHYON5W5ZqGW3qlOX9iDXRtY5JEZu3GyZz80,18900
84
+ pygeodesy/auxilats/_CX_Rs.py,sha256=EV6Py2yxqtf3FAykmdAHa3Rj9V_yfP21BYwayXNk_zU,8679
85
+ pygeodesy/auxilats/__init__.py,sha256=u3hwLEvkaiD4KU-kfHfi26IbKWZHWLIBVukCFYNpQjo,2883
86
+ pygeodesy/auxilats/__main__.py,sha256=JPDbuG6UnghFtWBbNzb7Uuv9bXDW55ZXXd2PV-6Tc9o,3340
87
+ pygeodesy/auxilats/auxAngle.py,sha256=QrkiKKHpH7gYoLA5WSdePX0198oDB0yiwGSx0erWLMc,16671
88
+ pygeodesy/auxilats/auxDLat.py,sha256=6bamjB_s0RbINNU3V8W9lzsjXl3tWcjkkwLLgusclVM,10956
89
+ pygeodesy/auxilats/auxDST.py,sha256=4VkQ6RfpUA0NvTZawP-bMatJMbrFz3lbzyXKwfQmdB4,10464
90
+ pygeodesy/auxilats/auxLat.py,sha256=qWvIdfpvIQUF7jsgJyxeNgkbjlbIPsNs8-uvPMxyJbM,31972
91
+ pygeodesy/auxilats/auxily.py,sha256=_D-7n-73pVdZR459NF0WGmO3eOVEtiyaongKCGPvHkA,8085
92
+ pygeodesy/deprecated/__init__.py,sha256=TsSpb0A6l5BelXOuhHvljy6m-UoR0Sf86CsCXlgfuls,2823
93
+ pygeodesy/deprecated/bases.py,sha256=5cwF5nZ6SmAwib3iEmOJ66yzLfimfl1Ru93U_ohbtkA,1649
94
+ pygeodesy/deprecated/classes.py,sha256=3EYzIaCndfUG2jx2_5oyrcZ8LrCWrhULferR6eCBobY,17486
95
+ pygeodesy/deprecated/consterns.py,sha256=G5GisRNoza0gi2uGz0a_omVq3Herrirc5x-k7Ltzj0U,1917
96
+ pygeodesy/deprecated/datum.py,sha256=duDFoz2mAmQDt2AaHTShglWYlWXv_sKR7PhGs3lRM6s,1910
97
+ pygeodesy/deprecated/functions.py,sha256=FaryhoN9KydS3W6V951lY_qUTONCx0EpUm-FEitvZyU,15844
98
+ pygeodesy/deprecated/nvector.py,sha256=AXukNWyhy-LzA-Zio5VmPiKUaJ75U_Dr7-pyVUy0RXM,2117
99
+ pygeodesy/deprecated/rhumbBase.py,sha256=fh2ZkaW5yenFkG5xvYvyroscqWuuwQXyLfVN6gpzKf8,1370
100
+ pygeodesy/deprecated/rhumbaux.py,sha256=7g_R-_Bsc8FDmY4JcUyA7VEQe8EIJe0i8u3jOrgrrAo,1423
101
+ pygeodesy/deprecated/rhumbsolve.py,sha256=_exbzuupjgodQtdUJ_zrggqMx3X7SB88BROu0yYIJTg,1426
102
+ pygeodesy/deprecated/rhumbx.py,sha256=SdCzJgaSMBxZUQpT3vu52eE1neZTMkddz1Vuu4KsGxg,1420
103
+ pygeodesy/geodesicx/_C4_24.py,sha256=qkKFpXNPBo2RRfCjNV_AjNO4nZm_wsUux4IZuyfZJt8,90707
104
+ pygeodesy/geodesicx/_C4_27.py,sha256=rrcq4FeTQThu4vmYqLK0cmjpCLkPTCQbS728AbDjPRw,134215
105
+ pygeodesy/geodesicx/_C4_30.py,sha256=A6Keryy3a4iF6chjf1RMFG-Fb9M49_QQaI-4T-2NXx0,201921
106
+ pygeodesy/geodesicx/__init__.py,sha256=rQOcuynoXLIuaS7viIXB0wih4d-obon5BtFmZWWbzsc,2468
107
+ pygeodesy/geodesicx/__main__.py,sha256=834PZqoetW0V3xeIvCSbh6TPMCv8wq2-mUIm8cLkv-w,4330
108
+ pygeodesy/geodesicx/gx.py,sha256=qXz-YWiIjJhg2ytyFKFvjXAkVqTqQ26TzzGU3bncbfE,60438
109
+ pygeodesy/geodesicx/gxarea.py,sha256=0wML9AmCgb9mJj7q7OPP0QHgIDcCQVp_4UuNWHfhpDA,19588
110
+ pygeodesy/geodesicx/gxbases.py,sha256=FC9oZLaKy-uf8o5Bmmr7MK4jBBvhzgaETzb5Qdixa04,6319
111
+ pygeodesy/geodesicx/gxline.py,sha256=PoPa_Qz9KSmP6Pb3LZgQg-9FcLpvMuVBRwxAkAtrYOw,28284
112
+ pygeodesy/rhumb/__init__.py,sha256=wetV7OwO6z-_D0FVTphwu6u0bA7h-sG3pfZa3WGAvfk,2296
113
+ pygeodesy/rhumb/aux_.py,sha256=s5jfZGkRe_Izjrv0rSpx2_0j5SA6nW9YT4ElhLS9Bw0,16117
114
+ pygeodesy/rhumb/bases.py,sha256=RBWGVBogfZAT7azFe-46mF_hUoI-bIvWCxwoiE8-Pvo,54218
115
+ pygeodesy/rhumb/ekx.py,sha256=L__f41hdrU8cVcqbWolEvdLAXtQdULlYhxsbccoYwok,24058
116
+ pygeodesy/rhumb/solve.py,sha256=85GonvF3qsp8I--XA2DUuwR0J7BU4S3O9BjnLEStcMw,24910
117
+ pygeodesy/triaxials/__init__.py,sha256=dZ3zXLWIIGhjMBYE6-8gJSfokNw4x5wg7eaTGSZH2Hw,3894
118
+ pygeodesy/triaxials/bases.py,sha256=qbD-YLERQqe4jcz4UxEjNI1ZEnTOBQ695__HUf0jbLA,33963
119
+ pygeodesy/triaxials/conformal3.py,sha256=FrJLQ0m58YvP_heh9jFH5TkhR46kSTzCIgtmtRPMErQ,23883
120
+ pygeodesy/triaxials/triaxial3.py,sha256=uj3XFLbh6bGOHHiqeulJiQjmnKNOB5-e1OYjAcsD5sk,40578
121
+ pygeodesy/triaxials/triaxial5.py,sha256=C38E8Atkxfiu8J6HOfkUUVU5lRn2kIjdSh5opkMep-s,53028
122
+ pygeodesy-25.12.12.dist-info/METADATA,sha256=lNnk-d-YFxVq-Cx-_fBBdcJLdY-KfoH5IS9E0nk6nw0,20145
123
+ pygeodesy-25.12.12.dist-info/WHEEL,sha256=Kh9pAotZVRFj97E15yTA4iADqXdQfIVTHcNaZTjxeGM,110
124
+ pygeodesy-25.12.12.dist-info/top_level.txt,sha256=cEQPatCXzKZqrivpULC5V5fuy9_V_bAwaP_gUGid7pQ,10
125
+ pygeodesy-25.12.12.dist-info/RECORD,,
@@ -1,119 +0,0 @@
1
- pygeodesy/LICENSE,sha256=YfgAiyxOwY6P9Kkb1_5XN81nueTLrpb3Ffkv3EuPgFU,1144
2
- pygeodesy/__init__.py,sha256=EYklJAQ7lqBC-O6RmgGjNRqP81HDX2w9pnSQ6YiQd0w,42328
3
- pygeodesy/__main__.py,sha256=HpOBmuhI7yVP1FIAEugvd9Lb54kzew-nM78be0r4SC4,5597
4
- pygeodesy/albers.py,sha256=mb3YbVvoBq8a7AytT0HeVxe8DGEvx1KFN2Usl2ksKwk,30908
5
- pygeodesy/azimuthal.py,sha256=GI7nM7RWDwOh5DKYrrZBZDHcP9aSJgCBSdgDm2ovLvY,49849
6
- pygeodesy/basics.py,sha256=sKIyFcBNz6UzzY2YRr0bt1WuQLnEFUMfLKW7z4vCOII,32915
7
- pygeodesy/booleans.py,sha256=sYXV22cKtZlJXhwxcWK5gW5r0qSOP71XnFwC4xAsa0s,72636
8
- pygeodesy/cartesianBase.py,sha256=KX74yZE-fM7wHDnrV5OkAEyKwyZJy5o9VuzVjb1caZQ,45355
9
- pygeodesy/clipy.py,sha256=a7khVUnc9PjCU7sLN2RP4BsSwDNpKlIMEasfz2wCKoc,27481
10
- pygeodesy/constants.py,sha256=8b6xQigjfq5FZYX1FCdJV4eqaHcmZr33ylq4Y0XggJc,21049
11
- pygeodesy/css.py,sha256=vdQax5m7BMSpr7PUyqedCSvx73ilWuhXQTp39i8FOfA,25793
12
- pygeodesy/datums.py,sha256=Vp1fP7sSV1EuRbuO2scnZ3qiTZD1CvL4O12KSRlf1SU,34068
13
- pygeodesy/dms.py,sha256=egtF9gjReovgaSKJ_27KHZjvo4vLDdLEZ7yXSf19EZs,42202
14
- pygeodesy/ecef.py,sha256=vxLhJeyl9EWEYTiX97cuyJuimyI3upsX2M4R30yEFNM,62577
15
- pygeodesy/ecefLocals.py,sha256=zoxGUJeYX2UXzR9r0jaByrvfrrpmrvAhjyQsz433RjA,7794
16
- pygeodesy/elevations.py,sha256=WrWPZNgkZX9Ys_1ij_gyE4jzdIv85JYAaR2cK3vc4gQ,10879
17
- pygeodesy/ellipsoidalBase.py,sha256=UpmJfjAuC7pvN9VIxLXveAmotPVW7oL2APAJUTi34Uc,55711
18
- pygeodesy/ellipsoidalBaseDI.py,sha256=PbSJkUUHpRGYgnnciMD-sWqTCReZv_FAc8SUonF3ZbI,38544
19
- pygeodesy/ellipsoidalExact.py,sha256=WEAEviB1xnWDy4OTg-XCleL14LPl2cbfO6s_FhbG8bY,17120
20
- pygeodesy/ellipsoidalGeodSolve.py,sha256=l6JwzuMlzBONhJTJhm7oi-x-FWx9cKAAIM1kMDOFaf0,17108
21
- pygeodesy/ellipsoidalKarney.py,sha256=W_Liw5MxTqJJGsxMi50ui8grRSPKwkG2HH-Mv_mXQYk,18839
22
- pygeodesy/ellipsoidalNvector.py,sha256=HLFjX6o26q2fzVCjLSL0PdEh96xhGtjfzo2V_k54j4A,30146
23
- pygeodesy/ellipsoidalVincenty.py,sha256=zeTvid09NGuYJ1WJ__a3ApCBGSzX0A-Rhs8-sQXMNQQ,26273
24
- pygeodesy/ellipsoids.py,sha256=hdBT-Vl5Ukq51s19brzctT0vZfh8qZYlbUjmrrQPE-Q,108817
25
- pygeodesy/elliptic.py,sha256=uWxzmr7woRKqhsBWm6iGTwag5Ga0L184szkPWN3diSg,45515
26
- pygeodesy/epsg.py,sha256=VIBidzAEuoBF4LdlJ4r3WtpL0Ymhru8kf4fAgfFr5ok,8220
27
- pygeodesy/errors.py,sha256=HCFhdUtRzE51CnQseuB2BgJ7MFLysmOhpbnjaEupIhA,32498
28
- pygeodesy/etm.py,sha256=swF0QL52uo_DK073hymix8IitMyArOf-n0LL98BGwRU,46796
29
- pygeodesy/fmath.py,sha256=5gPHRqD5DbPqrM8BFRFVo1IYumKUVWoTcvEtzc8BFiE,37812
30
- pygeodesy/formy.py,sha256=7-CdPiagdVrbDMjWieX_guN4RvFVCYKOM3yDKSFPRWU,69777
31
- pygeodesy/frechet.py,sha256=dBnQ5ePuaUdKv62-e9RfovFDxELsZPQEKMLww9NOf7Q,35588
32
- pygeodesy/fstats.py,sha256=M6UOrwmeGp6kjYuYfc6Iq9ibMJAFNm6D4C5GnvlJeuM,28348
33
- pygeodesy/fsums.py,sha256=I2yr6XtQH4Mf4qaiSuta2U_sKc_N0xCc7cIez9YLVo4,104978
34
- pygeodesy/gars.py,sha256=AXioT4Lh1cwrd7fF6dHcVJw-9vu2oAnZrzo_ka2Y3Ts,11761
35
- pygeodesy/geodesici.py,sha256=V2FW_xQUwm6HfiVoZoBXhipsAV0EjXHnAc_wUG78kAQ,74889
36
- pygeodesy/geodesicw.py,sha256=xDxxxr4HOT-8Mh85zD6QZzyO-mfqUavfwQMStYrsF8c,30029
37
- pygeodesy/geodsolve.py,sha256=_s6Wk13yTI8eTsaMpnzjqacNXLjPh_HoevmjECtrRjE,28668
38
- pygeodesy/geohash.py,sha256=bqJMuA0-TH2vgOd7VaW1q4dw8KL43oCmV3eSjP90Bak,40124
39
- pygeodesy/geoids.py,sha256=m0EqTAKCuOVxrRpoPdmgymu0i0ufV2xpdt_laJLFqqE,86129
40
- pygeodesy/hausdorff.py,sha256=KGB0CIeNkBqR0sXIbRJvcgXPrM-4Mpi2aBOqDeZjqZ0,32269
41
- pygeodesy/heights.py,sha256=q7ej8RO-iZ5hfNi3OxwO3w_Opk4xHAZIzHbcbFTO3CA,41011
42
- pygeodesy/internals.py,sha256=RS_8XXDMoZqgDizztPtvyn8kl3rozS4n5vg8CjOp_WQ,24712
43
- pygeodesy/interns.py,sha256=QTP_6rStQ283DE-rL7rCAcfEffuiAXustBGkCY_DHJ0,23508
44
- pygeodesy/iters.py,sha256=nKVp_LUQyTqOz_OLzY25g6-_xlKG7lmAnjKKMXESmiM,20345
45
- pygeodesy/karney.py,sha256=GJuruLHO7IjhwXYNh507EbHO5VFNXwhRpzIkaGCec7c,41652
46
- pygeodesy/ktm.py,sha256=9eZ5Wk2HHhRl0IyypJ4guhhxGJLriWZm0Wfb3Z9Gf7Y,27270
47
- pygeodesy/latlonBase.py,sha256=eF8tr0fP9nc8JMGbJ0JyeFfECZyjlBJbtIchKRdU4B4,75317
48
- pygeodesy/lazily.py,sha256=_8ZqQgupvH2cKVl84Q6yM8o6ySyef6Ioyvr77mXDFcU,47802
49
- pygeodesy/lcc.py,sha256=nU_aWXgsxwB53c3CKM-dBQoDRoypkrY-tVmKmU9yQQ8,25785
50
- pygeodesy/ltp.py,sha256=N3TMipTWKUOeZYzn3UeJJqe5J4Yk788390ohQM1ykAE,50893
51
- pygeodesy/ltpTuples.py,sha256=t-n7p9A3JCVasv8LKCV4PkOTmXJZi91BkBFm8pBZM5o,59101
52
- pygeodesy/mgrs.py,sha256=ZgCBH_M_YFxuFu5ukVOVetk-uftv-4GJP-QJrtoqtcU,29842
53
- pygeodesy/named.py,sha256=_dlImd3OzHS1vqm673e7CEJVXkbczaAwckw8H8SGoEM,52787
54
- pygeodesy/namedTuples.py,sha256=JlO8uWmR65RkT7Rdgc9knfI0-bqJeA-tm2ZKsesztVU,30598
55
- pygeodesy/nvectorBase.py,sha256=r-O-ErwTXqDfLg4zYqhB4IqTJc8P8rbJlMm0XfQN2Gs,29927
56
- pygeodesy/osgr.py,sha256=4mFUcn1vMOju3PK1rKohPtIlJZrBGPJrcRjFl-CoxqE,30852
57
- pygeodesy/points.py,sha256=2vQpgqxJiC7Cgn03pqiezTM4I-CTquv9tQZi4uYWjpw,64497
58
- pygeodesy/props.py,sha256=GCBqrkMfpbHuca2Sh68WSGDplIeZLvCDDXUewyvEiqI,24600
59
- pygeodesy/resections.py,sha256=vCbnEyNghGkblrPA58-MspaxkZcInnvRgS-oSBIe1hM,43796
60
- pygeodesy/simplify.py,sha256=O04NSb0ezXM8z3lCcajXbetZuum6PURAOPYTsJ27gxI,22068
61
- pygeodesy/solveBase.py,sha256=mZdud0LveosWEXbufVzTMM9y6wuObS0O2clDX2LmRgE,18864
62
- pygeodesy/sphericalBase.py,sha256=hq6dyeeIHBy_T0Q6PIwSvmo1U70Ir5KBeMTwQplzqHQ,32071
63
- pygeodesy/sphericalNvector.py,sha256=bu0yB4PEq1cs6BS8QFqtljWpVEw7ESwq2yILOzGDuAc,54948
64
- pygeodesy/sphericalTrigonometry.py,sha256=PqxNMSK8DI7TJuOtkQ5afzJtLfDzOkVe_tRdLTq9x14,64398
65
- pygeodesy/streprs.py,sha256=UYlk5v-GEJHMDiHZsqLssY3h6J5LbFw9dsCsKJbiERs,23684
66
- pygeodesy/trf.py,sha256=M0kzyclDJ5q4wCr-2HDIj6_J42FsrffnFGiyPkgHEmE,119216
67
- pygeodesy/triaxials.py,sha256=tj2IjG6BLmtp6PjcX-xsEv9ONv2eAp49amwon9L6v4Y,66992
68
- pygeodesy/units.py,sha256=DOSFqTdX1ryabNaQ0kmUvC1RpYzOw1i0T1205ovYeno,35561
69
- pygeodesy/unitsBase.py,sha256=cVNKG24Fov73gLFPGwGdjvXmM-8fd3MDufVubABAMeE,14141
70
- pygeodesy/ups.py,sha256=k7MDyq_aKO70m8sEeOCvpFb3nyrBmBdbdPST-UgxgeA,23349
71
- pygeodesy/utily.py,sha256=1f5tMdkmfLaYNg0ALHLpcIixuLimjLCiAVqpf_FbRng,41098
72
- pygeodesy/utm.py,sha256=kcXliftP9q0nTxviIOixVyvResK2Jydj-G52CXJiSuQ,31123
73
- pygeodesy/utmups.py,sha256=31RD8l7M-vcRXU9_wnkb_PNUcKjOr1HAmwjOndjkgXE,13176
74
- pygeodesy/utmupsBase.py,sha256=PptZ4Mm8BaDUCA8v1sK54o8idw_24kq6loAuYv0bejE,22730
75
- pygeodesy/vector2d.py,sha256=3Pqadaafd0vn4DWCHq5gaE3utL0PDZxp9hI_G5j3O1I,40306
76
- pygeodesy/vector3d.py,sha256=sC7u9tgFFWoWHFxqtO-dvKVuiEzraw50TDU_QpdDbYw,43045
77
- pygeodesy/vector3dBase.py,sha256=YMX3veS3EEjVkFszCgztbX_NtHQXd1BgaKZ898_wgJI,40884
78
- pygeodesy/webmercator.py,sha256=z3Ft5TeHc9FoLA8zQhzTrSuShHSz0aHjanbvj53ohmo,15016
79
- pygeodesy/wgrs.py,sha256=1MK72g3HsfdsvChM6rBy_auxzSvWHSoer8fEuT4LinI,15503
80
- pygeodesy/auxilats/_CX_4.py,sha256=DX67nZ1E4nOis8d_wQ8tn5T-SAVNDBJH3kp9IuQc8lM,6830
81
- pygeodesy/auxilats/_CX_6.py,sha256=T89kMuUijlLZzmqoI8XiTGTOzj4A4SKhCyt_rOroCq4,11278
82
- pygeodesy/auxilats/_CX_8.py,sha256=Ff_VTStb-dZkGz7-RL1tzymPgPbTwtl_6EzPquPMamc,18900
83
- pygeodesy/auxilats/_CX_Rs.py,sha256=hMPcfAQbkD1DzwrRTB9pecfoytxHilPp5__n6UYUNlE,8679
84
- pygeodesy/auxilats/__init__.py,sha256=kyIPbhyaXR1I6M4uyRf5VOOJ4EGqdURrrz34u5fvHho,2883
85
- pygeodesy/auxilats/__main__.py,sha256=jH0ShJaDR8zWfoLPXuut37BJbVWVDsAm9rb4xc25XOY,3340
86
- pygeodesy/auxilats/auxAngle.py,sha256=4Yb_RphD_OKVSPr--85uThNFTAMrsBfia9ba183mvtY,16751
87
- pygeodesy/auxilats/auxDLat.py,sha256=lvffZo8DdVWWEHusPNXRYQeoCFfZcG5rNhgEooL5Xu0,10956
88
- pygeodesy/auxilats/auxDST.py,sha256=ab8ByHMmX1dWBmGgOGxYUlmkZqTKKpawg5maLYYrG7M,10464
89
- pygeodesy/auxilats/auxLat.py,sha256=2d6uliIVfxOHp8qibom-8l5T7bLONSyTr6LRTt4OwRs,31972
90
- pygeodesy/auxilats/auxily.py,sha256=eA5-QSr3pZgY_5dJQsIiCWwlXofZsYJTGQVpMhfybSs,8085
91
- pygeodesy/deprecated/__init__.py,sha256=avPno_C9H8QYbAsNRkxPIyfYX_tDHeakKqSsJMwJU9U,2823
92
- pygeodesy/deprecated/bases.py,sha256=pL4fEW7PTrDc_coggRCcnrs3izp-MWUEyvr6yBNzgMw,1649
93
- pygeodesy/deprecated/classes.py,sha256=8va_ePoOq_TWkzOMJTeaIwyEuDGP9sYsbChnuH7FdqU,17266
94
- pygeodesy/deprecated/consterns.py,sha256=RC-YvqQXAEVoIaLnaLrIrA1Mr3oXLk3HT9n1HLvGCSs,1917
95
- pygeodesy/deprecated/datum.py,sha256=aeY-POZBZrKKiTnrhqOImV5AfiXu2-9Vz8xu_d4ze2g,1910
96
- pygeodesy/deprecated/functions.py,sha256=TK3T1zGAmTLowLeKZik7qknRBthCqjIGhdOjebnCdhE,15844
97
- pygeodesy/deprecated/nvector.py,sha256=rttz-znpX2Tm1ttoJt8_E8V_9n_ZciKi_CvvbwFmZQM,2117
98
- pygeodesy/deprecated/rhumbBase.py,sha256=y1DcGwGBfIbbTK5upm1XgkbCVIlpGc5MLDn5WxcuLp8,1370
99
- pygeodesy/deprecated/rhumbaux.py,sha256=pikSwb5cIE-MVwHPFjwGd-JYau_Of-Lf6wgghjNWS98,1423
100
- pygeodesy/deprecated/rhumbsolve.py,sha256=GRyrxUTT19gjSe8BohUswxXRBjoNWrzQryPbqTH2XhE,1426
101
- pygeodesy/deprecated/rhumbx.py,sha256=YSzTywlDLfVYZmJjAEi_gLtWbsf4eGxZembaL3wOTuk,1420
102
- pygeodesy/geodesicx/_C4_24.py,sha256=3OkzOxf0DdO1QL4N9CVYjpOgFCm8FcYjCyvcTLpL2wc,90707
103
- pygeodesy/geodesicx/_C4_27.py,sha256=grqtju94Nu9V_eQPqe_7aRbLCYflxRuK127pPOPwuDA,134215
104
- pygeodesy/geodesicx/_C4_30.py,sha256=I4ZuTy64yOq1IVgRtc_kqOL0HnKzXeTea7kTFSolcJs,201921
105
- pygeodesy/geodesicx/__init__.py,sha256=1wUYni2aucT66bNkOqp1ZOix6a4rlBRHJimUDUWIgt4,2468
106
- pygeodesy/geodesicx/__main__.py,sha256=ZWx2vPPaQEXwFBQWOjKYrjM9Deb0b-_778PxwiM1Rww,4330
107
- pygeodesy/geodesicx/gx.py,sha256=uEXulVciKipCz28VMQqhtV0kLuy71vy-EFF42GWWi-Q,60438
108
- pygeodesy/geodesicx/gxarea.py,sha256=a_yhNsjjRM0E9-WYBbhHjaefjLuAzhNQxTHiv0LnvO0,19588
109
- pygeodesy/geodesicx/gxbases.py,sha256=qb1tYsh2nIvyXoVhU-pdmolANHj9tHZxiH2f7Ls3Jkw,6319
110
- pygeodesy/geodesicx/gxline.py,sha256=9aUbLEok0ewg8j1UpZ1Ud7X0zH8Mu6QoUO2bjdpmEag,28284
111
- pygeodesy/rhumb/__init__.py,sha256=MByyXXwg0kJRHckEfaxWMW_2i4U15rRRgN7iTzeOK_I,2207
112
- pygeodesy/rhumb/aux_.py,sha256=2FbR_0Y0ofOROay2Z16oiLILhd7G50LUiatkQhBwEMA,16117
113
- pygeodesy/rhumb/bases.py,sha256=R-QLV8a0KZUvaI1wEkyAG4yO-IQNNK4I2O7WRIMBJuo,54218
114
- pygeodesy/rhumb/ekx.py,sha256=LlMjVJqb-Q5rJnexJi-0TPRkUZkJaPQ7fVRypxkxNjo,24058
115
- pygeodesy/rhumb/solve.py,sha256=z8z_XYObTgz7w1skNLNcLBpe-EO_r0H4sVcZGlBcWnc,24005
116
- pygeodesy-25.11.5.dist-info/METADATA,sha256=tohssI5czjmAyKZhTBWpSr9Qu8FBC0_4_xyXLYbhaKc,20142
117
- pygeodesy-25.11.5.dist-info/WHEEL,sha256=Kh9pAotZVRFj97E15yTA4iADqXdQfIVTHcNaZTjxeGM,110
118
- pygeodesy-25.11.5.dist-info/top_level.txt,sha256=cEQPatCXzKZqrivpULC5V5fuy9_V_bAwaP_gUGid7pQ,10
119
- pygeodesy-25.11.5.dist-info/RECORD,,