Released on: 2026/03/30
DOI: https://doi.org/10.5281/zenodo.19333956
Breaking changes:
- Make all methods that rely on coordinates take a single
coordinatesargument as input. This includes all gravity and coordinate-conversion methods. The argument is a tuple of 3 values (or arrays) representing the 3 dimensions of the given coordinate system. This standardizes the API and simplifies the documentation, making Boule closer to the other Fatiando a Terra libraries. It also makes it possible to allow passing coordinates in any coordinate system (see #265). (#233) - Replace the
geodeticargument inboule.Ellipsoid.geocentric_radiuswith the newcoordinate_systemargument. (#231) - Make all keyword arguments in our methods and functions keyword-only. Passing keyword arguments as positional (without the argument name) will now cause errors. This is good because the previous behavior can lead to bugs. For example,
WGS84.normal_gravity(coordinates, True)will now have to beWGS84.normal_gravity(coordinates, si_units=True). (#270)
New features:
- Add a
coordinate_systemargument to gravity calculations. The gravity, gravitation, and centrifugal calculations inEllipsoidcan now receive inputs in any of the 4 coordinate systems that we support: geodetic (default), spherical, Cartesian, and ellipsoidal harmonic. The methods automatically convert to the ellipsoidal harmonic system since this is where the math is done. (#265) - Add coordinate conversion to and from spherical and ellipsoidal harmonic systems. The conversion goes through the geodetic system, so there can be a loss of accuracy when doing round-trip conversions. (#260)
- Add coordinate conversion to and from geocentric Cartesian and ellipsoidal harmonic systems. Going to Cartesian uses an analytical expression from the Physical Geodesy book. Going back to ellipsoidal harmonic is done by passing through the geodetic system. (#259)
- Add coordinate conversion to and from geodetic and geocentric Cartesian systems. Uses the method of Zhu (1993) for conversion from Cartesian to geodetic. (#258)
- Add coordinate conversion to and from spherical and geocentric Cartesian systems. (#234)
Documentation:
- Update the documentation on coordinates to use new coordinate conversion methods. (#263)
- Remove reference to "height" in
boule.Ellipsoid.geocentric_radiuswhich didn't make sense since this functions calculates radii. (#230) - Add a link to the Fatiando a Terra Forum in the README. (#224)
- Use Bordado instead of Verde to make grid coordinates in the documentation. (#271)
Maintenance:
- Drop support for Python 3.8 and 3.9, add support for 3.14. (#249)
- Get test coverage back to 100%. (#253)
- Stop relying on Codecov for measuring and tracking test coverage changes in pull requests and use GitHub Actions job instead. (#251)
- Run a single job to check style and format in GitHub Actions to save compute resources. (#252)
- Use Ruff for formatting and linting instead of black, flake8, isort. (#250)
- Move to a
srclayout structure, with the library code insrc/bouleand tests intest. This means that tests aren't shipped with the source distributions anymore to reduce the upload size. (#248) - Fix upload of coverage reports to Codecov. (#235)
This release contains contributions from:
- Santiago Soler
- Leonardo Uieda