Source code for egttools
"""
The :mod:`egttools` package implements methods to study evolutionary dynamics.
"""
import importlib.resources
try:
from importlib.resources import files
except ImportError:
from importlib_resources import files
try:
# Load raw build info text
_build_info_file = files(__package__).joinpath('numerical/egttools_build_info.txt')
_raw_build_info = _build_info_file.read_text(encoding='utf-8').strip()
# Parse into a structured dictionary
_build_info_lines = _raw_build_info.splitlines()
_build_info_dict = {}
for line in _build_info_lines:
if ':' in line:
key, value = line.split(':', 1)
_build_info_dict[key.strip()] = value.strip()
# Expose structured info
__build_info__ = _build_info_dict
except Exception:
__build_info__ = {"Error": "Build information unavailable."}
[docs]
def show_build_info():
"""
Nicely print the EGTtools build information.
"""
if not isinstance(__build_info__, dict):
print("Build information unavailable.")
return
if "Error" in __build_info__:
print("Build information unavailable.")
print("(No 'egttools_build_info.txt' found inside the package.)")
else:
print("\nEGTtools Build Information")
print("-" * 30)
for key, value in __build_info__.items():
print(f"{key:<20}: {value}")
try:
import egttools.numerical as numerical
except Exception:
raise Exception("numerical package not initialized")
else:
# Now we delete the pre-loaded numpy, as it is not necessary
# del numpy
from .numerical.numerical_ import __version__
from .numerical.numerical_ import VERSION
from .numerical.numerical_ import is_openmp_enabled
from .numerical.numerical_ import is_blas_lapack_enabled
from .numerical.numerical_ import USES_BOOST
from .numerical.numerical_.random import Random
from .numerical.numerical_ import (sample_simplex, sample_unit_simplex, calculate_nb_states,
calculate_state,
calculate_strategies_distribution, )
import egttools.games as games
import egttools.behaviors as behaviors
import egttools.analytical as analytical
import egttools.utils as utils
import egttools.plotting as plotting
import egttools.distributions as distributions
import egttools.datastructures as datastructures
__all__ = ['utils', 'plotting', 'analytical',
'games', 'behaviors', 'numerical',
'distributions', 'datastructures', '__version__', 'VERSION', 'Random',
'sample_simplex', 'sample_unit_simplex', 'calculate_nb_states', 'calculate_state',
'calculate_strategies_distribution']