pygeodesy 24.9.24__py2.py3-none-any.whl → 24.10.10__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PyGeodesy
3
- Version: 24.9.24
3
+ Version: 24.10.10
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 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 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
12
12
  Classifier: Development Status :: 5 - Production/Stable
13
13
  Classifier: Environment :: Console
14
14
  Classifier: Intended Audience :: Developers
@@ -115,7 +115,7 @@ line: ``epydoc --html --no-private --no-source --name=PyGeodesy --url=... -v pyg
115
115
  Tests
116
116
  =====
117
117
 
118
- The tests ran with Python 3.13.0rc2, 3.12.6 (with geographiclib_ 2.0, numpy_ 2.1.0, scipy_ 1.14.1,
118
+ The tests ran with Python 3.13.0, 3.12.7 (with geographiclib_ 2.0, numpy_ 2.1.0, scipy_ 1.14.1,
119
119
  GeodSolve_ 2.3, IntersectTool_ 2.3 and RhumbSolve_ 2.3), 3.11.5 (with geographiclib_ 2.0, numpy_
120
120
  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
121
  GeoConvert_ 2.3, GeodSolve_ 2.3), Python 3.9.6 and Python 2.7.18 (with geographiclib_ 1.50, numpy_
@@ -126,20 +126,20 @@ All tests ran with and without ``lazy import`` for Python 3 and with command lin
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.0rc2, 3.12.6, 3.11.5 and 3.10.8 run on Apple M1 Silicon (``arm64``), *natively*. Python 2.7.18
129
+ Python 3.13.0, 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.0 using Python 3.12.6, 3.11.5 and 3.10.8. The complete
133
- coverage report in HTML and a PDF summary are included in the distribution files.
132
+ Test coverage has been measured with coverage_ 7.6.1 using Python 3.13.0, 3.12.7, 3.11.5 and 3.10.8. The
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.12.6 (and geographiclib_ 2.0) on `Debian 12`_ in 64-bit only and with
136
- Python 3.12.3 (and geographiclib_ 2.0) on `Windows 2019Server`_ in 64-bit only and with Python 2.7.18
135
+ The tests also ran with Python 3.12.7 (and geographiclib_ 2.0) on `Debian 12`_ in 64-bit only and with
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
139
  A single-File and single-Directory application with ``pygeodesy`` has been bundled using PyInstaller_
140
140
  3.4 and 64-bit Python 3.7.4 and 3.7.3 on macOS 10.13.6 High Sierra.
141
141
 
142
- Previously, the tests were run with Python 3.12.0-4, 3.11.2-4, 3.10.1-7, 3.9.1, 3.8.7, 3.7.1, 2.7.15, PyPy_
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, PyPy_
143
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
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
145
  on `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,
@@ -160,7 +160,7 @@ 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: Sep 24, 2024.*
163
+ *Last updated: Oct 10, 2024.*
164
164
 
165
165
  License
166
166
  =======
@@ -1,20 +1,20 @@
1
1
  pygeodesy/LICENSE,sha256=YfgAiyxOwY6P9Kkb1_5XN81nueTLrpb3Ffkv3EuPgFU,1144
2
- pygeodesy/__init__.py,sha256=gu-FjebeihoF1kw47l9X8UjHwQsI4lWn6n4_BPVu6hE,42475
2
+ pygeodesy/__init__.py,sha256=44KoRZEfeBEA_093Z9NhDUB-NZ2etmdLYWMcKPEtj30,42477
3
3
  pygeodesy/__main__.py,sha256=OupAiDFT_RXFw1Lh6C8bVG9NaonV_Wy6jibN_hA4aJg,5442
4
4
  pygeodesy/albers.py,sha256=JXqeWAteV2N601e5R-D7bCsa8qAYv3oWm7M3R4uszXM,31078
5
5
  pygeodesy/azimuthal.py,sha256=erI5DTM0-Nr5YC2LnBTVNbUKlrnnXJUwKe0SCQ7-Soc,50223
6
- pygeodesy/basics.py,sha256=pY0SAIRoD_4okhVwNGAAhxEa9FIZI07XbyPu_sn6sNM,30121
7
- pygeodesy/booleans.py,sha256=H1QbPYpelIGUzfOdwWd2hWXxi6vvbrQiEV_rK5cg1LA,73491
6
+ pygeodesy/basics.py,sha256=JPANq5maTBqd4PhHIO4TLCfl9SG0D0n6OiUF421p1bQ,30163
7
+ pygeodesy/booleans.py,sha256=gEh1bWdHEoSv-4yp0M9JE73xa4DLwLllgKC9d0mNLwM,73460
8
8
  pygeodesy/cartesianBase.py,sha256=jzPJR4_3Yp5jmK7A5inGOXskDebs7YMdjQzINHjzkP8,46935
9
9
  pygeodesy/clipy.py,sha256=hzI6IutTRkbssjPPgAjXv9OcgCIIZchjnMWaHin4YAU,27728
10
- pygeodesy/constants.py,sha256=l5MDpwvrl_BhavQHSPdbqT6kt7YP1O78b6rIl43sVAo,19616
10
+ pygeodesy/constants.py,sha256=E3ANfteZK05I89wbGP4Noxms0pT2TKBOyaVSv8jmlxg,19673
11
11
  pygeodesy/css.py,sha256=rPr5EcGm_blVt72h-851ytpVxdPhx1MEqqGs3Ppx3eI,25651
12
12
  pygeodesy/datums.py,sha256=-m9-cvUVOaJ92eeFgc3O54lel3WqnVYcS7o6WCXkNyw,34043
13
13
  pygeodesy/dms.py,sha256=QxiRtyc8QSiW-egm6Mrcrgmi_deWz3YnYwIm82JS4TU,44443
14
14
  pygeodesy/ecef.py,sha256=_yy_TIUGsXmEZ7aRcmchbJwTp7x__edx6EPiS3Xznes,59587
15
15
  pygeodesy/elevations.py,sha256=4FuVcVNb_D09gmcvUlck344N4f7Jms76SIRrdutvKjk,10801
16
16
  pygeodesy/ellipsoidalBase.py,sha256=IDu0-cKGhkCk3Aj16DJXt2gxjGYsFcjSTrvwG5GbATs,55385
17
- pygeodesy/ellipsoidalBaseDI.py,sha256=OxbSBntV9xiOgsb-0un0cUYIVoPiIiH-lt3baBkbaS8,38400
17
+ pygeodesy/ellipsoidalBaseDI.py,sha256=wsUcdVdp1Tcs8IOS6bM773tAShIOqt_yscRFU2oiehI,38397
18
18
  pygeodesy/ellipsoidalExact.py,sha256=wmIGgZyd0cvjswP4KOeDuEcuagjwQQRRq1cmseRoD-Q,16946
19
19
  pygeodesy/ellipsoidalGeodSolve.py,sha256=fAT4b3HXkM6i1W_C0rb4vbSxZqr4c6rS7PIvGF2ad7s,16666
20
20
  pygeodesy/ellipsoidalKarney.py,sha256=qvJa8kZ4SgaRR2UbjtkcRxw_CRbwhXoUT4Dn_6DJ6Ag,18721
@@ -23,13 +23,13 @@ pygeodesy/ellipsoidalVincenty.py,sha256=hSQ7s6QGDJSsrZvP7KwM1Q4wJz0YjyFjODF6XPGZ
23
23
  pygeodesy/ellipsoids.py,sha256=i7piclEb17hYt5wqL7Q0p5qLuRVvz3yonUSUcvmiozc,108005
24
24
  pygeodesy/elliptic.py,sha256=M30EjB1Il_5Y8E94rN5hz4zPhYBQNoCo5Lj0TvCkiRE,45010
25
25
  pygeodesy/epsg.py,sha256=Vq_M1g7Z0x5Noqsmt6OCQkPdYJj4jpWObtixL5pAjDA,8220
26
- pygeodesy/errors.py,sha256=6aofErGAi6l1xwXqd4PU7YSoPQiutc-gFiFiTamGoU4,31597
26
+ pygeodesy/errors.py,sha256=ATfeHd7mnox2MQ1xxEMLCY5d6hKH7h86iBR-CzVWfS4,32042
27
27
  pygeodesy/etm.py,sha256=G6dtN1LQAoft5mcUoxVgxHPnl9s8NBsXl-IlS8WP7jo,45328
28
- pygeodesy/fmath.py,sha256=JEjiBJKjNt0Lm3EAIn_IiRoxtuTZbXNz2nscjJPEzUA,35376
29
- pygeodesy/formy.py,sha256=PrAlrSASKIXeFvawueyo7kRC-UJJSEQR3APhirHqhtE,75032
28
+ pygeodesy/fmath.py,sha256=acNpvowoCYKH6bmg6KWOTGHE4qVE6yam80niXQoQrKk,36484
29
+ pygeodesy/formy.py,sha256=FvbkYhJ-iIOFR-IOImwm0I_dgXM9CfnWrJK_IvBX0SU,75082
30
30
  pygeodesy/frechet.py,sha256=F6TYbOEYSOFcll6nvp4GhqafUWXh1umAKb1QaMYQtuM,34372
31
- pygeodesy/fstats.py,sha256=nV5Kj5DrKO6zjU18rxlbTRwM-m7Rct9GLhOuH3_3hl8,28541
32
- pygeodesy/fsums.py,sha256=cVNCB90BhvBfTCpZyvvPFVa9aEllzKd-CPJLPPeTFx4,99816
31
+ pygeodesy/fstats.py,sha256=8Vn1cwlgCQD444WX8FfAEC-AXQcJDeI9_i14Mizp59U,28288
32
+ pygeodesy/fsums.py,sha256=p08RcOrs8kpVeG4GXLyfywP6GEU7vFNr9rdKOj9Er44,102945
33
33
  pygeodesy/gars.py,sha256=KRlyZUv1euEl7ZkDYSZG913GAfFMRG2m2hp37ObYY_Y,11829
34
34
  pygeodesy/geodesici.py,sha256=I9e7saiO5lRodOXJk5DSQxladVcGfT0FR6KJSJVCw7Y,75015
35
35
  pygeodesy/geodesicw.py,sha256=oEs96Epw839BH3rVpxVdpXuQRBudbOftUsSBUid8fcc,28710
@@ -38,7 +38,7 @@ pygeodesy/geohash.py,sha256=CHJUhvV26PLpjkaTwF4fS42ZRSSsnpH2zyGvadPxqG4,40201
38
38
  pygeodesy/geoids.py,sha256=EWKfkmdl2GSL0eQCr79ndDwSGXYOPChGokxocCy7YuM,82371
39
39
  pygeodesy/hausdorff.py,sha256=-aKtRbMefDSoIk4V3wCvNrXPZ7Bqk1P6-XuGuI7o8Zc,34770
40
40
  pygeodesy/heights.py,sha256=Gv3b1xC7I0tBvTO-DdmWVW8A3ZV3RKxY3jveUUZso38,42909
41
- pygeodesy/internals.py,sha256=TSJueckcn6dQddZUhLR0Vf9XN-Whm85IYmSvhVZbB_s,22550
41
+ pygeodesy/internals.py,sha256=QgxNtfirxCsfQCrnLiIWjVVhI70YF9jT4tQrl6K1tp4,22551
42
42
  pygeodesy/interns.py,sha256=XvNyWODsUd8_vBLX9XLmcU9Bq97L0nahhF-gvLivzKA,23278
43
43
  pygeodesy/iters.py,sha256=xPH0ytomvJeKHu717Fjzi3QbRrEikO6n7vqkY_IDz1k,20311
44
44
  pygeodesy/karney.py,sha256=ZkZhbsieGnr2cAIXjzmK-9OJdh72Hjp6Hya1wIoVP3c,38913
@@ -61,7 +61,7 @@ pygeodesy/solveBase.py,sha256=oI_-FFjSPI1_yQ598hF6HFKUa4tLsAfbnWtKoQ-TJgE,19206
61
61
  pygeodesy/sphericalBase.py,sha256=bDVuArfePzqcothiTTkyisUGrMDTallXKROjihotcn8,32239
62
62
  pygeodesy/sphericalNvector.py,sha256=Ip0jPv-MXBoHf3f-uXitGqiMz2xynDtE15OSJEl268Q,56913
63
63
  pygeodesy/sphericalTrigonometry.py,sha256=cfXuJaJJ6jrJZxQ5anFHhz3ZbgkAB7aiMfuyMtJXqsE,64064
64
- pygeodesy/streprs.py,sha256=1szfCzFlVgsyJ0H_QFGtzyMfOJpyIZNfj34qvWNACM4,23041
64
+ pygeodesy/streprs.py,sha256=owtyWBlieE4SOuS3Aa7D6-lzYf2mtmJ7PYs351fAGJ4,23453
65
65
  pygeodesy/trf.py,sha256=CRFHmu0lFNtc41fddXavEkHmgnTFWEqR4RTFodcFKsw,119022
66
66
  pygeodesy/triaxials.py,sha256=a9vdXmSqUXOneL0WpLriEFwNMW9EB6MpVbKYXuw_wi8,62562
67
67
  pygeodesy/units.py,sha256=gHN-uzsOwIYjyhtWs0th0VHNY-fOiUiZo9G1cZi0oXg,35272
@@ -72,7 +72,7 @@ pygeodesy/utm.py,sha256=lCp7mNEaJNrAYnbdPaNUKkhbsX_GdssTEkp68uYdMLI,31091
72
72
  pygeodesy/utmups.py,sha256=g2Z_aEOt6fhV9f4fASlW4_K_O_P4zBsBbWfQV11mIKo,13196
73
73
  pygeodesy/utmupsBase.py,sha256=S4s1Sehj9jSMy-XRxwtwVstG3QhyVt924V0FHu0cPIk,18730
74
74
  pygeodesy/vector2d.py,sha256=O9a3uRIREL2k7G-pnpuacjBcAlKg75MnokjtfJB-nBs,39659
75
- pygeodesy/vector3d.py,sha256=5oqlXXsm_YNGEMkVyKfmyp3qdMRxm-gzlK9V0_EK9hE,42687
75
+ pygeodesy/vector3d.py,sha256=PaiuJgHCf0bO8nhOai42ut2zk0_DskSNCrOtCuHxw6U,42673
76
76
  pygeodesy/vector3dBase.py,sha256=UOy6W-r8nTZTOMvxUgFQN6cFQo9H4zw0efqtcSpyy8s,36154
77
77
  pygeodesy/webmercator.py,sha256=fFQtTxIsjOE35_nX_mAgFv1Eov7AdcsCBjT2ONm3qmI,14934
78
78
  pygeodesy/wgrs.py,sha256=6dO31uMKF-t-uQz58hdutilE2A5msOs5Bybq5Uq3qgk,15453
@@ -112,7 +112,7 @@ pygeodesy/rhumb/aux_.py,sha256=XN0zlNwhU525NdcHko-G_Igvc7-mzXbT7ypcVIt5ADw,16048
112
112
  pygeodesy/rhumb/bases.py,sha256=awpP60K6EOzS753oXM-h9S6paS6FwoCnco8Zt8n81jY,54162
113
113
  pygeodesy/rhumb/ekx.py,sha256=JsmdCatWKqsffF8jCh4HDu5IKt_kHq1qUdmP1LMuofY,24044
114
114
  pygeodesy/rhumb/solve.py,sha256=d4RujlW8B7BFAHlrwfj2Bup-uXZZTpgKWgI2JJBqUGc,24059
115
- PyGeodesy-24.9.24.dist-info/METADATA,sha256=tIX957Sljzlxz05L-pGuqjt4ZCcfJnLuQ9E0mTwWruw,19877
116
- PyGeodesy-24.9.24.dist-info/WHEEL,sha256=fS9sRbCBHs7VFcwJLnLXN1MZRR0_TVTxvXKzOnaSFs8,110
117
- PyGeodesy-24.9.24.dist-info/top_level.txt,sha256=cEQPatCXzKZqrivpULC5V5fuy9_V_bAwaP_gUGid7pQ,10
118
- PyGeodesy-24.9.24.dist-info/RECORD,,
115
+ PyGeodesy-24.10.10.dist-info/METADATA,sha256=J8Ssw_oRSiu74syF_P35vCfWG-jWa6tTyEg6p0X4mMo,19891
116
+ PyGeodesy-24.10.10.dist-info/WHEEL,sha256=fS9sRbCBHs7VFcwJLnLXN1MZRR0_TVTxvXKzOnaSFs8,110
117
+ PyGeodesy-24.10.10.dist-info/top_level.txt,sha256=cEQPatCXzKZqrivpULC5V5fuy9_V_bAwaP_gUGid7pQ,10
118
+ PyGeodesy-24.10.10.dist-info/RECORD,,
pygeodesy/__init__.py CHANGED
@@ -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.0rc2, Python 3.12.6 (with U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0,
125
+ The tests ran with Python 3.13.0, Python 3.12.7 (with U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0,
126
126
  U{numpy<https://PyPI.org/project/numpy>} 2.1.0, U{scipy<https://PyPI.org/project/scipy>} 1.14.1,
127
127
  U{GeodSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3,
128
128
  U{IntersectTool<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3 and
@@ -144,14 +144,15 @@ All tests ran with and without C{lazy import} for Python 3 and with command line
144
144
  env variable C{PYGEODESY_WARNINGS=on} for all Python versions. The results of those tests are included in
145
145
  the distribution files.
146
146
 
147
- Test coverage has been measured with U{coverage<https://PyPI.org/project/coverage>} 7.6.0 using Python 3.12.6,
148
- 3.11.5 and 3.10.8. The complete coverage report in HTML and a PDF summary are included in the distribution files.
147
+ Test coverage has been measured with U{coverage<https://PyPI.org/project/coverage>} 7.6.1 using Python
148
+ 3.13.0, 3.12.7, 3.11.5 and 3.10.8. The complete coverage report in HTML and a PDF summary are included in
149
+ the distribution files.
149
150
 
150
- Python 3.13.0rc2, 3.12.6, 3.11.5 and 3.10.8 run on Apple M1 Silicon (C{arm64}), I{natively}. Python 2.7.18 runs on
151
- Intel (C{x86_64}) or Intel I{emulation} ("C{arm64_x86_64}", see function L{machine<pygeodesy.machine>}).
151
+ Python 3.13.0, 3.12.7, 3.11.5 and 3.10.8 run on Apple M1 Silicon (C{arm64}), I{natively}. Python 2.7.18 runs
152
+ on Intel (C{x86_64}) or Intel I{emulation} ("C{arm64_x86_64}", see function L{machine<pygeodesy.machine>}).
152
153
 
153
- The tests also ran with Python 3.12.6 (and U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0) on U{Debian
154
- 12<https://Cirrus-CI.com/github/mrJean1/PyGeodesy/master>} in 64-bit only, with Python 3.12.3 (and
154
+ The tests also ran with Python 3.12.7 (and U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0) on
155
+ U{Debian 12<https://Cirrus-CI.com/github/mrJean1/PyGeodesy/master>} in 64-bit only, with Python 3.12.5 (and
155
156
  U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0) on U{Windows
156
157
  2019Server<https://CI.AppVeyor.com/project/mrJean1/pygeodesy>} in 64-bit only and with Python 2.7.18 (and
157
158
  U{geographiclib<https://PyPI.org/project/geographiclib>} 1.52) on U{Windows
@@ -160,7 +161,7 @@ U{geographiclib<https://PyPI.org/project/geographiclib>} 1.52) on U{Windows
160
161
  A single-File and single-Directory application with C{pygeodesy} has been bundled using U{PyInstaller
161
162
  <https://PyPI.org/project/pyinstaller>} 3.4 and 64-bit Python 3.7.3 on macOS 10.13.6 High Sierra.
162
163
 
163
- Previously, the tests were run with Python 3.12.0-4, 3.11.2-4, 3.10.1-7, 3.9.6, 3.9.1, 3.8.7, 3.7.1, 2.7.15, U{PyPy
164
+ 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, U{PyPy
164
165
  <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
166
  2.7.13) (and U{geographiclib <https://PyPI.org/project/geographiclib>} 1.52, U{numpy<https://PyPI.org/project/numpy>}
166
167
  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,
@@ -597,7 +598,7 @@ else:
597
598
 
598
599
  from pygeodesy.internals import _version2, _DOT_ # PYCHOK import
599
600
  # from pygeodesy.interns import _DOT_ # from .internals
600
- __version__ = '24.09.24'
601
+ __version__ = '24.10.10'
601
602
  # see setup.py for similar logic
602
603
  version = _DOT_(*_version2(__version__, n=3))
603
604
 
pygeodesy/basics.py CHANGED
@@ -19,7 +19,7 @@ del division
19
19
  from pygeodesy.errors import _AttributeError, _ImportError, _NotImplementedError, \
20
20
  _TypeError, _TypesError, _ValueError, _xAssertionError, \
21
21
  _xkwds_get1
22
- # from pygeodesy.fsums import _isFsumTuple # _MODS
22
+ # from pygeodesy.fsums import _isFsum_2Tuple # _MODS
23
23
  from pygeodesy.internals import _0_0, _enquote, _passarg, _version_info
24
24
  from pygeodesy.interns import MISSING, NN, _1_, _by_, _COMMA_, _DOT_, _DEPRECATED_, \
25
25
  _ELLIPSIS4_, _EQUAL_, _in_, _invalid_, _N_A_, _not_, \
@@ -38,7 +38,7 @@ from math import copysign as _copysign
38
38
  import inspect as _inspect
39
39
 
40
40
  __all__ = _ALL_LAZY.basics
41
- __version__ = '24.09.12'
41
+ __version__ = '24.09.28'
42
42
 
43
43
  _below_ = 'below'
44
44
  _list_tuple_types = (list, tuple)
@@ -120,7 +120,7 @@ def _args_kwds_count2(func, exelf=True):
120
120
  @kwarg exelf: If C{True}, exclude C{self} in the C{args}
121
121
  of a method (C{bool}).
122
122
  '''
123
- try:
123
+ try: # PYCHOK no cover
124
124
  a = k = 0
125
125
  for _, p in _inspect.signature(func).parameters.items():
126
126
  if p.kind is p.POSITIONAL_OR_KEYWORD:
@@ -151,7 +151,7 @@ def _args_kwds_names(func, splast=False):
151
151
  args_kwds = _inspect.signature(func).parameters.keys()
152
152
  except AttributeError: # .signature new Python 3+
153
153
  args_kwds = _inspect.getargspec(func).args
154
- if splast and args_kwds:
154
+ if splast and args_kwds: # PYCHOK no cover
155
155
  args_kwds = list(args_kwds)
156
156
  t = args_kwds[-1:]
157
157
  if t:
@@ -469,7 +469,7 @@ def isscalar(obj, both=False):
469
469
  '''
470
470
  if isinstance(obj, _Scalars):
471
471
  return not isbool(obj) # exclude bool
472
- elif both and _MODS.fsums._isFsumTuple(obj):
472
+ elif both and _MODS.fsums._isFsum_2Tuple(obj):
473
473
  return bool(obj.residual == 0)
474
474
  return False
475
475
 
pygeodesy/booleans.py CHANGED
@@ -43,7 +43,7 @@ from pygeodesy.utily import fabs, _unrollon, _Wrap
43
43
  # from math import fabs # from .utily
44
44
 
45
45
  __all__ = _ALL_LAZY.booleans
46
- __version__ = '24.09.23'
46
+ __version__ = '24.09.28'
47
47
 
48
48
  _0_EPS = EPS # near-zero, positive
49
49
  _EPS_0 = -EPS # near-zero, negative
@@ -1614,9 +1614,8 @@ class _EdgeGH(object):
1614
1614
  return a, fabs(d)
1615
1615
 
1616
1616
  def _Error(self, n, *args, **kwds): # PYCHOK no cover
1617
- t = unstr(_EdgeGH.__name__, self._s1, self._s2)
1618
- t = _DOT_(t, _EdgeGH._intersect4.__name__)
1619
- t = unstr(t, *args, **kwds)
1617
+ t = _DOT_(unstr(_EdgeGH, self._s1, self._s2),
1618
+ unstr(_EdgeGH._intersect4, *args, **kwds))
1620
1619
  return ClipError(_case_, n, txt=t)
1621
1620
 
1622
1621
  @Property_RO
pygeodesy/constants.py CHANGED
@@ -1,3 +1,4 @@
1
+
1
2
  # -*- coding: utf-8 -*-
2
3
 
3
4
  u'''Single-instance C{float} and C{int} constants across C{pygeodesy} modules and
@@ -11,6 +12,7 @@ from __future__ import division as _; del _ # PYCHOK semicolon
11
12
 
12
13
  from pygeodesy.basics import _copysign, isbool, iscomplex, isint, _0_0
13
14
  from pygeodesy.errors import _xError, _xError2, _xkwds_get1, _xkwds_item2
15
+ # from pygeodesy.fsums import _isFsum_2Tuple # _MODS
14
16
  # from pygeodesy.internals import _0_0 # from .basics
15
17
  from pygeodesy.interns import _INF_, _NAN_, _UNDER_
16
18
  from pygeodesy.lazily import _ALL_MODS as _MODS, _ALL_LAZY
@@ -24,7 +26,7 @@ except ImportError: # Python 2-
24
26
  _inf, _nan = float(_INF_), float(_NAN_)
25
27
 
26
28
  __all__ = _ALL_LAZY.constants
27
- __version__ = '24.09.24'
29
+ __version__ = '24.09.28'
28
30
 
29
31
 
30
32
  def _copysign_0_0(y):
@@ -355,7 +357,7 @@ def isfinite(obj):
355
357
  except Exception as x:
356
358
  if iscomplex(obj): # _isfinite(complex) thows TypeError
357
359
  return _iscfinite(obj)
358
- if _MODS.fsums._isFsumTuple(obj): # OverflowError
360
+ if _MODS.fsums._isFsum_2Tuple(obj): # OverflowError
359
361
  return obj.is_finite()
360
362
  raise _xError(x, Fmt.PAREN(isfinite.__name__, obj))
361
363
 
@@ -34,7 +34,7 @@ from pygeodesy.utily import m2km, unroll180, _unrollon, _unrollon3, \
34
34
  from math import degrees, radians
35
35
 
36
36
  __all__ = _ALL_LAZY.ellipsoidalBaseDI
37
- __version__ = '24.06.17'
37
+ __version__ = '24.09.26'
38
38
 
39
39
  _polar__ = 'polar?'
40
40
  _B2END = _1_5 # _intersect3 bearing to pseudo-end point factor
@@ -365,7 +365,7 @@ class LatLonEllipsoidalBaseDI(LatLonEllipsoidalBase):
365
365
  c3 = _d3(c, wrap=wrap) # XXX wrap=False?
366
366
 
367
367
  except (TypeError, ValueError) as x:
368
- raise _xError(x, Fmt.SQUARE(points=0), p1, this=self, tol=tol,
368
+ raise _xError(x, Fmt.INDEX(points=0), p1, this=self, tol=tol,
369
369
  closed=closed, height=height, wrap=wrap)
370
370
 
371
371
  # get the azimuthal equidistant projection, once
@@ -391,8 +391,8 @@ class LatLonEllipsoidalBaseDI(LatLonEllipsoidalBase):
391
391
  p1, i = p2, j
392
392
 
393
393
  except (TypeError, ValueError) as x:
394
- raise _xError(x, Fmt.SQUARE(points=i), p1,
395
- Fmt.SQUARE(points=j), p2, this=self, tol=tol,
394
+ raise _xError(x, Fmt.INDEX(points=i), p1,
395
+ Fmt.INDEX(points=j), p2, this=self, tol=tol,
396
396
  closed=closed, height=height, wrap=wrap)
397
397
 
398
398
  f, j = _fi_j2(f, len(Ps)) # like .vector3d.nearestOn6
pygeodesy/errors.py CHANGED
@@ -16,9 +16,9 @@ C{PYGEODESY_EXCEPTION_CHAINING=std} or to any non-empty string.
16
16
  # from pygeodesy import errors # _MODS, _MODS.getattr
17
17
  from pygeodesy.internals import _dunder_nameof_, _plural, _tailof
18
18
  from pygeodesy.interns import MISSING, NN, _a_, _an_, _and_, _clip_, _COLON_, _COLONSPACE_, \
19
- _COMMASPACE_, _datum_, _ellipsoidal_, _incompatible_, _invalid_, \
20
- _keyword_, _LatLon_, _len_, _not_, _or_, _SPACE_, _specified_, \
21
- _UNDER_, _vs_, _with_
19
+ _COMMASPACE_, _datum_, _ELLIPSIS_, _ellipsoidal_, _incompatible_, \
20
+ _invalid_, _keyword_, _LatLon_, _len_, _not_, _or_, _SPACE_, \
21
+ _specified_, _UNDER_, _vs_, _with_
22
22
  from pygeodesy.lazily import _ALL_LAZY, _ALL_MODS as _MODS, _getenv, _PYTHON_X_DEV
23
23
  # from pygeodesy import streprs as _streprs # _MODS
24
24
  # from pygeodesy.unitsBase import Str # _MODS
@@ -27,7 +27,7 @@ from pygeodesy.lazily import _ALL_LAZY, _ALL_MODS as _MODS, _getenv, _PYTHON_X_D
27
27
  from copy import copy as _copy
28
28
 
29
29
  __all__ = _ALL_LAZY.errors # _ALL_DOCS('_InvalidError', '_IsnotError') _under
30
- __version__ = '24.09.19'
30
+ __version__ = '24.10.01'
31
31
 
32
32
  _argument_ = 'argument'
33
33
  _box_ = 'box'
@@ -892,6 +892,19 @@ def _Xorder(_Coeffs, Error, **Xorder): # in .auxLat, .ktm, .rhumb.bases, .rhumb
892
892
  raise Error(X, m, txt_not_=_or(*t))
893
893
 
894
894
 
895
+ def _xsError(X, xs, i, x, *n, **kwds): # in .fmath, ._fstats, .fsums
896
+ '''(INTERNAL) Error for C{xs} or C{x}, item C{xs[i]}.
897
+ '''
898
+ def _xs(*xs):
899
+ if len(xs) > 4:
900
+ xs = xs[:3] + (_ELLIPSIS_,) + xs[-1:]
901
+ return xs
902
+
903
+ return ((_xError(X, n[0], _xs(*xs), **kwds) if n else
904
+ _xError(X, xs=_xs(*xs), **kwds)) if x is xs else
905
+ _xError(X, _streprs.Fmt.INDEX(xs=i), x, **kwds))
906
+
907
+
895
908
  def _xStrError(*Refs, **name_value_Error): # in .gars, .geohash, .wgrs
896
909
  '''(INTERNAL) Create a C{TypeError} for C{Garef}, C{Geohash}, C{Wgrs}.
897
910
  '''