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
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
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_radiustoTriaxialEllipsoid(#146)Add a
volumeproperty for the Sphere (#152)Add
mass,mean_density, andvolume_equivalent_radiusproperties to classes (#173)Add true mean radius for
Sphere,EllipsoidandTriaxialEllipsoid(#177)Add
areaandarea_equivalent_radiusto all three ellipsoid classes (#178)Add new planetary ellipsoids and new naming scheme (#180)
Add attributes for the normal potential to
SphereandEllipsoid(#184)Add
normal_gravitational_potential,normal_gravity_potential, andcentrifugal_potentialmethods toEllipsoidandSphereclasses (#187)Add the
semimedium_axisandsemimajor_axis_longitudeto the Sphere and Ellipsoid classes for compatibility with theTriaxialEllipsoid(#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.pyfor_version.py(#199)Move push to codecov to its own job in Actions (#203)
Update how output variables are stored in Actions (#206)
Replace
buildforpython-buildin 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
servetarget indoc/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
Sphereclass to not inherit fromEllipsoid. 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.emmattribute toEllipsoid._emmto make it private (#123)Remove the
boule.testfunction (#116)
Deprecations:
Deprecate the coordinate conversion methods which have been ported to the pymap3d library v2.9.0 (#126)
New features:
Add the
volumeproperty toEllipsoid(#132)Add missing attributes to
Ellipsoidfor pymap3 compatibility (#121)Add the
TriaxialEllipsoidclass 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.cfgwithbuildinstead ofsetup.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.txtfile 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
Sphereclass 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
Sphereclass (#56)Add parameter validation for the
Ellipsoidclass (#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_scmconfiguration to save aboule/_version.pyfile instead of relying onpkg_resourcesto get the version number (#91)Use the OSI version of item 3 in the license (#70)
Add license and copyright notice to every
.pyfile (#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.pyfile 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_radiusmethod 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_radiusmethod 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
Ellipsoidclass: 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.