This occurred to me when I first saw #182.
Looking at the Album attributes got me thinking. The album dict already has a release_date key alongside the release_date_components. I don't know why I chose to use release_date_components instead because release_date is just what we need for converting the release date to a datetime type. We should've used release_date for three reasons:
release_date_components has the accurate date; if the release date has no month or day, its value will just be None. But that's not the case for release_date. The release_date value will display what it has and replaces what it doesn't with 01, just how Python does in datetime objects!
We should convert release_date to datetime to offer a convenient way for accessing the date. And we should keep release_date_compnents as it is for users who want an accurate date.
Converting release_date to datetime is easy; it's either None or a string with the %Y-%m-%d format.
To sum up, this is how we should've created Album objects:
This occurred to me when I first saw #182. Looking at the
Album
attributes got me thinking. The album dict already has arelease_date
key alongside therelease_date_components
. I don't know why I chose to userelease_date_components
instead becauserelease_date
is just what we need for converting the release date to a datetime type. We should've usedrelease_date
for three reasons:release_date_components
has the accurate date; if the release date has no month or day, its value will just be None. But that's not the case forrelease_date
. Therelease_date
value will display what it has and replaces what it doesn't with01
, just how Python does in datetime objects!release_date
to datetime to offer a convenient way for accessing the date. And we should keeprelease_date_compnents
as it is for users who want an accurate date.release_date
to datetime is easy; it's eitherNone
or a string with the%Y-%m-%d
format.To sum up, this is how we should've created
Album
objects:This will be a breaking change and we should hold off on changing
Album.release_date_components
till v4.