Add support for dotenv file

Benoit Seignovert requested to merge dotenv-support into main

Example of .env file:

# SPICE kernels location


  • TourConfig now supports .env file to locate the mission kernels directories. This will simplify the way people can defined the location of there kernels without having to hardcode their paths. It also allow the user to locally bypass their global configuration if needed.

  • New dotenv file finder function to locate .env files in the current working directory or any of its parents:

from moon_coverage.misc import find_dotenv


Note: only the first .env is returned.

  • If a .env file is found, its environment variables will be loaded instead of the global env variables. You can check which env variable is loaded with the getenv function:
from moon_coverage.misc import getenv


Note: Dotenv variables don't modify the global variables (os.environ).

  • To have a list of all the kernels directories available, you can now use the print_kernels_dir() function:
from moon_coverage import print_kernels_dir

Dotenv file found:
- .env

Kernels ENV variables:
- KERNELS_JUICE         : /data/ESA/JUICE/kernels (.env)
- KERNELS_EUROPA_CLIPPER: ../kernels/Clipper (.env)
  • You can also use %load_ext moon_coverage magic function for IPython/Jupyter environment to directly the tool configuration:
%load_ext moon_coverage
Installed packages:
- moon-coverage: 0.12.0
- esa-ptr      : 1.0
- numpy        : 1.23.5
- matplotlib   : 3.6.2
- spiceypy     : 5.1.2

Dotenv file found:
- .env

Kernels ENV variables:
- KERNELS_JUICE         : ../kernels/JUICE (.env)
- KERNELS_EUROPA_CLIPPER: /data/kernels/Clipper
  • We also simplify the documentation on TourConfig to reflect these changes and encourage the user to use global env variable or .env files.

Closes #65 (closed).

Merge request reports