Skip to content

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

Description

@allerter

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions