Changelog#

Version 0.6.0#

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 coordinates argument 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 geodetic argument in boule.Ellipsoid.geocentric_radius with the new coordinate_system argument. (#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 be WGS84.normal_gravity(coordinates, si_units=True). (#270)

New features:

  • Add a coordinate_system argument to gravity calculations. The gravity, gravitation, and centrifugal calculations in Ellipsoid can 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_radius which 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 src layout structure, with the library code in src/boule and tests in test. 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

Version 0.5.0#

Released on: 2024/10/22

DOI: https://doi.org/10.5281/zenodo.13975491

Breaking changes:

  • Drop support for Python 3.7 (#188)

New features:

  • Add geocentric_radius to TriaxialEllipsoid (#146)

  • Add a volume property for the Sphere (#152)

  • Add mass, mean_density, and volume_equivalent_radius properties to classes (#173)

  • Add true mean radius for Sphere, Ellipsoid and TriaxialEllipsoid (#177)

  • Add area and area_equivalent_radius to all three ellipsoid classes (#178)

  • Add new planetary ellipsoids and new naming scheme (#180)

  • Add attributes for the normal potential to Sphere and Ellipsoid (#184)

  • Add normal_gravitational_potential, normal_gravity_potential, and centrifugal_potential methods to Ellipsoid and Sphere classes (#187)

  • Add the semimedium_axis and semimajor_axis_longitude to the Sphere and Ellipsoid classes for compatibility with the TriaxialEllipsoid (#192)

  • Add __str__ method to Ellipsoid classes (#213)

Maintenance:

  • Extend support for Python 3.11 (#147)

  • Add Blazej Bucha to AUTHORS.md (#148)

  • Update Leo’s affiliation from Liverpool to São Paulo (#149)

  • Update Black format to version 24.2 (#150)

  • Use Burocrata to check/add license notices (#153)

  • Use Dependabot to manage updates to GitHub Actions (#154)

  • Use Trusted Publisher to deploy to PyPI (#160)

  • Move package configuration to pyproject.toml (#171)

  • Add link to Leo’s ORCID (#190)

  • Extend support to Python 3.12 (#189)

  • Run tests with oldest dependencies on x86 macos (#200)

  • Replace _version_generated.py for _version.py (#199)

  • Move push to codecov to its own job in Actions (#203)

  • Update how output variables are stored in Actions (#206)

  • Replace build for python-build in environment.yml (#207)

Documentation:

  • Update the version of Sphinx and its plugins (#170)

  • Fix typo in installation instructions (#172)

  • Update coordinate conversions web documentation (#212)

  • Replace sphinx napoleon for numpydoc (#195)

This release contains contributions from:

  • Mark Wieczorek

  • Leonardo Uieda

  • Santiago Soler

  • Blazej Bucha

Version 0.4.1#

Released on: 2022/10/27

DOI: https://doi.org/10.5281/zenodo.7258175

Documentation:

  • Update contact link in the docs side bar (#141)

  • Add definition of “co-located grids” to the glossary (#139)

  • Fix typo in overview docs page (#137)

Maintenance:

  • Undo deprecation of coordinate conversion methods (#142)

  • Drop support for Python 3.6 (#144)

  • Add serve target in doc/Makefile (#136)

This release contains contributions from:

  • Mariana Gomez

  • Santiago Soler

  • Leonardo Uieda

Version 0.4.0#

Released on: 2022/08/09

DOI: https://doi.org/10.5281/zenodo.6779998

Warning

Boule v0.4.0 is the last release that is compatible with Python 3.6.

Backwards incompatible changes:

  • Refactor the Sphere class to not inherit from Ellipsoid. Breaks backwards compatibility due to the removal of inherited methods and attributes (#129)

  • Make all package modules private by adding a leading _ to their name (#119)

  • Rename the Ellipsoid.emm attribute to Ellipsoid._emm to make it private (#123)

  • Remove the boule.test function (#116)

Deprecations:

  • Deprecate the coordinate conversion methods which have been ported to the pymap3d library v2.9.0 (#126)

New features:

  • Add the volume property to Ellipsoid (#132)

  • Add missing attributes to Ellipsoid for pymap3 compatibility (#121)

  • Add the TriaxialEllipsoid class with geometric parameters (#72)

  • Add a normal gravitation method to Sphere (#73)

Documentation:

  • Add a logo for Boule (#125)

  • Refactor the documentation tutorials to shift the focus to how to do things with Boule and point to other pages for more of the theory (#130)

  • Refactor documentation of TriaxialEllipsoid (#128)

  • Refactor the documentation of Ellipsoid (#127)

  • Fix formatting for code to pip install from GitHub (#118)

  • Fix license link and compatibility warning in the README (#117)

  • Use jupyter-sphinx instead of sphinx-gallery and update the documentation front page (#112)

  • Point to our organization wide guides in the documentation (#108)

  • Add an example calculating global gravity disturbances (#102)

  • Update Sphinx version to 4.5.0 (#103)

Maintenance:

  • Convert the README to Markdown (#113)

  • Specify oldest supported version of each dependency (#111)

  • Move to pyproject.toml/setup.cfg with build instead of setup.py (#110)

  • Replace pylint with flake8 and some extensions (#109)

  • Rename the git “master” branch to “main” (#107)

  • Update code style to Black 22.3.0 (#104)

  • Replace Google Analytics with Plausible for page visit statistics (#99)

This release contains contributions from:

  • Agustina Pesce

  • Chris Dinneen

  • Leonardo Uieda

  • Santiago Soler

Version 0.3.1#

Released on: 2021/10/19

DOI: https://doi.org/10.5281/zenodo.5577885

Bug fix:

  • Package the missing requirements.txt file in source distributions (#96)

This release contains contributions from:

  • Leonardo Uieda

Version 0.3.0#

Released on: 2021/10/18

DOI: https://doi.org/10.5281/zenodo.5575827

Highlights:

  • Add support for Python 3.9 and 3.10 (#87)

  • Add reference Sphere class for bodies with zero flattening (#42)

  • Add spheroids for Venus (#68), Mercury, and the Earth’s Moon (#71)

Enhancements:

  • Warn users if normal gravity is being computed on internal point (#83)

  • Add option to return normal gravity in SI units (#69)

  • Add parameter validation for the Sphere class (#56)

  • Add parameter validation for the Ellipsoid class (#45)

  • Make parameter validation methods private (#55)

  • Tests normal gravity against Somigliana equation (#51)

  • Fix normal gravity equation of Sphere (#52)

  • Fix missing centrifugal term for spheres at the equator (#48)

Documentation:

  • Update documentation theme to sphinx-book-theme (#92)

  • Add tutorial for geodetic to geocentric coordinate transformations (#84)

  • Improvements to docstrings of Ellipsoid and Sphere (#49)

Maintenance:

  • Add Mariana Gomez to AUTHORS.md (#90)

  • Add Chris Dinneen to AUTHORS.md (#74)

  • Only run CI for Python 3.6 and 3.10 now that it’s out (#89)

  • Update setuptools_scm configuration to save a boule/_version.py file instead of relying on pkg_resources to get the version number (#91)

  • Use the OSI version of item 3 in the license (#70)

  • Add license and copyright notice to every .py file (#67)

  • Refactor GitHub Actions workflows to separate building the docs (#65)

  • Replace versioneer with setuptools-scm (#61)

  • Remove configuration files for unused CI (#60)

  • Replace Travis and Azure with GitHub Actions (#57)

  • Add conda-forge badge to the README (#40)

  • Format the doc/conf.py file with Black (#41)

This release contains contributions from:

  • Chris Dinneen

  • Mariana Gomez

  • Hugo van Kemenade

  • Lu Li

  • Santiago Soler

  • Leonardo Uieda

Version 0.2.0#

Released on: 2020/07/10

DOI: https://doi.org/10.5281/zenodo.3939204

  • Add the Ellipsoid.geocentric_radius method to calculate the distance from the center of the ellipsoid to its surface as a function of latitude (geodetic or geocentric). (#37)

  • Add the Ellipsoid.prime_vertical_radius method for computing the prime vertical radius (usually represented by N in equations) as a function of geodetic latitude. (#35)

  • Fix typo in README contributing section (#32)

This release contains contributions from:

  • Leonardo Uieda

  • Rowan Cockett

  • Santiago Soler

Version 0.1.1#

Released on: 2020/01/10

This release contains only a documentation fix: include install instructions for conda and pip. No functionality has been changed (hence, no DOI was issued).

Version 0.1.0#

Released on: 2020/01/10

DOI: https://doi.org/10.5281/zenodo.3603997

First release of Boule including basic functionality:

  • Definition of the Ellipsoid class: based on the semi-major axis, flattening, geocentric gravitational constant, and angular velocity. Other quantities are derived from these 4.

  • Computation of normal gravity and coordinate conversions between geodetic and geocentric.

  • Ellipsoid realizations for the Earth (WGS84 and GRS80) and Mars.

Version 0.0.1#

Released on: 2019/11/06

DOI: https://doi.org/10.5281/zenodo.3530750

This release is a placeholder that serves as a marker for the start of this project. It is used to register the project on PyPI and test the continuous integration deployment process.