All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- BUG: fix an incoming incompatibility with argparse (address a deprecation warning in CPython 3.14)
- DEP: require inifix 5.1.0 or newer, fix newly detected type-checking errors
- BUG: fix a crash in
idfx run
where a Python exception would be raised instead of an error message - TYP: improve typechecking with pyright
- DEP: drop
[isolated]
extra (external tooling should handle dependency pinning) - BLD: drop package level
__version__
attribute - BLD: migrate build backend from
setuptools
tohatchling
- RFC: refactor theme-handling internals
BUG: fix an issue where cloning to a dir with missing parents might create
orphan empty directories if the atomic copy failed. In such an event,
idfx clone
now attempts to clean up after itself
- DOC: minor tweaks and typos
- ENH:
idfx clone
now includes Python files (*.py
) by default to improve support for setups that usePydefix
for initialization - ENH:
idfx clone
now supports cloning to a nested directory, creating parent directories as needed - ENH:
idfx clone
now accepts an--exclude
argument - ENH:
idfx conf
now accepts a-debug
shorthand for-DIdefix_DEBUG=ON
- BUG: fix a bug where
idfx run
could request more threads than there are physical CPUs - ENH: add support for error messages with hints
- API: drop positional
directory
parameter toidfx clean
. Replace it with (optional)--dir
parameter, following other commands.
- DEP: migrate prompting from rich to termcolor
- API: remove
idfx stamp
command, drop dependency on GitPython - DEP: bump minimal and pinned
inifix
from 3.0.0 to 4.2.2 - DEPR: rename print_err to print_error, deprecate old name
- ENH: add short version
-i
foridfx digest --input ...
- DEPR: expire running deprecations in prep for 4.0 rel
- BUG: fix
baballe digest > file.json
- BUG: fix a bug where
idfx digest
would choke on files where no line is captured
ENH: add support for parsing arbitrary files (idfx digest
)
- BUG: exit program after error (
idfx digest
) - BUG: fix a bug where
idfx digest
would generate invalid json from logs that end with an inlined warning or an error
ENH: add --no-confirm
option to idfx clean
ENH: strip all trailing whitespace in idfx digest
- ENH: add
-o/--output
argument toidfx digest
- PERF: faster type casting in `idfx digest``
- PERF: avoid unnecessary json serialization in
idfx digest
- ENH: sort log files by process number in
idfx digest
- API: only parse the first log by default in
idfx digest
- ENH: add a `idfx digest`` command to pre-process performance logs
- TST: test on Python 3.12
BUG: copy all *.ini
files in idfx clone
- BLD: drop support for Python 3.8
- BUG: avoid spurious warnings and errors when running idefix with
-nolog
or-nowrite
flags - DOC: document how to use ccmake through idfx conf
There are no functional changes in this release. Infrastructures dependencies were updated, and this is the first release using PyPI trusted publishers mechanism.
- BLD: migrate to src layout
- ENH: Improvements to
idfx run
:- step-by-step mode is now more reliable (
--one --times
is translated to-maxcycles
). - output types for step-by-step modecan now be specified with the new
--out
option (previously they were only parsed from the--one
option) - the
--times
option is deprecated. It is now recommended to use idefix's-maxcycles
option directly.
- step-by-step mode is now more reliable (
ENH: let --nproc
argument in idfx run
be implicit if -dec
is also present.
- BUG: fix
idfx run
crashing without--one-step
- BUG: fix incorrect logging message when running
idfx run
without--one-step
- ENH: add
idefix_cli.lib.run_subcommand
helper function - ENH: add new command (
idfx switch
) for switching git branches in$IDEFIX_DIR
- BUG: fix a bug where
idfx run --one log
would lead to undefined behaviour - ENH: add support for running idefix_cli as module script (
python -m idefix_cli
) - ENH: add actual support for running idefix step by step with
idfx run --one ...
In previous versions this was done by fixing the time step value at the initial value, and didn't work with-restart
. This version is agnostic of how the time step is set, and will interupt idefix in a safe way as soon as the desired number of cycles is completed. - API: disallow abbreviation in command line arguments
- DEPR: deprecate --duration parameter in idfx run
- BUG: fix a bug in
idfx run
where--times
argument would be silently ignored if passed without--one-step
- BUG: fix a bug where
idfx run --times -1
would not stop untiltstop
was reached
- RFC: replace 'compile' with 'build' internally and in error messages
- ENH: bail out of idfx conf if setup.cpp does not exist
BUG: fix a bug where idfx clone
would crash when including a non-empty directory
BUG: fix a bug where idfx clone --include ...
crashed when a pattern matched a directory
- RFC: use a StrEnum for RecompileMode
- DOC: minor fixes for builtin commands docs
ENH: idfx run
now always calls make
before running Idefix, unless configured otherwise
BUG: fix a used-before-definition error detected by mypy
- DOC: bootstrap website
- MNT: drop broken toml formatter
- DEPR: rename extension_dir option to plugins_directory
- DOC: document how to configure plugins directory
- ENH: define idefix_cli.lib.all
- DOC: define nav
- DOC: document public api idefix_cli.lib
- ENH: move backports to a separate module
- DEPR: remove long-deprecated functionalities
- ENH: implement alternative command
- BLD: update CD workflow
- BLD: add the
[isolated]
optional dep target with the effect of pinning dependencies - RFC: minimise size of future public api module
- RFC: reduce type uncertainty (strict return types)
- TST: rename test file (test_setup.py -> test_conf.py)
- UX: rework help
- ENH: improve phrasing in compilation prompt
- ENH: rename internal module _commons.py to lib.py to mark that it's now public
- RFC: refactor dynamical command loading to avoid deprecation warning
- BUG: fix idfx conf help message and add defaults to all commands help messages
BUG: fix packaging issue which made 0.26.0 unusable
ENH: enable configuring a directory for user extensions
BUG: fix a bug where idfx run
would not offer to recompile idefix when some options (like IDEFIX_DEBUG) were reconfigured interactively with ccmake.
BUG: fix a critical bug introduced in 0.25.0 where idfx run --one vtk
would crash on a KeyError due to a typo
ENH: add --dir
argument to idfx conf
ENH: add support for Windows
ENH: add --times
argument to idfx run
to run n-steps simulations in combination with --one
ENH: idfx clone now shows a file tree of files and directories that were created (not in --shallow
mode)
ENH: idfx clean now shows a file tree of files and directories to be removed
BUG: fix an unbound variable error in idfx run
BUG: correctly pass non-zero return value from idefix
executable to idfx run
- DOC: clarify and fix a couple example in the README
- ENH: resolve dir path (improve error message in idfx run)
- DEPR: deprecate
[idefix_cli]
configuration section in favor of command specific ones (like[idfx conf]
) - ENH: add support for persistent (configured) arbitrary inclusions in
idfx clone
BUG: fix help message for idfx clone:
--shallow
flag was erroneouly marked as not implementeddest
still referenced a long-gone--force
flag
- ENH: when compiling idefix, always use CPUs in powers of 2 (up to 8), and
strictly less than the available number. Previously we used
min(8, count//2)
- ENH: following upstream development, idfx run will now check log files left by idefix to determine its return value
BUG: fix pattern matching in idfx run again
BUG: fix a bug where source files directly at the top of src/ would be ignored in compilation check by idfx run
BUG: fix an error message in idfx run
ENH: make logs stand out more with colors and markup
ENH: add support to pass arbitrary arguments to idefix via idfx run
This is a breaking change because idfx run
previously had one optional
positional argument directory
, which is now a named argument --dir
(but
still defaults to the current dir).
BUG: fix a bug where idfx run would crash instead of compiling idefix
ENH: replace custom solution with stdlib's contextlib.chdir in Python 3.11, vendor it for older versions
Several enhancements to idfx run
- ENH: don't create a temporary inputfile if no edits are required
- ENH: prioritize checking for executable (or Markefile) over inifile in error message for idfx run
- ENH: add support for mpirun in idfx run
ENH: use inifix's binary mode to maximize portability, bump minimal supported version to 3.0.0
- BUG: fix error messages in idfx clone
- BUG: fix a bug where os.path.setp-terminated target dir would cause a crash in idfx clone
ENH: idfx run --one now accepts optional and arbitrary output format identifiers. For instance
$ idfx run --one dmp vtk
will run the curdir setup for one time step and output both a dmp file and a vtk file.
BUG: fix a bug where the list of files checked for edit time by idfx run was not inclusive enough.
BUG: fix a bug where the list of files checked for edit time by idfx run was too inclusive.
ENH: idfx run now detects changes in idefix source files since last compilation
BUG: same fix as 0.13.2, this time done more carefully.
BUG: fix a bug where -gpu
flag wasn't implied by using a known GPU target architecture in idfx conf
BUG: make version parsing more robust to accomodate for loose upstream standards
ENH: check for updated source in idfx run and offer to recompile on the fly
BUG: fix a broken error message
ENH: idfx clone now copies all C and C++ source files (*.h
, *.c
, *.hpp
,
*.cpp
) from the target directory, instead of just definitions.hpp
and
setup.cpp
.
BUG: fix a bug in idfx clone where symlinks would be generated to missing files #101
ENH: improve command plugin validation and increase main module test coverage #95
-
ENH: improvements to
idfx clean
- make idfx clean interactive: no file is removed without an informed confirmation, --dry is repurposed to skip prompt
- improve info messages in idfx clean
- improve cmake support (detect build/ dir) #94
-
ENH: add support for -arch, -gpu, -cxx options with CMake, and support their equivalent options from .config/idefix.cfg #93
ENH: add -i/--interactive
flag to idfx conf
to invoke ccmake
instead of cmake
.
#92
ENH: improve idfx conf for versions of Idefix that don't have configure.py #89
MNT: add explicit support for Python 3.10 #86
ENH: add provisional support for CMake configuration (Idefix 0.9) #70
BUG: fix a breaking with idfx conf #84
ENH: implement a plugin architecture for commands #81
ENH: programatically guarantee that git-indexed files cannot be removed by idfx clean
#77
-
ENH: add preliminary support for cmake via additional globals and functions in idefix_cli._commons module #75
-
BUG: fix version parsing for Idefix in idfx stamp #76
MNT: bump dependencies versions
UX: add colored logging and refactor idfx clone to use os.replace for atomicity
UX: add a more specific error message when IDEFIX_DIR exists but isn't valid.
- refactor: use temporary ini files in
idfx run
to avoid polluting the work directory. Remove "temporary"*.ini_
filename pattern fromidfx clean
's rules (backwards incompat) - refactor: remove error wrapping in
idfx conf
to allow debugging via breakpoints - UX: add default values for the
directory
positional argument inidfx clean
andidfx run
- UX: display a clean error message in case idefix itself errors out in
idfx run
- UX: clarify error messages for
idfx run
in case compilation is necessary but impossible (either because IDEDIX_DIR isn't configured or the compilation itself fails) - Reduce the maximum number of CPU used for compilation to half the available pool.
Fix a bug where idfx would fail to launch when the git executable wasn't available.
Fix a bug where idfx clone wouldn't work across multiple devices.
- Add the
idfx clone
command - bump the required version of inifix