Though this repo doesn't have traditional "releases", I do periodically add features and make breaking changes to the way advent, and my BaseSolution work. I handle the updates to my existing solutions, but if you periodically copy my helpers back into your repo, it will be helpful to know how far behind your version of this repo is.
Below is a rough changelog of new features added, which largely follows SemVer:
- Breaking changes will require you to update existing solutions to continue working
- Minor versions add new, backwards-compatible features you may want to start using
- Patch versions are internal functionality updates or changes to the template that won't affect compatibility with existing solutions
released 2024-11-30
- Update default input parsing in new solutions from
TextSolutiontoStrSplitSolution(so input is treated as a list of strings by default) - update ruff config
released 2024-08-17
⚠️ add additional lints- improve some typing in
base.py - add more
justfilescripts
released 2023-11-30
- improve error message when an
@answerassertion fails
released 2023-09-30
This repo is now a GitHub template! It's easier than ever to use it for your solutions. See the README for more info.
- add a placeholder for a utils folder
- add a justfile to simplify running commands. It's sparse for now but might have more in the future!
- add
input.txtto the.gitignore - tweak
.vscode/settingsto show your inputs - improve error messages for missing/empty files
- improve error messages for failed
@answerassertions - removed old migration file
The following changes are breaking updates from my existing solutions. If you're starting fresh, you can ignore them.
- ❗ remove
TSVas an input type - ❗ rename
BaseSolution.pptoBaseSolution.debugand simplify what it prints. Notably, it no longer looks for.pretty()methods and just prints each of its arguments - ❗ remove all my custom helpers; it's up to you now!
- ❗ rename
BaseSolution.debugto.is_debugging - ❗ remove the
BaseSolution.newlinefunction - it was undocumented and now exists as akwargonBaseSolution.debug - ❗ require Python
3.12. There were no code changes associated with change, but this serves as the official warning that3.12-specific additions may happen with no further breaking change notifications
Everything down here is historical. Unless you've been using my
released 2023-03-17
- fixed: only trim leading and trailing newlines, not all whitespace
released 2023-01-29
- fixed:
@answerassertion ignores check when function result isNone
released 2022-12-21
- fixed: argument error when running the profiler
released 2022-12-18
- added: the
--timeCLI flag, which will tell you how long your solutions took. More accurate than running at the shell level (see README). - improved: the
@slowdecorator won't block running sample input
released 2022-12-15
- fixed: mark some base class methods as
@final; won't break runtime code, but will throw typing errors if you're overwriting methods you shouldn't be
released 2022-12-13
- ❗ BREAKING: requires python@3.11.x to take advantage of some new typing features (see below)
- fixed: really nail the typing around the
@answerdecorator, which will require its arguments to match the return type of the wrapped function - fixed: remove some
typingimports and replaced with their generic containers (which is preferred since Py 3.9); adjusted template accordingly
released 2022-12-12
- added:
max_x_sizeandmax_y_sizetobase.neighbors - fixed: improved handling of non-tuple responses from
solve
released 2022-12-07
- fixed: further improved the typing around the
@answerto supporttupleresponses fromsolve
released 2022-12-06
- fixed: improved the typing around the
@answerdecorator to better support (rare) non-int answers
released 2022-12-04
- fixed: simplified answer parsing code by always calling
solution.solve()and having it default to calling parts 1 & 2 itself.
released 2022-12-01
- fixed: typing for the TSV input type
- fixed: simplify the input parsing internals
released 2022-11-30
- added: the
--versionflag toadvent - added: the
--test-dataflag toadvent;startnow creates this by default - fixed: the
startcommand now treats November 30th as part of the current puzzle year
released 2022-10-29
In the interest of not going too far back in time, this is the first version tracked in the changelog.
- BREAKING CHANGE: pad the folder names for days 1-9 with a leading 0 (e.g.
day_1/...->day_01/.... Runpython misc/pad_day_migration.pyfrom the repo root to update your local files. Only really tested on macOS, so proceed with a little caution. You'll also need to update any existing GitHub urls to use the padded day number.
All versions of this repo prior to 2022-10-28 are using what is henceforth known as the "1.0" version of this package. See 2.0 for migration information.