Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Album.release_date should be a datetime object, not Album.release_date_components #207

Open
allerter opened this issue Apr 25, 2021 · 0 comments

Comments

@allerter
Copy link
Contributor

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:

  1. 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!
  2. 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.
  3. 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:

def __init__(self, client, json_dict, tracks):
    body = json_dict
    ...
    self.release_date = convert_to_datetime(body["release_date_components"])
    self.release_date_components = body['release_date_components']
    ...

This will be a breaking change and we should hold off on changing Album.release_date_components till v4.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant