pygeodesy 25.11.5__py2.py3-none-any.whl → 25.12.31__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 +46 -25
  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 +29 -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 +30 -17
  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 +19 -14
  52. pygeodesy/formy.py +251 -10
  53. pygeodesy/frechet.py +1 -1
  54. pygeodesy/fstats.py +1 -1
  55. pygeodesy/fsums.py +41 -29
  56. pygeodesy/gars.py +1 -1
  57. pygeodesy/geod3solve.py +489 -0
  58. pygeodesy/geodesici.py +9 -8
  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 +2 -2
  64. pygeodesy/geodesicx/__main__.py +1 -1
  65. pygeodesy/geodesicx/gx.py +1 -1
  66. pygeodesy/geodesicx/gxarea.py +54 -24
  67. pygeodesy/geodesicx/gxbases.py +1 -1
  68. pygeodesy/geodesicx/gxline.py +1 -1
  69. pygeodesy/geodsolve.py +73 -104
  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 +152 -151
  78. pygeodesy/ktm.py +1 -1
  79. pygeodesy/latlonBase.py +1 -1
  80. pygeodesy/lazily.py +24 -13
  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 +15 -10
  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 +6 -4
  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 +2 -4
  104. pygeodesy/triaxials/__init__.py +70 -0
  105. pygeodesy/triaxials/bases.py +966 -0
  106. pygeodesy/triaxials/conformal3.py +617 -0
  107. pygeodesy/triaxials/triaxial3.py +968 -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.31.dist-info}/METADATA +28 -21
  122. pygeodesy-25.12.31.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.31.dist-info}/WHEEL +0 -0
  125. {pygeodesy-25.11.5.dist-info → pygeodesy-25.12.31.dist-info}/top_level.txt +0 -0
pygeodesy/__init__.py CHANGED
@@ -8,8 +8,8 @@ geodetic (lat-/longitude), geocentric (U{ECEF<https://WikiPedia.org/wiki/ECEF>}
8
8
  <https://GeographicLib.SourceForge.io/1.44/triaxial.html>} coordinates.
9
9
 
10
10
  Transcoded in part from U{JavaScript originals<https://GitHub.com/ChrisVeness/geodesy>} by I{Chris Veness (C)
11
- 2005-2024} and from several U{C++ classes<https://GeographicLib.SourceForge.io/C++/doc/annotated.html>} by I{Charles
12
- F. F. Karney (C) 2008-2024} and published under the same U{MIT License<https://OpenSource.org/licenses/MIT>}**.
11
+ 2005-2025} and from several U{C++ classes<https://GeographicLib.SourceForge.io/C++/doc/annotated.html>} by I{Charles
12
+ F. F. Karney (C) 2008-2025} and published under the same U{MIT License<https://OpenSource.org/licenses/MIT>}**.
13
13
 
14
14
  There are four modules for ellipsoidal earth models, C{ellipsoidalExact}, C{-Karney}, C{-Vincenty} and C{-Nvector}
15
15
  and two for spherical ones, C{sphericalTrigonometry} and C{-Nvector}. Each module provides a geodetic B{C{LatLon}}
@@ -101,9 +101,15 @@ and L{GnomonicGeodSolve} depend on I{Karney}'s C++ utility U{GeodSolve
101
101
  <https://GeographicLib.SourceForge.io/C++/doc/GeodSolve.1.html>} to be executable and set with
102
102
  env variable C{PYGEODESY_GEODSOLVE} or with property L{Ellipsoid.geodsolve}.
103
103
 
104
+ Triaxial geodesic classes L{Geodesic3Solve} and L{GeodesicLine3Solve} in module L{geod3solve} need
105
+ I{Karney}'s C++ utility U{Geod3Solve<https://GeographicLib.SourceForge.io/C++/doc/Geod3Solve.1.html>}
106
+ to be executable and set with env variable C{PYGEODESY_GEOD3SOLVE} or with property
107
+ L{Geodesic3Solve.Geod3Solve<geod3solve._Geodesic3SolveBase.Geod3Solve>}.
108
+
104
109
  Class L{Intersectool} in module L{geodesici} needs I{Karney}'s C++ utility U{IntersectTool
105
110
  <https://GeographicLib.SourceForge.io/C++/doc/IntersectTool.1.html>} to be executable and set with
106
- env variable C{PYGEODESY_INTERSECTTOOL}.
111
+ env variable C{PYGEODESY_INTERSECTTOOL} or with property L{Intersectool.IntersectTool
112
+ <geodesici.Intersectool.IntersectTool>}.
107
113
 
108
114
  To compare C{MGRS} results from modules L{mgrs} and C{testMgrs} with I{Karney}'s C++ utility
109
115
  U{GeoConvert<https://GeographicLib.SourceForge.io/C++/doc/GeoConvert.1.html>}, the latter must
@@ -125,39 +131,41 @@ C{epydoc --html --no-private --no-source --name=pygeodesy --url=... -v pygeodesy
125
131
  Tests
126
132
  =====
127
133
 
128
- The tests ran with Python 3.14 (with U{geographiclib<https://PyPI.org/project/geographiclib>} 2.1),
129
- Python 3.13.7 (with U{geographiclib<https://PyPI.org/project/geographiclib>} 2.1),
134
+ The tests ran with Python 3.14.2 (with U{geographiclib<https://PyPI.org/project/geographiclib>} 2.1),
135
+ Python 3.13.9 (with U{geographiclib<https://PyPI.org/project/geographiclib>} 2.1),
130
136
  U{numpy<https://PyPI.org/project/numpy>} 2.3.3, U{scipy<https://PyPI.org/project/scipy>} 1.16.2,
131
- U{GeoConvert<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.5 and
132
- U{GeodSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.5),
137
+ U{GeoConvert<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.7 and
138
+ U{GeodSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.7),
133
139
  Python 3.12.7 (with U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0,
134
140
  U{numpy<https://PyPI.org/project/numpy>} 2.1.0, U{scipy<https://PyPI.org/project/scipy>} 1.14.1,
135
- U{GeodSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.5,
136
- U{IntersectTool<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.5 and
137
- U{RhumbSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.5),
141
+ U{GeodSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.7,
142
+ U{GeodS3olve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.7,
143
+ U{IntersectTool<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.7 and
144
+ U{RhumbSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.7),
138
145
  Python 3.11.5 (with U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0,
139
146
  U{numpy<https://PyPI.org/project/numpy>} 1.24.2 and U{scipy<https://PyPI.org/project/scipy>} 1.10.1),
140
147
  and with Python 2.7.18 (with U{geographiclib<https://PyPI.org/project/geographiclib>} 1.50,
141
148
  U{numpy<https://PyPI.org/project/numpy>} 1.16.6, U{scipy<https://PyPI.org/project/scipy>} 1.2.2,
142
- U{GeoConvert<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.5,
143
- U{GeodSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.5,
144
- U{IntersectTool<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.5 and
145
- U{RhumbSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.5), all in 64-bit on
146
- macOS 26.0.1 Tahoe.
149
+ U{GeoConvert<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.7,
150
+ U{GeodSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.7,
151
+ U{Geod3Solve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.7,
152
+ U{IntersectTool<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.7 and
153
+ U{RhumbSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.7), all in 64-bit on
154
+ macOS 26.2 Tahoe.
147
155
 
148
156
  All tests ran with and without C{lazy import} for Python 3 and with command line option C{-W default} and
149
157
  env variable C{PYGEODESY_WARNINGS=on} for all Python versions. The results of those tests are included in
150
158
  the distribution files.
151
159
 
152
160
  Test coverage has been measured with U{coverage<https://PyPI.org/project/coverage>} 7.10.7 using Python
153
- 3.14, 3.13.7 and 3.12.7. The complete coverage report in HTML and a PDF summary are included in the
161
+ 3.14.2, 3.13.9 and 3.12.7. The complete coverage report in HTML and a PDF summary are included in the
154
162
  distribution files.
155
163
 
156
- Python 3.14, 3.13.7, 3.12.7 and 3.11.5 run on Apple M4 Si (C{arm64}), I{natively}. Python 2.7.18 runs
164
+ Python 3.14.2, 3.13.9, 3.12.7 and 3.11.5 run on Apple Si M4 (C{arm64}), I{natively}. Python 2.7.18 runs
157
165
  on Intel (C{x86_64}) or Intel I{emulation} ("C{arm64_x86_64}", see function L{machine<pygeodesy.machine>}).
158
166
 
159
- The tests also ran with Python 3.13.7 (and U{geographiclib<https://PyPI.org/project/geographiclib>} 2.1) on
160
- U{Debian 12<https://Cirrus-CI.com/github/mrJean1/PyGeodesy/master>} in 64-bit only, with Python 3.12.8 (and
167
+ The tests also ran with Python 3.14.2 (and U{geographiclib<https://PyPI.org/project/geographiclib>} 2.1) on
168
+ U{Debian 12<https://Cirrus-CI.com/github/mrJean1/PyGeodesy/master>} in 64-bit only, with Python 3.13.9 (and
161
169
  U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0) on U{Windows 2019Server
162
170
  <https://CI.AppVeyor.com/project/mrJean1/pygeodesy>} in 64-bit only and with Python 2.7.18 (and U{geographiclib
163
171
  <https://PyPI.org/project/geographiclib>} 1.52) on U{Windows 10<https://CI.AppVeyor.com/project/mrJean1/pygeodesy>}
@@ -166,7 +174,7 @@ in 64- and 32-bit.
166
174
  A single-File and single-Directory application with C{pygeodesy} has been bundled using U{PyInstaller
167
175
  <https://PyPI.org/project/pyinstaller>} 3.4 and 64-bit Python 3.7.3 on macOS 10.13.6 High Sierra.
168
176
 
169
- 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.6, 3.9.1, 3.8.7, 3.7.1, 2.7.15,
177
+ 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.6, 3.9.1, 3.8.7, 3.7.1, 2.7.15,
170
178
  U{PyPy<https://PyPy.org>} 7.3.12 (Python 3.10.12), 7.3.1 (Python 3.6.9) and U{PyPy<https://PyPy.org>} 7.1.1 (Python
171
179
  2.7.13) (and U{geographiclib <https://PyPI.org/project/geographiclib>} 1.52, U{numpy<https://PyPI.org/project/numpy>}
172
180
  1.16.3, 1.16.4, 1.16.6, 1.19.0, 1.19.4, 1.19.5 or 1.22.4 and U{scipy<https://PyPI.org/project/scipy>} 1.2.1, 1.4.1,
@@ -187,10 +195,10 @@ Notes
187
195
  =====
188
196
 
189
197
  All Python source code has been statically U{checked<https://GitHub.com/ActiveState/code/tree/master/recipes/Python/
190
- 546532_PyChecker_postprocessor>} with U{Ruff<https://GitHub.com/astral-sh/ruff>} using Python 3.13.7 and with
198
+ 546532_PyChecker_postprocessor>} with U{Ruff<https://GitHub.com/astral-sh/ruff>} using Python 3.13.9 and with
191
199
  U{PyChecker<https://PyPI.org/project/pychecker>}, U{PyFlakes<https://PyPI.org/project/pyflakes>}, U{PyCodeStyle
192
200
  <https://PyPI.org/project/pycodestyle>} (formerly Pep8) and U{McCabe<https://PyPI.org/project/mccabe>} using Python
193
- 2.7.18, both in 64-bit on macOS 26.0.1 Tahoe.
201
+ 2.7.18, both in 64-bit on macOS 26.2 Tahoe.
194
202
 
195
203
  For a summary of all I{Karney}-based functionality in C{pygeodesy}, see module U{karney
196
204
  <https://mrJean1.GitHub.io/PyGeodesy/docs/pygeodesy.karney-module.html>}.
@@ -210,6 +218,7 @@ The following environment variables are observed by C{pygeodesy}:
210
218
  - C{PYGEODESY_FSUM_RESIDUAL} - see module L{fsums<pygeodesy.fsums>} and method L{RESIDUAL<pygeodesy.Fsum.RESIDUAL>}.
211
219
  - C{PYGEODESY_GEOCONVERT} - see module L{mgrs<pygeodesy.mgrs>}.
212
220
  - C{PYGEODESY_GEODSOLVE} - see module L{geodsolve<pygeodesy.geodsolve>}.
221
+ - C{PYGEODESY_GEOD3SOLVE} - see module L{geod3solve<pygeodesy.geod3solve>}.
213
222
  - C{PYGEODESY_INTERSECTTOOL} - see module L{geodesici<pygeodesy.geodesici>}.
214
223
  - C{PYGEODESY_LAZY_IMPORT} - see module L{lazily<pygeodesy.lazily>} and variable L{isLazy<pygeodesy.isLazy>}.
215
224
  - C{PYGEODESY_NOTIMPLEMENTED} - C{__special__} methods return C{NotImplemented} if set to "std".
@@ -247,7 +256,7 @@ and:
247
256
  License
248
257
  =======
249
258
 
250
- **) U{Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.<https://OpenSource.org/licenses/MIT>}
259
+ **) U{Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.<https://OpenSource.org/licenses/MIT>}
251
260
 
252
261
  C{Permission is hereby granted, free of charge, to any person obtaining a copy of this software
253
262
  and associated documentation files (the "Software"), to deal in the Software without restriction,
@@ -273,6 +282,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.}
273
282
  @var EPS2: M{EPS * 2} ≈ 4.440892098501e-16 (C{float}).
274
283
  @var EPS_2: M{EPS / 2} ≈ 1.110223024625e-16 (C{float}).
275
284
  @var EPS4: M{EPS * 4} ≈ 8.881784197001e-16 (C{float}).
285
+ @var EPS8: M{EPS * 8} ≈ 1.776356839400e-15 (C{float}).
276
286
 
277
287
  @var F_D: Format degrees as unsigned "deg°" with symbol, plus compass point suffix C{N, S, E} or C{W} (C{str}).
278
288
  @var F_DM: Format degrees as unsigned "deg°min′" with symbols, plus suffix (C{str}).
@@ -321,6 +331,8 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.}
321
331
  @var NINF: Negative infinity (C{float}), see function L{isninf<pygeodesy.isninf>} and C{INF}.
322
332
  @var NN: Empty (C{str}), U{I{Nomen Nescio}<https://Wiktionary.org/wiki/N.N.>}.
323
333
 
334
+ @var OVERFLOW: Object representing C{overflow} (1 / L{EPS0<pygeodesy.constants.EPS0>} = 4.9e+32).
335
+
324
336
  @var PI: Constant M{math.pi} (C{float}).
325
337
  @var PI2: Two PI, M{PI * 2}, aka I{Tau} (C{float}).
326
338
  @var PI_2: Half PI, M{PI / 2} (C{float}).
@@ -395,6 +407,7 @@ if _init__all__ and not _lazy_import2: # import and set __all__
395
407
 
396
408
  # import all public modules and export as such
397
409
  import pygeodesy.albers as albers # noqa: F401
410
+ import pygeodesy.angles as angles # noqa: F401
398
411
  import pygeodesy.auxilats as auxilats # noqa: F401
399
412
  import pygeodesy.azimuthal as azimuthal # noqa: F401
400
413
  import pygeodesy.basics as basics # noqa: F401
@@ -431,6 +444,7 @@ if _init__all__ and not _lazy_import2: # import and set __all__
431
444
  import pygeodesy.geodesicw as geodesicw # noqa: F401
432
445
  import pygeodesy.geodesicx as geodesicx # noqa: F401
433
446
  import pygeodesy.geodsolve as geodsolve # noqa: F401
447
+ import pygeodesy.geod3solve as geod3solve # noqa: F401
434
448
  import pygeodesy.geohash as geohash # noqa: F401
435
449
  import pygeodesy.geoids as geoids # noqa: F401
436
450
  import pygeodesy.hausdorff as hausdorff # noqa: F401
@@ -481,6 +495,7 @@ if _init__all__ and not _lazy_import2: # import and set __all__
481
495
  # NOT modules ellipsoidal*, epsg, gars, geohash, spherical*,
482
496
  # vector and wgrs ... in order keep those as modules ONLY
483
497
  from pygeodesy.albers import * # noqa: F403
498
+ from pygeodesy.angles import * # noqa: F403
484
499
  from pygeodesy.azimuthal import * # noqa: F403
485
500
  # from pygeodesy.auxilats import * # noqa: F403
486
501
  from pygeodesy.basics import * # noqa: F403
@@ -517,6 +532,7 @@ if _init__all__ and not _lazy_import2: # import and set __all__
517
532
  from pygeodesy.geodesicw import * # noqa: F403
518
533
  from pygeodesy.geodesicx import * # noqa: F403
519
534
  from pygeodesy.geodsolve import * # noqa: F403
535
+ from pygeodesy.geod3solve import * # noqa: F403
520
536
  from pygeodesy.geohash import * # noqa: F403
521
537
  from pygeodesy.geoids import * # noqa: F403
522
538
  from pygeodesy.hausdorff import * # noqa: F403
@@ -548,6 +564,11 @@ if _init__all__ and not _lazy_import2: # import and set __all__
548
564
  from pygeodesy.streprs import * # noqa: F403
549
565
  from pygeodesy.trf import * # noqa: F403
550
566
  from pygeodesy.triaxials import * # noqa: F403
567
+ # from pygeodesy.triaxials.bases import * # noqa: F403
568
+ # from pygeodesy.triaxials.conformals import * # noqa: F403
569
+ # from pygeodesy.triaxials.spheres import * # noqa: F403
570
+ # from pygeodesy.triaxials.triaxial3 import * # noqa: F403
571
+ # from pygeodesy.triaxials.triaxial5 import * # noqa: F403
551
572
  from pygeodesy.units import * # noqa: F403
552
573
  from pygeodesy.unitsBase import * # noqa: F403 Float, ...
553
574
  from pygeodesy.ups import * # noqa: F403
@@ -605,7 +626,7 @@ else:
605
626
 
606
627
  from pygeodesy.internals import _version2, _DOT_ # noqa: E402
607
628
  # from pygeodesy.interns import _DOT_ # from .internals
608
- __version__ = '25.11.05'
629
+ __version__ = '25.12.31'
609
630
  # see setup.py for similar logic
610
631
  version = _DOT_(*_version2(__version__, n=3))
611
632
 
@@ -613,7 +634,7 @@ del _DOT_, _lazy_import2, _os_path, _sys, _version2
613
634
 
614
635
  # **) MIT License
615
636
  #
616
- # Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
637
+ # Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
617
638
  #
618
639
  # Permission is hereby granted, free of charge, to any person obtaining a
619
640
  # copy of this software and associated documentation files (the "Software"),
pygeodesy/__main__.py CHANGED
@@ -86,7 +86,7 @@ except ImportError:
86
86
 
87
87
  # **) MIT License
88
88
  #
89
- # Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
89
+ # Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
90
90
  #
91
91
  # Permission is hereby granted, free of charge, to any person obtaining a
92
92
  # copy of this software and associated documentation files (the "Software"),
pygeodesy/albers.py CHANGED
@@ -827,7 +827,7 @@ __all__ += _ALL_DOCS(_AlbersBase)
827
827
 
828
828
  # **) MIT License
829
829
  #
830
- # Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
830
+ # Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
831
831
  #
832
832
  # Permission is hereby granted, free of charge, to any person obtaining a
833
833
  # copy of this software and associated documentation files (the "Software"),