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 2023-11-30
- improve error message when an
@answer
assertion 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.txt
to the.gitignore
- tweak
.vscode/settings
to show your inputs - improve error messages for missing/empty files
- improve error messages for failed
@answer
assertions - removed old migration file
The following changes are breaking updates from my existing solutions. If you're starting fresh, you can ignore them.
- ❗ remove
TSV
as an input type - ❗ rename
BaseSolution.pp
toBaseSolution.debug
and 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.debug
to.is_debugging
- ❗ remove the
BaseSolution.newline
function - it was undocumented and now exists as akwarg
onBaseSolution.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:
@answer
assertion ignores check when function result isNone
released 2022-12-21
- fixed: argument error when running the profiler
released 2022-12-18
- added: the
--time
CLI flag, which will tell you how long your solutions took. More accurate than running at the shell level (see README). - improved: the
@slow
decorator 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
@answer
decorator, which will require its arguments to match the return type of the wrapped function - fixed: remove some
typing
imports and replaced with their generic containers (which is preferred since Py 3.9); adjusted template accordingly
released 2022-12-12
- added:
max_x_size
andmax_y_size
tobase.neighbors
- fixed: improved handling of non-tuple responses from
solve
released 2022-12-07
- fixed: further improved the typing around the
@answer
to supporttuple
responses fromsolve
released 2022-12-06
- fixed: improved the typing around the
@answer
decorator 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
--version
flag toadvent
- added: the
--test-data
flag toadvent
;start
now creates this by default - fixed: the
start
command 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.py
from 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.