pygeodesy 24.11.11__py2.py3-none-any.whl → 25.1.5__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.11.11.dist-info → PyGeodesy-25.1.5.dist-info}/METADATA +34 -35
- PyGeodesy-25.1.5.dist-info/RECORD +118 -0
- {PyGeodesy-24.11.11.dist-info → PyGeodesy-25.1.5.dist-info}/WHEEL +1 -1
- pygeodesy/__init__.py +19 -19
- pygeodesy/__main__.py +1 -1
- pygeodesy/albers.py +5 -5
- pygeodesy/auxilats/_CX_4.py +1 -1
- pygeodesy/auxilats/_CX_6.py +1 -1
- pygeodesy/auxilats/_CX_8.py +1 -1
- pygeodesy/auxilats/_CX_Rs.py +1 -1
- pygeodesy/auxilats/__init__.py +1 -1
- pygeodesy/auxilats/__main__.py +1 -1
- pygeodesy/auxilats/auxAngle.py +5 -5
- pygeodesy/auxilats/auxDLat.py +6 -6
- pygeodesy/auxilats/auxDST.py +2 -2
- pygeodesy/auxilats/auxLat.py +5 -5
- pygeodesy/auxilats/auxily.py +2 -2
- pygeodesy/azimuthal.py +5 -5
- pygeodesy/basics.py +60 -8
- pygeodesy/booleans.py +1 -1
- pygeodesy/cartesianBase.py +22 -61
- pygeodesy/clipy.py +1 -1
- pygeodesy/constants.py +5 -5
- pygeodesy/css.py +1 -1
- pygeodesy/datums.py +1 -1
- pygeodesy/deprecated/__init__.py +2 -2
- pygeodesy/deprecated/bases.py +1 -1
- pygeodesy/deprecated/classes.py +86 -2
- pygeodesy/deprecated/consterns.py +1 -1
- pygeodesy/deprecated/datum.py +5 -5
- pygeodesy/deprecated/functions.py +42 -8
- pygeodesy/deprecated/nvector.py +1 -1
- pygeodesy/deprecated/rhumbBase.py +1 -1
- pygeodesy/deprecated/rhumbaux.py +1 -1
- pygeodesy/deprecated/rhumbsolve.py +1 -1
- pygeodesy/deprecated/rhumbx.py +1 -1
- pygeodesy/dms.py +1 -1
- pygeodesy/ecef.py +53 -56
- pygeodesy/elevations.py +1 -1
- pygeodesy/ellipsoidalBase.py +3 -3
- pygeodesy/ellipsoidalBaseDI.py +1 -1
- pygeodesy/ellipsoidalExact.py +1 -1
- pygeodesy/ellipsoidalGeodSolve.py +1 -1
- pygeodesy/ellipsoidalKarney.py +1 -1
- pygeodesy/ellipsoidalNvector.py +1 -1
- pygeodesy/ellipsoidalVincenty.py +6 -5
- pygeodesy/ellipsoids.py +4 -5
- pygeodesy/elliptic.py +6 -6
- pygeodesy/epsg.py +1 -1
- pygeodesy/errors.py +1 -1
- pygeodesy/etm.py +5 -5
- pygeodesy/fmath.py +18 -17
- pygeodesy/formy.py +409 -555
- pygeodesy/frechet.py +29 -86
- pygeodesy/fstats.py +1 -1
- pygeodesy/fsums.py +32 -33
- pygeodesy/gars.py +1 -1
- pygeodesy/geodesici.py +7 -7
- pygeodesy/geodesicw.py +1 -1
- pygeodesy/geodesicx/_C4_24.py +2 -2
- pygeodesy/geodesicx/_C4_27.py +2 -2
- pygeodesy/geodesicx/_C4_30.py +2 -2
- pygeodesy/geodesicx/__init__.py +2 -2
- pygeodesy/geodesicx/__main__.py +4 -5
- pygeodesy/geodesicx/gx.py +6 -5
- pygeodesy/geodesicx/gxarea.py +2 -2
- pygeodesy/geodesicx/gxbases.py +2 -2
- pygeodesy/geodesicx/gxline.py +16 -12
- pygeodesy/geodsolve.py +1 -1
- pygeodesy/geohash.py +1 -1
- pygeodesy/geoids.py +277 -203
- pygeodesy/hausdorff.py +23 -81
- pygeodesy/heights.py +115 -150
- pygeodesy/internals.py +1 -1
- pygeodesy/interns.py +2 -3
- pygeodesy/iters.py +1 -1
- pygeodesy/karney.py +3 -3
- pygeodesy/ktm.py +16 -15
- pygeodesy/latlonBase.py +323 -409
- pygeodesy/lazily.py +53 -44
- pygeodesy/lcc.py +1 -1
- pygeodesy/ltp.py +46 -50
- pygeodesy/ltpTuples.py +147 -130
- pygeodesy/mgrs.py +1 -1
- pygeodesy/named.py +149 -3
- pygeodesy/namedTuples.py +58 -7
- pygeodesy/nvectorBase.py +122 -105
- pygeodesy/osgr.py +1 -1
- pygeodesy/points.py +1 -1
- pygeodesy/props.py +1 -1
- pygeodesy/resections.py +18 -17
- pygeodesy/rhumb/__init__.py +1 -1
- pygeodesy/rhumb/aux_.py +2 -2
- pygeodesy/rhumb/bases.py +2 -2
- pygeodesy/rhumb/ekx.py +4 -4
- pygeodesy/rhumb/solve.py +1 -1
- pygeodesy/simplify.py +289 -401
- pygeodesy/solveBase.py +1 -1
- pygeodesy/sphericalBase.py +1 -1
- pygeodesy/sphericalNvector.py +5 -5
- pygeodesy/sphericalTrigonometry.py +7 -6
- pygeodesy/streprs.py +10 -5
- pygeodesy/trf.py +1 -1
- pygeodesy/triaxials.py +23 -16
- pygeodesy/units.py +16 -16
- pygeodesy/unitsBase.py +1 -1
- pygeodesy/ups.py +4 -4
- pygeodesy/utily.py +341 -211
- pygeodesy/utm.py +5 -5
- pygeodesy/utmups.py +1 -1
- pygeodesy/utmupsBase.py +1 -1
- pygeodesy/vector2d.py +5 -5
- pygeodesy/vector3d.py +14 -3
- pygeodesy/vector3dBase.py +5 -5
- pygeodesy/webmercator.py +1 -1
- pygeodesy/wgrs.py +1 -1
- PyGeodesy-24.11.11.dist-info/RECORD +0 -118
- {PyGeodesy-24.11.11.dist-info → PyGeodesy-25.1.5.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: PyGeodesy
|
|
3
|
-
Version:
|
|
3
|
+
Version: 25.1.5
|
|
4
4
|
Summary: Pure Python geodesy tools
|
|
5
5
|
Home-page: https://GitHub.com/mrJean1/PyGeodesy
|
|
6
6
|
Author: Jean M. Brouwers
|
|
@@ -8,7 +8,7 @@ Author-email: mrJean1@Gmail.com
|
|
|
8
8
|
Maintainer: Jean M. Brouwers
|
|
9
9
|
Maintainer-email: mrJean1@Gmail.com
|
|
10
10
|
License: MIT
|
|
11
|
-
Keywords: AER Albers altitude Andoyer annulus antipode area attitude Authalic auxiliary azimuth azimuthal azimuth-elevation-range bearing bank Barsky Barth beta bi-quadratic boolean cached Cagnoli cartesian Cassini Cassini-Soldner chord circle-intersections circumcenter circumcircle circumradius clip Cohen Cohen-Sutherland Collins composite conformal conic constants contact-triangle Cook Correia cosines-law coverage curvature cylindrical datum deprecation deficit development discrete distance Douglas earth east-north-up eccentricity ECEF elevation ellipsoid ellipsoidal-latitude-beta ellipsoidal-longitude-omega elliptic ENU EPSG equal-area equidistant equirectangular ETM ETRF Euclidean even-odd-rule ExactTM excess Farrell Farrell-Barth Field-Of-View flattening fma fmath footprint Forster Forster-Hormann-Popa Forsythe FOV fractional Frechet Fréchet frustum Fsum fused-multiply-add GARS geocentric GeoConvert GeodesicExact geodesy geodetic GeodSolve GeodTest geographiclib Geohash geoid geoidHeight GeoidHeights georef Girard gnomonic gons grades gradians Greiner Greiner-Hormann Hartzell Hausdorff Haversine heading height Heron Hodgman horizon Hormann Hubeny IDW incenter incirle infix_@_operator inradius intermediate interpolate intersect intersection intersection3d intersections IntersectTool Inverse-Distance-Weighting Isometric ITRF Jacobi Jacobi-Conformal Jarque-Bera Jekel Karney Krueger Krüger kurtosis Lambert latitude law-of-cosines least-squares Lesh L_Huilier LHuilier Liang Liang-Barsky linearize Line-Of-Sight LocalCartesian local-tangent-plane local-x-y-z longitude LOS loxodrome lstsq LTP lune LV03 LV95 mean memoize memoized Mercator Meeus MGRS nearest NED Niemeyer non-finite normalize Norrdine north-east-down numpy n-vector Nvector oblate omega orthographic orthometric-height OSGB OSGR overlap parallel parallel-of-latitude Parametric path-intersection perimeter Peucker Pierlot pitch plumb Point-Of-View polar Popa POV precision-cubic-root precision-hypotenuse precision-powers precision-running-summation precision-square-root precision-summation prolate Pseudo-Mercator PyGeodesy PyInstaller PyPy quartic radical radii radius Ramer Ramer-Douglas-Peucker Rectifying Reduced resect resection Rey-Jer Reumann Reumann-Witkam rhumb RhumbSolve running-linear-regression running-statistics running-stats running-summation scipy secant semi-perimeter sexagecimal simplify skewness Snellius Snellius-Pothenot Snyder Soddy Soddy-circles Soldner sphere sphere-intersections spherical-deficit spherical-excess spherical-triangle squared-quartic standard-deviation stereographic Sudano surface-area Sutherland Sutherland-Hodgman tangent-circles Terrestrial-Reference-Frame Thomas Tienstra tilt TMcoords TMExact toise transverse TransverseMercatorExact TRF triangle triangulate triaxial triaxial-ellipsoid trigonometry trilaterate trilaterate-2d trilaterate-3d TwoProduct TwoSum umbilic-point unit unroll UPS UTM UTM/UPS variance velocities Veness Vermeille viewing-frustum Vincenty Visvalingam Visvalingam-Whyatt volume volumetric Web-Mercator Welford WGRS WGS Whyatt Wildberger Witkam winding-number XYZ yaw You zenzi-cubic zenzi-quartic
|
|
11
|
+
Keywords: AER Albers altitude Andoyer annulus antipode area attitude Authalic auxiliary azimuth azimuthal azimuth-elevation-range bearing bank Barsky Barth beta bi-quadratic boolean cached Cagnoli cartesian Cassini Cassini-Soldner chord circle-intersections circumcenter circumcircle circumradius clip Cohen Cohen-Sutherland Collins composite conformal conic constants contact-triangle Cook Correia cosines-law coverage curvature cylindrical datum deprecation deficit development discrete distance Douglas earth east-north-up eccentricity ECEF elevation ellipsoid ellipsoidal-latitude-beta ellipsoidal-longitude-omega elliptic ENU EPSG equal-area equidistant equirectangular ETM ETRF Euclidean even-odd-rule ExactTM excess Farrell Farrell-Barth Ferrari-solution Field-Of-View flattening fma fmath footprint Forster Forster-Hormann-Popa Forsythe FOV fractional Frechet Fréchet frustum Fsum fused-multiply-add GARS geocentric GeoConvert GeodesicExact geodesy geodetic GeodSolve GeodTest geographiclib Geohash geoid geoidHeight GeoidHeights georef Girard gnomonic gons grades gradians Greiner Greiner-Hormann Hartzell Hausdorff Haversine heading height Heikkinen Heron Hodgman horizon Hormann Hubeny IDW incenter incirle infix_@_operator inradius intermediate interpolate intersect intersection intersection3d intersections IntersectTool Inverse-Distance-Weighting Isometric ITRF Jacobi Jacobi-Conformal Jarque-Bera Jekel Karney Krueger Krüger kurtosis Lambert latitude law-of-cosines least-squares Lesh L_Huilier LHuilier Liang Liang-Barsky linearize Line-Of-Sight LocalCartesian local-tangent-plane local-x-y-z longitude LOS loxodrome lstsq LTP lune LV03 LV95 mean memoize memoized Mercator Meeus MGRS nearest NED Niemeyer non-finite normalize Norrdine north-east-down numpy n-vector Nvector oblate omega orthographic orthometric-height OSGB OSGR overlap parallel parallel-of-latitude Parametric path-intersection perimeter Peucker Pierlot pitch plumb Point-Of-View polar Popa POV precision-cubic-root precision-hypotenuse precision-powers precision-running-summation precision-square-root precision-summation prolate Pseudo-Mercator PyGeodesy PyInstaller PyPy quartic radical radii radius Ramer Ramer-Douglas-Peucker Rectifying Reduced resect resection Rey-Jer Reumann Reumann-Witkam rhumb RhumbSolve running-linear-regression running-statistics running-stats running-summation scipy secant semi-perimeter sexagecimal simplify skewness Snellius Snellius-Pothenot Snyder Soddy Soddy-circles Soldner sphere sphere-intersections spherical-deficit spherical-excess spherical-triangle squared-quartic standard-deviation stereographic Sudano surface-area Sutherland Sutherland-Hodgman tangent-circles Terrestrial-Reference-Frame Thomas Tienstra tilt TMcoords TMExact toise transverse TransverseMercatorExact TRF triangle triangulate triaxial triaxial-ellipsoid trigonometry trilaterate trilaterate-2d trilaterate-3d TwoProduct TwoSum umbilic-point unit unroll UPS UTM UTM/UPS variance velocities Veness Vermeille viewing-frustum Vincenty Visvalingam Visvalingam-Whyatt volume volumetric Web-Mercator Welford WGRS WGS Whyatt Wildberger Witkam winding-number XYZ yaw You zenzi-cubic zenzi-quartic
|
|
12
12
|
Classifier: Development Status :: 5 - Production/Stable
|
|
13
13
|
Classifier: Environment :: Console
|
|
14
14
|
Classifier: Intended Audience :: Developers
|
|
@@ -33,8 +33,8 @@ earth models using precision trigonometric, vector-based, exact, elliptic, itera
|
|
|
33
33
|
approximate methods for geodetic (lat-/longitude), geocentric (ECEF_ cartesian) and certain
|
|
34
34
|
`triaxial ellipsoidal`_ coordinates.
|
|
35
35
|
|
|
36
|
-
Transcoded from `JavaScript originals`_ by *Chris Veness (C) 2005-2024* and from several
|
|
37
|
-
classes`_ by *Charles F.F. Karney (C) 2008-2024* and published under the same `MIT License`_.
|
|
36
|
+
Transcoded partially from `JavaScript originals`_ by *Chris Veness (C) 2005-2024* and from several
|
|
37
|
+
`C++ classes`_ by *Charles F.F. Karney (C) 2008-2024* and published under the same `MIT License`_.
|
|
38
38
|
|
|
39
39
|
There are four modules for ellipsoidal earth models, *ellipsoidalExact*, *-Karney*, *-Vincenty*
|
|
40
40
|
and *-Nvector* and two for spherical ones, *sphericalTrigonometry* and *-Nvector*. Each module
|
|
@@ -73,7 +73,7 @@ If the wheel ``PyGeodesy-yy.m.d-py2.py3-none-any.whl`` is missing in `PyPI Downl
|
|
|
73
73
|
the file from `GitHub/dist`_. Install that with ``python[3] -m pip install <path-to-downloaded-wheel>``
|
|
74
74
|
and verify with ``python[3] -m pygeodesy``.
|
|
75
75
|
|
|
76
|
-
Alternatively, download ``PyGeodesy-yy.m.d.
|
|
76
|
+
Alternatively, download ``PyGeodesy-yy.m.d.tar.gz`` from PyPI_ or GitHub_, ``unzip`` the downloaded file,
|
|
77
77
|
``cd`` to directory ``PyGeodesy-yy.m.d`` and type ``python[3] setup.py install``.
|
|
78
78
|
|
|
79
79
|
To run all PyGeodesy tests, type ``python[3] test/run.py`` or type ``python[3] test/unitTestSuite.py``
|
|
@@ -108,49 +108,49 @@ variable ``PYGEODESY_RHUMBSOLVE`` or with property ``Ellipsoid.rhumbsolve``.
|
|
|
108
108
|
Documentation
|
|
109
109
|
=============
|
|
110
110
|
|
|
111
|
-
In addition to the ``pygeodesy`` package, the PyGeodesy_ `distribution files`_ contain the tests,
|
|
112
|
-
|
|
113
|
-
|
|
111
|
+
In addition to the ``pygeodesy`` package, the PyGeodesy_ `distribution files`_ contain the tests, the
|
|
112
|
+
test results (on macOS only) and the complete documentation_ generated by Epydoc_ using command line:
|
|
113
|
+
`epydoc --html --no-private --no-source --name=PyGeodesy --url=... -v pygeodesy``.
|
|
114
114
|
|
|
115
115
|
Tests
|
|
116
116
|
=====
|
|
117
117
|
|
|
118
|
-
The tests ran with Python 3.13.
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
118
|
+
The tests ran with Python 3.13.1 (with geographiclib_ 2.0), 3.12.7 (with geographiclib_ 2.0, numpy_ 2.1.0,
|
|
119
|
+
scipy_ 1.14.1, GeodSolve_ 2.3, IntersectTool_ 2.3 and RhumbSolve_ 2.3), 3.11.5 (with geographiclib_ 2.0,
|
|
120
|
+
numpy_ 1.24.2 and scipy_ 1.10.1), Python 3.10.8 (with geographiclib_ 2.0, numpy_ 1.23.3, scipy_ 1.9.1,
|
|
121
|
+
GeoConvert_ 2.3, GeodSolve_ 2.3), Python 3.9.6 and Python 2.7.18 (with geographiclib_ 1.50, numpy_ 1.16.6,
|
|
122
|
+
scipy_ 1.2.2, GeoConvert_ 2.3, GeodSolve_ 2.3, IntersectTool_ 2.3 and RhumbSolve_ 2.3), all on macOS 14.6.1
|
|
123
|
+
Sonoma in 64-bit.
|
|
124
124
|
|
|
125
125
|
All tests ran with and without ``lazy import`` for Python 3 and with command line option ``-W default``
|
|
126
126
|
and env variable ``PYGEODESY_WARNINGS=on`` for all Python versions. The results of those tests are
|
|
127
127
|
included in the distribution files.
|
|
128
128
|
|
|
129
|
-
Python 3.13.
|
|
129
|
+
Python 3.13.1, 3.12.7, 3.11.5 and 3.10.8 run on Apple M1 Silicon (``arm64``), *natively*. Python 2.7.18
|
|
130
130
|
runs on Intel (``x86_64``) or Intel *emulation* (\"``arm64_x86_64``\", see function `pygeodesy.machine`_).
|
|
131
131
|
|
|
132
|
-
Test coverage has been measured with coverage_ 7.6.1 using Python 3.13.
|
|
132
|
+
Test coverage has been measured with coverage_ 7.6.1 using Python 3.13.1, 3.12.7, 3.11.5 and 3.10.8. The
|
|
133
133
|
complete coverage report in HTML and a PDF summary are included in the distribution files.
|
|
134
134
|
|
|
135
|
-
The tests also ran with Python 3.13.
|
|
135
|
+
The tests also ran with Python 3.13.1 (and geographiclib_ 2.0) on `Debian 12`_ in 64-bit only and with
|
|
136
136
|
Python 3.12.5 (and geographiclib_ 2.0) on `Windows 2019Server`_ in 64-bit only and with Python 2.7.18
|
|
137
137
|
(and with geographiclib_ 1.52) on `Windows 10`_ in 64- and 32-bit.
|
|
138
138
|
|
|
139
|
-
A single-File and single-Directory application with ``pygeodesy`` has been bundled using PyInstaller_
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
Previously, the tests were run with Python 3.12.0-6, 3.11.2-4, 3.10.1-7, 3.9.1, 3.8.7, 3.7.1, 2.7.15,
|
|
143
|
-
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,
|
|
144
|
-
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)
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
Windows
|
|
139
|
+
A single-File and single-Directory application with ``pygeodesy`` has been bundled using PyInstaller_ 3.4
|
|
140
|
+
and 64-bit Python 3.7.4 and 3.7.3 on macOS 10.13.6 High Sierra.
|
|
141
|
+
|
|
142
|
+
Previously, the tests were run with Python 3.13.0, 3.12.0-6, 3.11.2-4, 3.10.1-7, 3.9.1, 3.8.7, 3.7.1, 2.7.15,
|
|
143
|
+
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,
|
|
144
|
+
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
|
|
145
|
+
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
|
|
146
|
+
and 2.6.9 (and numpy_ 1.19.0, 1.16.5, 1.16.2, 1.15.2, 1.14.0, 1.13.1, 1.8.0rc1 or 1.6.2 and scipy_ 1.5.0),
|
|
147
|
+
PyPy_ 7.3.0 (Python 2.7.13 and 3.6.9), PyPy_ 6.0.0 (Python 2.7.13 and 3.5.3) and `Intel-Python`_ 3.5.3 (and
|
|
148
|
+
numpy_ 1.11.3) on macOS 14.0-5 Sonoma, 13.0-5.2 Ventura, 12.1-6 Monterey, 11.0-5.2-6.1 Big Sur (aka 10.16),
|
|
149
|
+
10.15.3, 10.15.5-7 Catalina, 10.14 Mojave, 10.13.6 High Sierra and 10.12 Sierra, MacOS X 10.11 El Capitan
|
|
150
|
+
and/or MacOS X 10.10 Yosemite, with Pythonista_ 3.2 (with geographiclib 1.50 or 1.49 and numpy 1.8.0) on
|
|
151
|
+
iOS 14.4.2, 11.4.1, 12.0-3 on iPad4, iPhone6, iPhone10 and/or iPhone12, with Pythonista_ 3.1 on iOS 10.3.3,
|
|
152
|
+
11.0.3, 11.1.2 and 11.3 on iPad4, all in 64-bit only and with 32-bit Python 2.7.14 on Windows Server 2012R2,
|
|
153
|
+
Windows 10 Pro and 32-bit Python 2.6.6 on Windows XP SP3.
|
|
154
154
|
|
|
155
155
|
Notes
|
|
156
156
|
=====
|
|
@@ -160,12 +160,12 @@ and McCabe_ using Python 2.7.18 and with Flake8_ using Python 3.11.5, both in 64
|
|
|
160
160
|
|
|
161
161
|
For a summary of all *Karney*-based functionality in ``pygeodesy``, see module karney_.
|
|
162
162
|
|
|
163
|
-
*Last updated:
|
|
163
|
+
*Last updated: Jan 05, 2025.*
|
|
164
164
|
|
|
165
165
|
License
|
|
166
166
|
=======
|
|
167
167
|
|
|
168
|
-
Copyright (C) 2016-
|
|
168
|
+
Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
169
169
|
|
|
170
170
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
|
171
171
|
documentation files (the "Software"), to deal in the Software without restriction, including without limitation
|
|
@@ -265,7 +265,6 @@ DEALINGS IN THE SOFTWARE.
|
|
|
265
265
|
.. _Sutherland-Hodgman: https://WikiPedia.org/wiki/Sutherland-Hodgman_algorithm
|
|
266
266
|
.. _TRF: http://ITRF.ENSG.IGN.FR
|
|
267
267
|
.. _triaxial ellipsoidal: https://GeographicLib.SourceForge.io/1.44/triaxial.html
|
|
268
|
-
.. _Ubuntu 16.04: https://Travis-CI.com/mrJean1/PyGeodesy
|
|
269
268
|
.. _UPS: https://WikiPedia.org/wiki/Universal_polar_stereographic_coordinate_system
|
|
270
269
|
.. _UTM: https://www.Movable-Type.co.UK/scripts/latlong-utm-mgrs.html
|
|
271
270
|
.. _Vector-based: https://www.Movable-Type.co.UK/scripts/latlong-vectors.html
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
pygeodesy/LICENSE,sha256=YfgAiyxOwY6P9Kkb1_5XN81nueTLrpb3Ffkv3EuPgFU,1144
|
|
2
|
+
pygeodesy/__init__.py,sha256=oSRVJhOmmebIxdlJGcBqWj9vKnIBeT-8vQ-ozepzIfA,42648
|
|
3
|
+
pygeodesy/__main__.py,sha256=SJ-P17Lpr0_yOQSB9ItjqJzPue35ije8oxHPGS_OZk8,5442
|
|
4
|
+
pygeodesy/albers.py,sha256=0pl5e39wacZyEDP7GjHGRx9WXUc_vq36wPUusC7ltLo,30955
|
|
5
|
+
pygeodesy/azimuthal.py,sha256=or03e4j4AycZqVpkcsCj_doCFO7tkypB1Fu98tdg_E8,49763
|
|
6
|
+
pygeodesy/basics.py,sha256=h2yPijizu_JR2_h4d-FYqLaAAexKUbWTdtDMQvUbqlg,31784
|
|
7
|
+
pygeodesy/booleans.py,sha256=RuZ26Hkl_fiDjvcg3FipsKrrB8kcQVYXHTUajPVocRE,73544
|
|
8
|
+
pygeodesy/cartesianBase.py,sha256=TPCRRw_Jua7lpnZ29LsIorPAhZ-uEn39y9hAScWnEMQ,45350
|
|
9
|
+
pygeodesy/clipy.py,sha256=r2M4Kzu4q95dFzia0w88oFoU9rM5ejwdRZ-aeqdB0JY,27728
|
|
10
|
+
pygeodesy/constants.py,sha256=_LHRE9sAYn2YjPjfarhNukFGXNnXrd5VZhBm0euZF-U,19825
|
|
11
|
+
pygeodesy/css.py,sha256=g86DBzqNRbeWECY3101fMuBDien8Q4gtc16g83U0hFg,25642
|
|
12
|
+
pygeodesy/datums.py,sha256=pdIPv57Fs1sqKe8p8_HOAgyeT1tUQlvwuUsJ3uf5z6Q,34057
|
|
13
|
+
pygeodesy/dms.py,sha256=09Yw1w-uxhROlQA8cbActNp4A5n-lvPsVKJZvLnomJM,42174
|
|
14
|
+
pygeodesy/ecef.py,sha256=JfbsBHYnFG2yD3w0NnYlo5NJ8TxYsb7H3fuv_tyD48I,59386
|
|
15
|
+
pygeodesy/elevations.py,sha256=JMKlXMWzUp4evbCJA7mZX02UuXIr681zHM5knn3ycq0,10801
|
|
16
|
+
pygeodesy/ellipsoidalBase.py,sha256=_WxC5rzxZ5IQ0yl3Pm73W4KplbaO5idCD4vKEexYCWY,55111
|
|
17
|
+
pygeodesy/ellipsoidalBaseDI.py,sha256=cVAgJ057TAlqa-B4Ho1I1P-mfBFO_kx4WeFM71oUrzU,38243
|
|
18
|
+
pygeodesy/ellipsoidalExact.py,sha256=-f-6kbE-hnO8aNUuSVnvaawwwKp1x76hT2aWCZq7jwo,16972
|
|
19
|
+
pygeodesy/ellipsoidalGeodSolve.py,sha256=wHv9UHYqnoU_PH8zgRJ-kA1-o-7zZLs1-O_zZHSQb1U,16666
|
|
20
|
+
pygeodesy/ellipsoidalKarney.py,sha256=5RfQzNJFq4VklDnr3TRo6kh29rcQ4D7XkXUr_2Zqf38,18721
|
|
21
|
+
pygeodesy/ellipsoidalNvector.py,sha256=0Ufhw1Nr_pTIbATpCm2PgtvBDZ0fRPzVyjjDg8dSSrI,30039
|
|
22
|
+
pygeodesy/ellipsoidalVincenty.py,sha256=6uxN-8w4U_7zN8wPh85qd8Vr4G72W5NQe9e3eW1Nb_g,25985
|
|
23
|
+
pygeodesy/ellipsoids.py,sha256=AiGIy-154FZ1YgDBckV_HM_sS64nmFLmq96tdOEzfz8,106900
|
|
24
|
+
pygeodesy/elliptic.py,sha256=s9MZgTK3zl4AQVSans3RjYoDqQ425xU2t2zIyxAFhYM,45003
|
|
25
|
+
pygeodesy/epsg.py,sha256=VIBidzAEuoBF4LdlJ4r3WtpL0Ymhru8kf4fAgfFr5ok,8220
|
|
26
|
+
pygeodesy/errors.py,sha256=MskMWomF3bVK4orjSmIfVYilLeXGLi1-bcuyqhmBrXc,32098
|
|
27
|
+
pygeodesy/etm.py,sha256=NLhinROJNuql1fRtPozUeVOyczc9RNBgtm-6h8AxY2M,46722
|
|
28
|
+
pygeodesy/fmath.py,sha256=Uo8tTS4hNwNEuSoDHz0H82LA7mSF9LRRieLTODwHlw4,36933
|
|
29
|
+
pygeodesy/formy.py,sha256=qXUGFwRn6cAxW7Z9U42c5hVEIhYuVZxdwShqeyfIVVU,69849
|
|
30
|
+
pygeodesy/frechet.py,sha256=jOxnFQNI4eL-axq8IiytpUvOXkyOdeVkXIAVZeBbu_M,31765
|
|
31
|
+
pygeodesy/fstats.py,sha256=Bt2U_xdJW3Cio7Jn6MdxEJNGWR9VgNE5RLRb3ux5-g4,28288
|
|
32
|
+
pygeodesy/fsums.py,sha256=O2pHSJqMJ4DUfo6wr9LerutKVFdlOaJOAohxZVcvZss,103979
|
|
33
|
+
pygeodesy/gars.py,sha256=9DcCpPRv6QOgWeHIjW5qNZ8FSKZZueodRqi8xQru1Ik,11829
|
|
34
|
+
pygeodesy/geodesici.py,sha256=eYEHEmkbtndfXH9_dtphhMGeI9RgqL0PgqmdF7I-Rck,74776
|
|
35
|
+
pygeodesy/geodesicw.py,sha256=C4HED2A4V7T9hdY-q4yoalvz5cWiXAoCSRo8iMeSJEE,28774
|
|
36
|
+
pygeodesy/geodsolve.py,sha256=BN769RW0D27HL4nM4DRg39rMvz--_gVeK6E2wphZmkw,28989
|
|
37
|
+
pygeodesy/geohash.py,sha256=pgSqcjOUx-9cTcBOiesBT2jLaRHaRGhAxTgt_jMFZ0Y,40201
|
|
38
|
+
pygeodesy/geoids.py,sha256=ucMC9xuP5RqqbRdAy_LDNp2IIg1Z_i5xP_O37iClOaI,86215
|
|
39
|
+
pygeodesy/hausdorff.py,sha256=idjw0Or_2fxJhGN0jLoV1rX39HXgEOi0XeJaAxwnKck,32137
|
|
40
|
+
pygeodesy/heights.py,sha256=u8G9-uD_QxwlYZTc64Z145oche2xtSVb_8wa9GkTKVs,41190
|
|
41
|
+
pygeodesy/internals.py,sha256=y0e861QXZMWFNrI03u41rJ8VQXojxwd5G3naCNDzs2M,24299
|
|
42
|
+
pygeodesy/interns.py,sha256=TituXfrjkSxLcZlTdSofCfqpGNpu6dw02x9eEQYyEzs,23346
|
|
43
|
+
pygeodesy/iters.py,sha256=hG4wctuBdr35Zr6u0iDAA-rAH0XR9Diw2ARKwcr-5Aw,20311
|
|
44
|
+
pygeodesy/karney.py,sha256=X2dgUXyJ8IjyYSd1kxW6XB6szG7l85YTcDcjO1_wdfg,40480
|
|
45
|
+
pygeodesy/ktm.py,sha256=axEWse4f3SAbJz-PHoVBEjIJ7JW45reSJeOsPWKcAM0,27247
|
|
46
|
+
pygeodesy/latlonBase.py,sha256=c5EkQshey_Wvaxz_7f5cO7JJcrWxPFgbuPtLrnnxq_E,75653
|
|
47
|
+
pygeodesy/lazily.py,sha256=lrOtlNNM_ujQEPKIJd3M0pK9ck3j0obKvLYeI2ZV440,47004
|
|
48
|
+
pygeodesy/lcc.py,sha256=htSplUo-1vXpMKINc2RUKvrMeltUI7RZrfXCFJJIrbI,25671
|
|
49
|
+
pygeodesy/ltp.py,sha256=GbalGvmsaxAiwPhzrXcOA-JUmKwTCnYwyA3oFaIJgac,50576
|
|
50
|
+
pygeodesy/ltpTuples.py,sha256=EFQOY3Vt76BjVRoPuxn7RheBWhRWzKofiGm43Pnvm2I,58999
|
|
51
|
+
pygeodesy/mgrs.py,sha256=jvoyB3_U_EpP4HBoDzTt6V-MoDYC32nOf077w-5txsQ,29819
|
|
52
|
+
pygeodesy/named.py,sha256=n8Ly9WZXkgKp9-RUsbzbzBpuWL4D1cIZ-YWgBootkkE,58510
|
|
53
|
+
pygeodesy/namedTuples.py,sha256=dBM93PadrJHkdqe3yinW_Pc7M_5ACYeU6rat5Dwp3Mk,30622
|
|
54
|
+
pygeodesy/nvectorBase.py,sha256=DF2qWGbcWfqjw9a11BTesLDDYd5bWKQlplOwSntlBJo,29969
|
|
55
|
+
pygeodesy/osgr.py,sha256=1TMaToE-7uoVEqHS482pTilDpPWKSj9bgAOVhkx5R_E,30777
|
|
56
|
+
pygeodesy/points.py,sha256=WxjsmZNAt7UGWV2OCaGwitwWCsLnp109atxNYJ6ruKw,64389
|
|
57
|
+
pygeodesy/props.py,sha256=4_DEjpVsF8awOcBm9bgKPfYT1_kB7kC824EjB5iSbes,24565
|
|
58
|
+
pygeodesy/resections.py,sha256=jbtj91Zocvb1fk_gq9VUAmkyZAoYr3xBW0ZlokG5WcI,43603
|
|
59
|
+
pygeodesy/simplify.py,sha256=DRXzd7r5YwEq-6TzbbruZ8SIrrRD8E8G0Iv0B1Jcwlg,22072
|
|
60
|
+
pygeodesy/solveBase.py,sha256=QjvN3R3AIe24ljRayzslEh41VeMUdp8jHnHPQJGU4QM,18485
|
|
61
|
+
pygeodesy/sphericalBase.py,sha256=_-3s4OQFf2otND-6LEZXhvTUq0lgX1Yzl7EUx1c58fA,32110
|
|
62
|
+
pygeodesy/sphericalNvector.py,sha256=ujLLfxKSOqTnSNSs_KxtD55odo6p2Q2YcOBby7yTqHQ,54771
|
|
63
|
+
pygeodesy/sphericalTrigonometry.py,sha256=XiTwW-xWK2BNh5oi-XX872y-12VUR9KOmrhWvTSzM9U,63989
|
|
64
|
+
pygeodesy/streprs.py,sha256=gEYIV5gdUG_gLGSQgvJZAeUnUIu25dgOneneq30ijlg,23573
|
|
65
|
+
pygeodesy/trf.py,sha256=4XqTHksjVUnDWySjHsJNVFR15W5woYitq_ELXCnq6oA,119073
|
|
66
|
+
pygeodesy/triaxials.py,sha256=GMaap3es1szw052XmJulOAJQ0ibl36NVYKSQyxG_Fwk,63952
|
|
67
|
+
pygeodesy/units.py,sha256=Nme99EnQkA831DV4zHJbtJB5naqbnCc097I0xSglEFM,35452
|
|
68
|
+
pygeodesy/unitsBase.py,sha256=uiPDOpLdFou3HG2VqlcX5trpvfelNvOdMP8cy9432IE,14060
|
|
69
|
+
pygeodesy/ups.py,sha256=GzhE5nMD_flcPsMRAg-3GxlyOp6LNpzPRkXMc3KQC7o,23349
|
|
70
|
+
pygeodesy/utily.py,sha256=L8WQOvbcUJDwz3c_YX93oBGVSypKSbNbqjOMtwvFwmU,40017
|
|
71
|
+
pygeodesy/utm.py,sha256=kcXliftP9q0nTxviIOixVyvResK2Jydj-G52CXJiSuQ,31123
|
|
72
|
+
pygeodesy/utmups.py,sha256=mjdweGi9XaBw9u8nnbjsobd9-JUA-2hydMbe2eNBD7s,13196
|
|
73
|
+
pygeodesy/utmupsBase.py,sha256=MPUm9VYLiHjkvHswAH9v32_IhbPVbhTKqELMP-q1mJ0,18730
|
|
74
|
+
pygeodesy/vector2d.py,sha256=H9KTc8HLFJUU-hOmKTz1qNt2sDRpOGBoTR6AwuFn53s,39660
|
|
75
|
+
pygeodesy/vector3d.py,sha256=VMTtPPq1f-Royez1FqYD8f9TdneZaSo58uRTT5CpaYY,42949
|
|
76
|
+
pygeodesy/vector3dBase.py,sha256=BHenp3NGpfhVbJ6JMgdNLx6vAcwDWDJIxl9hAdp-AVw,36301
|
|
77
|
+
pygeodesy/webmercator.py,sha256=BuIxFYidm84ilQII-NZs1RWNfSS1tMWmqlM6bCt96pw,14936
|
|
78
|
+
pygeodesy/wgrs.py,sha256=gfB-UnQjc738bXjkArHQBlI7vJKhAka53BTDMNuHPjk,15455
|
|
79
|
+
pygeodesy/auxilats/_CX_4.py,sha256=XYQuKoZLDmkCL9d5zGmehdV9rCvQrE6owVjotB5D_vU,6829
|
|
80
|
+
pygeodesy/auxilats/_CX_6.py,sha256=Z-qnxeASDoPJjxMALC3Uqjcnrr28-7CvNAxjoH32K2s,11277
|
|
81
|
+
pygeodesy/auxilats/_CX_8.py,sha256=fdV8el73U1v3xUgUCGHLf4SXhC38DxkSh7LUsmMAqRA,18899
|
|
82
|
+
pygeodesy/auxilats/_CX_Rs.py,sha256=X4nU0UlHFNBKTW8ararl9QG2S0MGyc2BNeCpVsBuQsU,7967
|
|
83
|
+
pygeodesy/auxilats/__init__.py,sha256=fBtFng0tOIF06zdzqejDUkaHD1Iwg6HK1uZZLuSKASw,2881
|
|
84
|
+
pygeodesy/auxilats/__main__.py,sha256=nia-aPEuwCCDf8SJcRHfMtFJv-eiQZ0Nxlha3KLSdaI,3171
|
|
85
|
+
pygeodesy/auxilats/auxAngle.py,sha256=bhtf3mw6HFpatBAlGlRsWNLowJwXdHFLIKKwUdoliqo,16745
|
|
86
|
+
pygeodesy/auxilats/auxDLat.py,sha256=GnnvcKZY1jG4SWjYOlDqhGemooQmxDXX-jGr5yg89NM,10960
|
|
87
|
+
pygeodesy/auxilats/auxDST.py,sha256=3maal46InF3sRgbh-iQrTm4L11qzfe4gr_S8rh1-faU,10468
|
|
88
|
+
pygeodesy/auxilats/auxLat.py,sha256=diAy7DeL5NTvX1t8UWPWTjjQ_JV1F3F9iGj_GotcoUQ,31908
|
|
89
|
+
pygeodesy/auxilats/auxily.py,sha256=yNdN2rmISVv21gjubDBKBj6iC6MX4uUHUeZwtYsCA1c,7882
|
|
90
|
+
pygeodesy/deprecated/__init__.py,sha256=ndsBPtmorXG2F4nMuC-wKvR9zIu8GI2WWU3-lkMsTsQ,2815
|
|
91
|
+
pygeodesy/deprecated/bases.py,sha256=ykcmjlPG58xY6sS3M_sLr9pfxrSPuw4oqXvNi811Sog,1655
|
|
92
|
+
pygeodesy/deprecated/classes.py,sha256=4IHdSkJrexTK5cI96d94VAFOxAZKx1kwYJLcgAq_erA,16388
|
|
93
|
+
pygeodesy/deprecated/consterns.py,sha256=dQGhrSQN-JUHjQDLkLwv_RcfFIDwwu0d-P-wai7sR2g,1908
|
|
94
|
+
pygeodesy/deprecated/datum.py,sha256=aeY-POZBZrKKiTnrhqOImV5AfiXu2-9Vz8xu_d4ze2g,1910
|
|
95
|
+
pygeodesy/deprecated/functions.py,sha256=mpgYzx_ynbIrfy9WBDfjhNtI-sRx7nKwucyGaxqE10k,15792
|
|
96
|
+
pygeodesy/deprecated/nvector.py,sha256=rttz-znpX2Tm1ttoJt8_E8V_9n_ZciKi_CvvbwFmZQM,2117
|
|
97
|
+
pygeodesy/deprecated/rhumbBase.py,sha256=ptcQnDYAaXZqlVtevRnU5m8xsviqLYzPt6wEfXa-LEE,1375
|
|
98
|
+
pygeodesy/deprecated/rhumbaux.py,sha256=x3d5BsrVRKkNeGxHjVbcuQ74zy5lvJsgvpIdPEOOnQ0,1428
|
|
99
|
+
pygeodesy/deprecated/rhumbsolve.py,sha256=ojLzYUAPra9IXo_-TrnQlbUmkvyI8wa_Fh0VvtQ86ZM,1431
|
|
100
|
+
pygeodesy/deprecated/rhumbx.py,sha256=9GTE8CbsD_vRiAnR13gyquPHRpyiHOhPvCUzs5hfWx8,1425
|
|
101
|
+
pygeodesy/geodesicx/_C4_24.py,sha256=3OkzOxf0DdO1QL4N9CVYjpOgFCm8FcYjCyvcTLpL2wc,90707
|
|
102
|
+
pygeodesy/geodesicx/_C4_27.py,sha256=grqtju94Nu9V_eQPqe_7aRbLCYflxRuK127pPOPwuDA,134215
|
|
103
|
+
pygeodesy/geodesicx/_C4_30.py,sha256=I4ZuTy64yOq1IVgRtc_kqOL0HnKzXeTea7kTFSolcJs,201921
|
|
104
|
+
pygeodesy/geodesicx/__init__.py,sha256=dGVtLErbUtxd2Xt1M_e4wKf6rJoNMWwQmYEN-FZEzUY,2478
|
|
105
|
+
pygeodesy/geodesicx/__main__.py,sha256=x-9DiCBXFX7YZ0Ary1A4gIqV2LCqWF-HbqzsJzv2Ye0,4141
|
|
106
|
+
pygeodesy/geodesicx/gx.py,sha256=hviRcMq3IUh3sYIdV_zpuLEMhZL7kiALUgv0pl4ObL4,60641
|
|
107
|
+
pygeodesy/geodesicx/gxarea.py,sha256=ZnXURCXVdZVir34yNA7gNJdWhDrZ4tzlGKm3Wf4Z3b0,19454
|
|
108
|
+
pygeodesy/geodesicx/gxbases.py,sha256=EF9IL_oQBSlF70_ROag-DRBoU-ASWKlX-l-wfrUEQYs,6130
|
|
109
|
+
pygeodesy/geodesicx/gxline.py,sha256=Gg9X5j4FCMFlHNxFBIp7ftN85CXUNug5M4bI2w6hudg,27611
|
|
110
|
+
pygeodesy/rhumb/__init__.py,sha256=3tF4bK26udhoEG3RQ992UzrlYmlAU0l6NiIY1tmABiM,2207
|
|
111
|
+
pygeodesy/rhumb/aux_.py,sha256=636KtNGMCLd0xbqyST-Xwv4dG4npekQDVoHMbcP3EUo,16048
|
|
112
|
+
pygeodesy/rhumb/bases.py,sha256=UUzUVaDbZF5WgeHdTkQKUg8NQAwe6tGqIrqyxCraMz8,54162
|
|
113
|
+
pygeodesy/rhumb/ekx.py,sha256=QWU5muyirMsjbm-lGmgxuO_6snaurOQ-dcF6GrdmffU,24055
|
|
114
|
+
pygeodesy/rhumb/solve.py,sha256=PwMWh-TGLj4Pr1g5kIjcK-PfPN-1p26B7QGRbY27_ag,23943
|
|
115
|
+
PyGeodesy-25.1.5.dist-info/METADATA,sha256=UIK1rcjrUK20UCRnOXmJ-KFxBL7ImBlDjwEd8g0nlMM,19900
|
|
116
|
+
PyGeodesy-25.1.5.dist-info/WHEEL,sha256=Kh9pAotZVRFj97E15yTA4iADqXdQfIVTHcNaZTjxeGM,110
|
|
117
|
+
PyGeodesy-25.1.5.dist-info/top_level.txt,sha256=cEQPatCXzKZqrivpULC5V5fuy9_V_bAwaP_gUGid7pQ,10
|
|
118
|
+
PyGeodesy-25.1.5.dist-info/RECORD,,
|
pygeodesy/__init__.py
CHANGED
|
@@ -7,9 +7,9 @@ methods for geodetic (lat-/longitude), geocentric (U{ECEF<https://WikiPedia.org/
|
|
|
7
7
|
cartesian) and certain U{triaxial ellipsoidal<https://GeographicLib.SourceForge.io/1.44/triaxial.html>}
|
|
8
8
|
coordinates.
|
|
9
9
|
|
|
10
|
-
Transcoded from U{JavaScript originals<https://GitHub.com/ChrisVeness/geodesy>} by I{Chris Veness (C)
|
|
11
|
-
and from several U{C++ classes<https://GeographicLib.SourceForge.io/C++/doc/annotated.html>} by I{Charles
|
|
12
|
-
Karney (C) 2008-2024} and published under the same U{MIT License<https://OpenSource.org/licenses/MIT>}**.
|
|
10
|
+
Transcoded partially 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>}**.
|
|
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}}
|
|
@@ -72,7 +72,7 @@ PyPI.org/project/PyGeodesy/#files>}, download the file from U{GitHub/dist<https:
|
|
|
72
72
|
PyGeodesy/tree/master/dist>}. Install that with C{python[3] -m pip install <path-to-downloaded-wheel>}
|
|
73
73
|
and verify with C{python[3] -m pygeodesy}.
|
|
74
74
|
|
|
75
|
-
Alternatively, download C{PyGeodesy-yy.m.d.
|
|
75
|
+
Alternatively, download C{PyGeodesy-yy.m.d.tar.gz} from U{PyPI<https://PyPI.org/project/PyGeodesy>}
|
|
76
76
|
or U{GitHub<https://GitHub.com/mrJean1/PyGeodesy>}, C{unzip} the downloaded file, C{cd} to
|
|
77
77
|
directory C{Pygeodesy-yy.m.d} and type C{python[3] setup.py install}.
|
|
78
78
|
|
|
@@ -122,7 +122,7 @@ C{epydoc --html --no-private --no-source --name=PyGeodesy --url=... -v pygeodesy
|
|
|
122
122
|
Tests
|
|
123
123
|
=====
|
|
124
124
|
|
|
125
|
-
The tests ran with Python 3.13.
|
|
125
|
+
The tests ran with Python 3.13.1 (with U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0),
|
|
126
126
|
Python 3.12.7 (with U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0,
|
|
127
127
|
U{numpy<https://PyPI.org/project/numpy>} 2.1.0, U{scipy<https://PyPI.org/project/scipy>} 1.14.1,
|
|
128
128
|
U{GeodSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3,
|
|
@@ -146,24 +146,24 @@ env variable C{PYGEODESY_WARNINGS=on} for all Python versions. The results of t
|
|
|
146
146
|
the distribution files.
|
|
147
147
|
|
|
148
148
|
Test coverage has been measured with U{coverage<https://PyPI.org/project/coverage>} 7.6.1 using Python
|
|
149
|
-
3.13.
|
|
149
|
+
3.13.1, 3.12.7, 3.11.5 and 3.10.8. The complete coverage report in HTML and a PDF summary are included in
|
|
150
150
|
the distribution files.
|
|
151
151
|
|
|
152
|
-
Python 3.13.
|
|
152
|
+
Python 3.13.1, 3.12.7, 3.11.5 and 3.10.8 run on Apple M1 Silicon (C{arm64}), I{natively}. Python 2.7.18 runs
|
|
153
153
|
on Intel (C{x86_64}) or Intel I{emulation} ("C{arm64_x86_64}", see function L{machine<pygeodesy.machine>}).
|
|
154
154
|
|
|
155
|
-
The tests also ran with Python 3.13.
|
|
155
|
+
The tests also ran with Python 3.13.1 (and U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0) on
|
|
156
156
|
U{Debian 12<https://Cirrus-CI.com/github/mrJean1/PyGeodesy/master>} in 64-bit only, with Python 3.12.5 (and
|
|
157
|
-
U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0) on U{Windows
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
157
|
+
U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0) on U{Windows 2019Server
|
|
158
|
+
<https://CI.AppVeyor.com/project/mrJean1/pygeodesy>} in 64-bit only and with Python 2.7.18 (and U{geographiclib
|
|
159
|
+
<https://PyPI.org/project/geographiclib>} 1.52) on U{Windows 10<https://CI.AppVeyor.com/project/mrJean1/pygeodesy>}
|
|
160
|
+
in 64- and 32-bit.
|
|
161
161
|
|
|
162
162
|
A single-File and single-Directory application with C{pygeodesy} has been bundled using U{PyInstaller
|
|
163
163
|
<https://PyPI.org/project/pyinstaller>} 3.4 and 64-bit Python 3.7.3 on macOS 10.13.6 High Sierra.
|
|
164
164
|
|
|
165
|
-
Previously, the tests were run with Python 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,
|
|
166
|
-
<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
|
|
165
|
+
Previously, the tests were run with Python 3.13.0, 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,
|
|
166
|
+
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
|
|
167
167
|
2.7.13) (and U{geographiclib <https://PyPI.org/project/geographiclib>} 1.52, U{numpy<https://PyPI.org/project/numpy>}
|
|
168
168
|
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,
|
|
169
169
|
1.5.2 or 1.8.1) on U{Ubuntu 16.04<https://Travis-CI.com/mrJean1/PyGeodesy>}, with Python 3.10.0-1, 3.9.0-5, 3.8.0-6,
|
|
@@ -243,7 +243,7 @@ and:
|
|
|
243
243
|
License
|
|
244
244
|
=======
|
|
245
245
|
|
|
246
|
-
**) U{Copyright (C) 2016-
|
|
246
|
+
**) U{Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.<https://OpenSource.org/licenses/MIT>}
|
|
247
247
|
|
|
248
248
|
C{Permission is hereby granted, free of charge, to any person obtaining a copy of this software
|
|
249
249
|
and associated documentation files (the "Software"), to deal in the Software without restriction,
|
|
@@ -527,7 +527,7 @@ if _init__all__ and not _lazy_import2: # import and set __all__
|
|
|
527
527
|
from pygeodesy.mgrs import * # PYCHOK __all__
|
|
528
528
|
from pygeodesy.named import * # PYCHOK __all__
|
|
529
529
|
from pygeodesy.namedTuples import * # PYCHOK __all__
|
|
530
|
-
|
|
530
|
+
from pygeodesy.nvectorBase import * # PYCHOK __(_)__ INTERNAL
|
|
531
531
|
from pygeodesy.osgr import * # PYCHOK __all__
|
|
532
532
|
from pygeodesy.points import * # PYCHOK __all__
|
|
533
533
|
from pygeodesy.props import * # PYCHOK __all__
|
|
@@ -566,7 +566,7 @@ if _init__all__ and not _lazy_import2: # import and set __all__
|
|
|
566
566
|
# GilderGeek<https://GitHub.com/mrJean1/PyGeodesy/issues/31>)
|
|
567
567
|
ns = list(lazily._ALL_INIT)
|
|
568
568
|
# XXX ps = () if _isfrozen else set([_pygeodesy_] + __name__.split(_DOT_))
|
|
569
|
-
for mod, attrs in lazily.
|
|
569
|
+
for mod, attrs in lazily._all_enums():
|
|
570
570
|
mod = _headof(_headof(mod))
|
|
571
571
|
if mod not in globalocals:
|
|
572
572
|
t = _DOT_(_pygeodesy_, mod)
|
|
@@ -598,7 +598,7 @@ else:
|
|
|
598
598
|
|
|
599
599
|
from pygeodesy.internals import _version2, _DOT_ # PYCHOK import
|
|
600
600
|
# from pygeodesy.interns import _DOT_ # from .internals
|
|
601
|
-
__version__ = '
|
|
601
|
+
__version__ = '25.01.05'
|
|
602
602
|
# see setup.py for similar logic
|
|
603
603
|
version = _DOT_(*_version2(__version__, n=3))
|
|
604
604
|
|
|
@@ -606,7 +606,7 @@ del _DOT_, _lazy_import2, _os_path, _sys, _version2
|
|
|
606
606
|
|
|
607
607
|
# **) MIT License
|
|
608
608
|
#
|
|
609
|
-
# Copyright (C) 2016-
|
|
609
|
+
# Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
610
610
|
#
|
|
611
611
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
612
612
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/__main__.py
CHANGED
|
@@ -85,7 +85,7 @@ except ImportError:
|
|
|
85
85
|
|
|
86
86
|
# **) MIT License
|
|
87
87
|
#
|
|
88
|
-
# Copyright (C) 2016-
|
|
88
|
+
# Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
89
89
|
#
|
|
90
90
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
91
91
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/albers.py
CHANGED
|
@@ -32,13 +32,13 @@ from pygeodesy.named import _name2__, _NamedBase, _NamedTuple, _Pass
|
|
|
32
32
|
from pygeodesy.props import deprecated_Property_RO, Property_RO, _update_all
|
|
33
33
|
from pygeodesy.streprs import Fmt, strs, unstr
|
|
34
34
|
from pygeodesy.units import Bearing, Float_, Lat, Lat_, Lon, Meter, Scalar_
|
|
35
|
-
from pygeodesy.utily import atan1, atan1d, degrees360, sincos2,
|
|
36
|
-
sincos2d_
|
|
35
|
+
from pygeodesy.utily import atan1, atan1d, atan2, degrees360, sincos2, \
|
|
36
|
+
sincos2d, sincos2d_
|
|
37
37
|
|
|
38
|
-
from math import
|
|
38
|
+
from math import atanh, degrees, fabs, radians, sqrt
|
|
39
39
|
|
|
40
40
|
__all__ = _ALL_LAZY.albers
|
|
41
|
-
__version__ = '24.
|
|
41
|
+
__version__ = '24.11.24'
|
|
42
42
|
|
|
43
43
|
_k1_ = 'k1'
|
|
44
44
|
_NUMIT = 8 # XXX 4?
|
|
@@ -834,7 +834,7 @@ __all__ += _ALL_DOCS(_AlbersBase)
|
|
|
834
834
|
|
|
835
835
|
# **) MIT License
|
|
836
836
|
#
|
|
837
|
-
# Copyright (C) 2016-
|
|
837
|
+
# Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
838
838
|
#
|
|
839
839
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
840
840
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/auxilats/_CX_4.py
CHANGED
|
@@ -120,7 +120,7 @@ del _Rcoeffs, _Rdict, _Rtuple
|
|
|
120
120
|
|
|
121
121
|
# **) MIT License
|
|
122
122
|
#
|
|
123
|
-
# Copyright (C) 2023-
|
|
123
|
+
# Copyright (C) 2023-2025 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
124
124
|
#
|
|
125
125
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
126
126
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/auxilats/_CX_6.py
CHANGED
|
@@ -168,7 +168,7 @@ del _Rcoeffs, _Rdict, _Rtuple
|
|
|
168
168
|
|
|
169
169
|
# **) MIT License
|
|
170
170
|
#
|
|
171
|
-
# Copyright (C) 2023-
|
|
171
|
+
# Copyright (C) 2023-2025 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
172
172
|
#
|
|
173
173
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
174
174
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/auxilats/_CX_8.py
CHANGED
|
@@ -227,7 +227,7 @@ del _Rcoeffs, _Rdict, _Rtuple
|
|
|
227
227
|
|
|
228
228
|
# **) MIT License
|
|
229
229
|
#
|
|
230
|
-
# Copyright (C) 2023-
|
|
230
|
+
# Copyright (C) 2023-2025 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
231
231
|
#
|
|
232
232
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
233
233
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/auxilats/_CX_Rs.py
CHANGED
|
@@ -201,7 +201,7 @@ class _Rtuple(list): # MUST be list, NOT tuple!
|
|
|
201
201
|
|
|
202
202
|
# **) MIT License
|
|
203
203
|
#
|
|
204
|
-
# Copyright (C) 2024-
|
|
204
|
+
# Copyright (C) 2024-2025 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
205
205
|
#
|
|
206
206
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
207
207
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/auxilats/__init__.py
CHANGED
|
@@ -33,7 +33,7 @@ __version__ = '24.09.04'
|
|
|
33
33
|
|
|
34
34
|
# **) MIT License
|
|
35
35
|
#
|
|
36
|
-
# Copyright (C) 2023-
|
|
36
|
+
# Copyright (C) 2023-2025 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
37
37
|
#
|
|
38
38
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
39
39
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/auxilats/__main__.py
CHANGED
|
@@ -51,7 +51,7 @@ _main(ALorder=int(argv[1])) if len(argv) == 2 and argv[1].isdigit() else _main()
|
|
|
51
51
|
|
|
52
52
|
# **) MIT License
|
|
53
53
|
#
|
|
54
|
-
# Copyright (C) 2023-
|
|
54
|
+
# Copyright (C) 2023-2025 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
55
55
|
#
|
|
56
56
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
57
57
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/auxilats/auxAngle.py
CHANGED
|
@@ -7,7 +7,7 @@ Class L{AuxAngle} transcoded to Python from I{Karney}'s C++ class U{AuxAngle
|
|
|
7
7
|
<https://GeographicLib.SourceForge.io/C++/doc/classGeographicLib_1_1AuxAngle.html>}
|
|
8
8
|
in I{GeographicLib version 2.2+}.
|
|
9
9
|
|
|
10
|
-
Copyright (C) U{Charles Karney<mailto:Karney@Alum.MIT.edu>} (2022-
|
|
10
|
+
Copyright (C) U{Charles Karney<mailto:Karney@Alum.MIT.edu>} (2022-2024) and licensed
|
|
11
11
|
under the MIT/X11 License. For more information, see the U{GeographicLib
|
|
12
12
|
<https://GeographicLib.SourceForge.io>} documentation.
|
|
13
13
|
'''
|
|
@@ -27,12 +27,12 @@ from pygeodesy.props import Property, Property_RO, property_RO, property_ROver,
|
|
|
27
27
|
_update_all
|
|
28
28
|
# from pygeodesy.streprs import unstr # from .fmath
|
|
29
29
|
from pygeodesy.units import Degrees, Radians
|
|
30
|
-
from pygeodesy.utily import atan2d, sincos2, sincos2d
|
|
30
|
+
from pygeodesy.utily import atan2, atan2d, sincos2, sincos2d
|
|
31
31
|
|
|
32
|
-
from math import asinh,
|
|
32
|
+
from math import asinh, copysign, degrees, fabs, radians, sinh
|
|
33
33
|
|
|
34
34
|
__all__ = ()
|
|
35
|
-
__version__ = '24.
|
|
35
|
+
__version__ = '24.11.24'
|
|
36
36
|
|
|
37
37
|
_0_INF_NAN_NINF = (0, _0_0) + _INF_NAN_NINF
|
|
38
38
|
_MAX_2 = MAX * _0_5 # PYCHOK used!
|
|
@@ -529,7 +529,7 @@ __all__ += _ALL_DOCS(AuxAngle, AuxBeta, AuxChi, AuxMu, AuxPhi, AuxTheta, AuxXi)
|
|
|
529
529
|
|
|
530
530
|
# **) MIT License
|
|
531
531
|
#
|
|
532
|
-
# Copyright (C) 2023-
|
|
532
|
+
# Copyright (C) 2023-2025 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
533
533
|
#
|
|
534
534
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
535
535
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/auxilats/auxDLat.py
CHANGED
|
@@ -4,7 +4,7 @@ u'''Class L{AuxDLat} transcoded to Python from I{Karney}'s C++ class U{DAuxLatit
|
|
|
4
4
|
<https://GeographicLib.SourceForge.io/C++/doc/classGeographicLib_1_1DAuxLatitude.html>}
|
|
5
5
|
in I{GeographicLib version 2.2+}.
|
|
6
6
|
|
|
7
|
-
Copyright (C) U{Charles Karney<mailto:Karney@Alum.MIT.edu>} (2022-
|
|
7
|
+
Copyright (C) U{Charles Karney<mailto:Karney@Alum.MIT.edu>} (2022-2024) and licensed
|
|
8
8
|
under the MIT/X11 License. For more information, see the U{GeographicLib
|
|
9
9
|
<https://GeographicLib.SourceForge.io>} documentation.
|
|
10
10
|
'''
|
|
@@ -12,7 +12,7 @@ under the MIT/X11 License. For more information, see the U{GeographicLib
|
|
|
12
12
|
from __future__ import division as _; del _ # PYCHOK semicolon
|
|
13
13
|
|
|
14
14
|
from pygeodesy.auxilats.auxily import Aux, _Datan, _Dasinh, _Dm, _sc, _sn, \
|
|
15
|
-
|
|
15
|
+
AuxError
|
|
16
16
|
from pygeodesy.auxilats.auxLat import AuxLat, _ALL_DOCS
|
|
17
17
|
from pygeodesy.basics import map1, _reverange
|
|
18
18
|
from pygeodesy.constants import INF, NAN, isfinite, isinf, isnan, _0_0, _0_5, \
|
|
@@ -21,12 +21,12 @@ from pygeodesy.elliptic import Elliptic as _Ef, Fsum
|
|
|
21
21
|
# from pygeodesy.errors import AuxError # from .auxilats.auxily
|
|
22
22
|
# from pygeodesy.fsums import Fsum # from .elliptic
|
|
23
23
|
# from pygeodesy.lazily import _ALL_DOCS # from .auxilats.auxLat
|
|
24
|
-
|
|
24
|
+
from pygeodesy.utily import atan1, atan2 # from .auxilats.auxily
|
|
25
25
|
|
|
26
|
-
from math import
|
|
26
|
+
from math import cos, sin, sqrt
|
|
27
27
|
|
|
28
28
|
__all__ = ()
|
|
29
|
-
__version__ = '24.
|
|
29
|
+
__version__ = '24.11.24'
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
class AuxDLat(AuxLat):
|
|
@@ -282,7 +282,7 @@ __all__ += _ALL_DOCS(AuxDLat)
|
|
|
282
282
|
|
|
283
283
|
# **) MIT License
|
|
284
284
|
#
|
|
285
|
-
# Copyright (C) 2023-
|
|
285
|
+
# Copyright (C) 2023-2025 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
286
286
|
#
|
|
287
287
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
288
288
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/auxilats/auxDST.py
CHANGED
|
@@ -5,7 +5,7 @@ u'''Discrete Sine Transforms (AuxDST) in Python, transcoded from I{Karney}'s C++
|
|
|
5
5
|
U{DST<https://GeographicLib.SourceForge.io/C++/doc/classGeographicLib_1_1DST.html>}
|
|
6
6
|
in I{GeographicLib version 2.2+}.
|
|
7
7
|
|
|
8
|
-
Copyright (C) U{Charles Karney<mailto:Karney@Alum.MIT.edu>} (2022-
|
|
8
|
+
Copyright (C) U{Charles Karney<mailto:Karney@Alum.MIT.edu>} (2022-2024) and licensed
|
|
9
9
|
under the MIT/X11 License. For more information, see the U{GeographicLib
|
|
10
10
|
<https://GeographicLib.SourceForge.io>} documentation.
|
|
11
11
|
|
|
@@ -274,7 +274,7 @@ __all__ += _ALL_DOCS(AuxDST)
|
|
|
274
274
|
|
|
275
275
|
# **) MIT License
|
|
276
276
|
#
|
|
277
|
-
# Copyright (C) 2023-
|
|
277
|
+
# Copyright (C) 2023-2025 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
278
278
|
#
|
|
279
279
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
280
280
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/auxilats/auxLat.py
CHANGED
|
@@ -5,7 +5,7 @@ u'''Class L{AuxLat} transcoded to Python from I{Karney}'s C++ class U{AuxLatitud
|
|
|
5
5
|
<https://GeographicLib.SourceForge.io/C++/doc/classGeographicLib_1_1AuxLatitude.html>}
|
|
6
6
|
in I{GeographicLib version 2.2+}.
|
|
7
7
|
|
|
8
|
-
Copyright (C) U{Charles Karney<mailto:Karney@Alum.MIT.edu>} (2022-
|
|
8
|
+
Copyright (C) U{Charles Karney<mailto:Karney@Alum.MIT.edu>} (2022-2024) and licensed
|
|
9
9
|
under the MIT/X11 License. For more information, see the U{GeographicLib
|
|
10
10
|
<https://GeographicLib.SourceForge.io>} documentation.
|
|
11
11
|
|
|
@@ -17,7 +17,7 @@ from __future__ import division as _; del _ # PYCHOK semicolon
|
|
|
17
17
|
|
|
18
18
|
from pygeodesy.auxilats.auxAngle import AuxAngle, AuxBeta, AuxChi, _AuxClass, \
|
|
19
19
|
AuxMu, AuxPhi, AuxTheta, AuxXi
|
|
20
|
-
from pygeodesy.auxilats.auxily import Aux, _sc, _sn
|
|
20
|
+
from pygeodesy.auxilats.auxily import Aux, _sc, _sn
|
|
21
21
|
from pygeodesy.auxilats._CX_Rs import _Rdict, _Rtuple
|
|
22
22
|
from pygeodesy.basics import _reverange, _xinstanceof, _passarg
|
|
23
23
|
from pygeodesy.constants import INF, MAX_EXP, MIN_EXP, NAN, PI_2, PI_4, _EPSqrt, \
|
|
@@ -37,9 +37,9 @@ from pygeodesy.karney import _2cos2x, _polynomial, _ALL_DOCS, cbrt
|
|
|
37
37
|
# from pygeodesy.named import _name__ # from .datums
|
|
38
38
|
from pygeodesy.props import Property, Property_RO, _update_all
|
|
39
39
|
from pygeodesy.units import _isDegrees, _isRadius, Degrees, Meter
|
|
40
|
-
|
|
40
|
+
from pygeodesy.utily import atan1, atan2
|
|
41
41
|
|
|
42
|
-
from math import asinh,
|
|
42
|
+
from math import asinh, copysign, cosh, fabs, sin, sinh, sqrt
|
|
43
43
|
try:
|
|
44
44
|
from math import exp2 as _exp2
|
|
45
45
|
except ImportError: # Python 3.11-
|
|
@@ -847,7 +847,7 @@ __all__ += _ALL_DOCS(AuxLat)
|
|
|
847
847
|
|
|
848
848
|
# **) MIT License
|
|
849
849
|
#
|
|
850
|
-
# Copyright (C) 2023-
|
|
850
|
+
# Copyright (C) 2023-2025 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
851
851
|
#
|
|
852
852
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
853
853
|
# copy of this software and associated documentation files (the "Software"),
|