Sacred Versions Save

Sacred is a tool to help you configure, organize, log and reproduce experiments developed at IDSIA.

0.8.5

6 months ago

Minor release with a few small fixes.

  • Feature: Add setting for the default heartbeat interval
  • Bugfix: Don't ignore non-loadable classes in config files (#902, thanks @ernestum)
  • Bugfix: Fix an import error that made conda-forge build fail (#921, thanks @n-gao)
  • Doc: Update CDE tool that doesn't exist anymore and fix starter example (#905, #906, thanks @zhimin-z)

0.8.4

1 year ago

Minor release with a few small fixes.

  • Update tests and supported python versions: sacred now officially supports Python 3.8-3.11 (#872, #892, thanks @jnphilipp)
  • Feature: Allow type annotations in config scopes and future-proofing config scopes by using ast instead of a complex regex (thanks @vnmabus)
  • Feature: Expose MongoClient in the MongoObserver (thanks @Gracecr)
  • Bugfix: Support new numpy versions by removing using Python builtin types instead of the np.* aliases (#870, thanks @Kaushalya)
  • Bugfix: Allow *.ipynb files as source files when run via ipython in non-interactive mode
  • Internal: Add error causes for many errors in the codebase (#894, #898, thanks @cool-RR)
  • Internal: Use GitHub Actions for tests instead of azure pipelines to gain more control (#896)
  • Internal: Use GitHub Actions to automate releases on PyPI

0.8.3

2 years ago

A minor release with many small improvements and support for Python 3.10.

  • Feature: Support for the new numpy random API (np.random.Generator); deprecate old np.random.RandomState for np 1.19+ (#779, thanks @jnphilipp)
  • Feature: Add py.typed file for typecheckers like mypy (#849, thanks @neophnx)
  • Feature: Validate sacred settings (#774)
  • Feature: Update CLI options: Change run ID from command line (#798, thanks @jnphilipp)
  • Feature: Log named configs and config updates (#823)
  • Feature: Options to save sources and copy resources in FileStorageObserver (#806, thanks @patrick-kidger)
  • Feature: Support for NVIDIA Multi-Instance GPU (#865, thanks @j3soon)
  • Bugfix: Updated testcases to py3.6+; updated dependencies (e.g., tinydb 4+, pytest 6.2.1, pymongo 4.0) (#799, #819, #821, thanks a lot @jnphilipp)
  • Bugfix: Fixes for handling symlinks (#791, thanks @MaxSchambach)
  • Bugfix: Fix docker example (#829, thanks @ahallermed)
  • Doc: Some fixes and update of the documentation (#778, #792, #793, #797, #804, #842, #856, thanks @daliasen @aaronsnoswell @schmitts @Blaizzy)

0.8.2

3 years ago

Minor bugfix release that resolves some bugs for Python 3.8+ and issues with the read-only container types.

  • Feature: Added support for pickling and YAML serialization to the read-only containers (#775, #737)
  • Feature: Added git integration to SqlObserver (#741)
  • Feature: Added support for a collection prefix in MongoObserver (#704)
  • Bugfix: Fix print_config command for Python 3.8 (#719)
  • Bugfix: Fix save_config command (#765)
  • Bugfix: Named config updates are now distributed correctly during the configuration creation process (#769, #777)
  • Bugfix: Parsing of the nvidia_smi output now also works with non-Unicode (e.g., Chinese) characters in process names (#776)
  • Bugfix: Fix type annotations of MongoObserver (#762)
  • Bugfix: Terminate tee on timeout. This is a workaround that prevents program crashes caused by output capturing (#740)
  • Bugfix: Improve parsing of config scopes (#699, #764)
  • Bugfix: Fix error tracking of ConfigErrors when raised in a config scope (#733)
  • Bugfix: Made git import optional (#724)

0.8.0

4 years ago

Major release with several breaking changes.

  • API change: Dropped support for Python 2
  • API change: Gathering of git information gathering is now enabled by default #595
  • API change: Switched constructor from Observer.create(...) to Observer(...) for all observers.
  • API change: Changed the interface for collecting custom host-information #569
  • API change: Changed interface for defining CLI options. #572
  • Feature: Added new S3 file observer #542
  • Feature: added started_text option to TelegramObserver #494
  • Feature: added copy/deepcopy support to read-only containers #500
  • Bugfix: FileStorage Observer is more reliable under parallel execution #503
  • Bugfix: FileStorageObserver now raises an error when an artifact would overwrite an important file #647
  • Bugfix: fixed inconsistent config nesting behavior #409 #505
  • Bugfix: Several fixes for tensorflow integration
  • Bugfix: Fixed crash due to missing brand-key on some machines # 512
  • Internal: Migrated CI server to Azure
  • Internal: Added pre-commit hooks for pep 8 checks and python black for automated code formatting
  • Internal: Started using pathlib.Path instead of os.path in many places

0.7.5

4 years ago

The last release to support Python 2.7.

  • Feature: major improvements to error reporting (thanks @thequilo)
  • Feature: added print_named_configs command
  • Feature: added option to add metadata to artifacts (thanks @jarnoRFB)
  • Feature: content type detection for artifacts (thanks @jarnoRFB)
  • Feature: automatic seeding for pytorch (thanks @srossi93)
  • Feature: add proxy support to telegram observer (thanks @brickerino)
  • Feature: made MongoObserver fail dump dir configurable (thanks @jarnoRFB)
  • Feature: added queue-based observer that better handles unreliable connections (thanks @jarnoRFB)
  • Bugfix: some fixes to stdout capturing
  • Bugfix: FileStorageObserver now creates directories only when starting a run (#329; thanks @thomasjpfan)
  • Bugfix: Fixed config_hooks (#326; thanks @thomasjpfan)
  • Bugfix: Fixed a crash when overwriting non-dict config entries with dicts (#325; thanks @thomasjpfan)
  • Bugfix: fixed problem with running in conda environment (#341)
  • Bugfix: numpy aware config change detection (#344)
  • Bugfix: allow dependencies to be compiled libraries (thanks @jnphilipp)
  • Bugfix: output colorization now works on 256 and 16 color terminals (thanks @bosr)
  • Bugfix: fixed problem with tinydb observer logging (#327; thanks @michalgregor)
  • Bugfix: ignore folders that have the same name as a named_config (thanks @boeddeker)
  • Bugfix: setup no longer overwrites pre-configured root logger (thanks @thequilo)
  • Bugfix: compatibility with tensorflow 2.0 (thanks @tarik, @gabrieldemarmiesse)
  • Bugfix: fixed exception when no tee is available for stdout capturing (thanks @greg-farquhar)
  • Bugfix: fixed concurrency issue with FileStorageObserver (thanks @dekuenstle)

0.7.4

5 years ago

Minor bugfix release that solves some issues with the interaction of ingredients and named configs.

  • Bugfix: fixed problem with postgres backend of SQLObserver (thanks @bensternlieb)
  • Bugfix: fixed a problem with the interaction of ingredients and named configs
  • Feature: added metrics logging to the FileStorageObserver (thanks @ummavi)

0.7.3

6 years ago

Major bugfix release that fixes several critical issues including: experiments that sometimes didn't exit, racing conditions in the FileStorage and MongoObservers and several stdout-capturing problems.

  • Feature: support custom experiment base directory (thanks @anibali)
  • Feature: added option to pass existing MongoClient to MongoObserver (thanks @rueberger)
  • Feature: allow setting the config docstring from named configs
  • Feature: added py-cpuinfo as fallback for gathering CPU information (thanks @serv-inc)
  • Feature: added support for _log argument in config function
  • Bugfix: stacktrace filtering now correctly handles chained exceptions (thanks @kamo-naoyuki)
  • Bugfix: resolved issue with stdout capturing sometimes loosing the last few lines
  • Bugfix: fixed the overwrite option of MongoObserver
  • Bugfix: fixed a problem with the heartbeat sometimes not ending
  • Bugfix: fixed an error with running in interactive mode
  • Bugfix: added a check for non-unique ingredient paths (thanks @boeddeker)
  • Bugfix: fixed several problems with UTF-8 decoding (thanks @LukasDrude, @wjp)
  • Bugfix: fixed nesting structure of _config (thanks @boeddeker)
  • Bugfix: fixed crash when using git integration with empty repository (thanks @ramon-oliveira)
  • Bugfix: fixed a crash with first run using sqlite backend
  • Bugfix: fixed several problem with the tests (thanks @thomasjpfan)
  • Bugfix: fixed racing condition in FileStorageObserver (thanks @boeddeker)
  • Bugfix: fixed problem with overwriting named configs of ingredients (thanks @pimdh)
  • Bugfix: removed deprecated call to inspect.getargspec()
  • Bugfix: fixed problem with empty dictionaries disappearing from config updates and named configs (thanks @TomVeniat)
  • Bugfix: fixed problem with commandline parsing when program name contained spaces
  • Bugfix: loglevel option is now taken into account for config related warnings
  • Bugfix: properly handle numpy types in metrics logging

0.7.2

6 years ago

Minor features release:

  • API Change: added host_info to queued_event
  • Feature: improved and configurable dependency discovery system
  • Feature: improved and configurable source-file discovery system
  • Feature: better error messages for missing or misspelled commands
  • Feature: -m flag now supports passing an id for a run to overwrite
  • Feature: allow captured functions to be called outside of a run (thanks @berleon)
  • Bugfix: fixed issue with telegram imports (thanks @millawell)

0.7.1

6 years ago

Bugfixes and improved Tensorflow support.

  • Refactor: lazy importing of many optional dependencies
  • Feature: added metrics API for adding live monitoring information to the MongoDB
  • Feature: added integration with tensorflow for automatic capturing of LogWriter paths
  • Feature: set seed of tensorflow if it is imported
  • Feature: named_configs can now affect the config of ingredients
  • Bugfix: failed runs now return with exit code 1 by default
  • Bugfix: fixed a problem with UTF-8 symbols in stdout
  • Bugfix: fixed a threading issue with the SQLObserver
  • Bugfix: fixed a problem with consecutive ids in the SQLObserver
  • Bugfix: heartbeat events now also serialize the intermediate results
  • Bugfix: reapeatedly calling run from python with an option for adding an observer, no longer duplicates observers
  • Bugfix: fixed a problem where **kwargs of captured functions might be modified
  • Bugfix: fixed an encoding problem with the FileStorageObserver
  • Bugfix: fixed an issue where determining the version of some packages would crash
  • Bugfix: fixed handling of relative filepaths in the SQLObserver and the TinyDBObserver