def update_from_pypi(self):
     """Call get_latest_version and then save the object."""
     info  = self.get_info()
     self.licence = package_licence(info)
     self.latest_version = package_version(info)
     self.diff_status = version_diff(self.current_version, self.latest_version)
     self.checked_pypi_at = tz_now()
     self.save()
     return self
    def test_version_diff(self):
        self.assertEqual(version_diff(None, None), 'unknown')
        self.assertEqual(version_diff(None, self.v_0_0_1), 'unknown')
        self.assertEqual(version_diff(self.v_0_0_1, None), 'unknown')
        self.assertEqual(version_diff(self.v_0_0_1, self.v_0_1_0), 'minor')

        self.assertEqual(version_diff(self.v_0_0_1, self.v_0_0_1), 'none')
        self.assertEqual(version_diff(self.v_0_0_1, self.v_0_0_2), 'patch')
        self.assertEqual(version_diff(self.v_0_0_1, self.v_0_1_0), 'minor')
        self.assertEqual(version_diff(self.v_0_0_1, self.v_1_0_0), 'major')

        self.assertEqual(version_diff(self.v_0_0_2, self.v_0_0_1), 'patch')
        self.assertEqual(version_diff(self.v_0_0_2, self.v_0_0_2), 'none')
        self.assertEqual(version_diff(self.v_0_0_2, self.v_0_1_0), 'minor')
        self.assertEqual(version_diff(self.v_0_0_2, self.v_1_0_0), 'major')

        self.assertEqual(version_diff(self.v_0_1_0, self.v_0_0_1), 'minor')
        self.assertEqual(version_diff(self.v_0_1_0, self.v_0_0_2), 'minor')
        self.assertEqual(version_diff(self.v_0_1_0, self.v_0_1_0), 'none')
        self.assertEqual(version_diff(self.v_0_1_0, self.v_1_0_0), 'major')

        self.assertEqual(version_diff(self.v_1_0_0, self.v_0_0_1), 'major')
        self.assertEqual(version_diff(self.v_1_0_0, self.v_0_0_2), 'major')
        self.assertEqual(version_diff(self.v_1_0_0, self.v_0_1_0), 'major')
        self.assertEqual(version_diff(self.v_1_0_0, self.v_1_0_0), 'none')

        self.assertEqual(version_diff(self.v_1_0_0, self.v_other), 'other')