examples icon indicating copy to clipboard operation
examples copied to clipboard

Fix to version numbering so that it is in accordance with PEP 404

Open eduardoscsouza opened this issue 2 years ago • 3 comments
trafficstars

Recently I tried installing this repo through pip, and it failed with the following message:

raise InvalidVersion(f"Invalid version: '{version}'")
pkg_resources.extern.packaging.version.InvalidVersion: Invalid version: 'b4eb09b4a3d167557d999723f7c2ed0d53a1bb7d-'

After some googling, I found that this is by design:

  • https://github.com/pypa/setuptools/issues/2497
  • https://github.com/pypa/setuptools/issues/3772

Apparently, Setuptools only supports version numbering in accordance with PEP 404 from version 66 onwards. So I created a fork of this repo, changing the version numbering scheme so that it can be installed through pip.

The idea is essentially the same as it is currently, with only some minor modifications. Currently, the version number is simply the hash of the most recent commit, so there isn't any pattern or sequence to be worried about. PEP 404 required the version number to be in base 10, so I changed the base 16 representation of the commit hash to base 10. By keeping the commit hash, the commit can still be retrieved through the version number. I also prepended the commit's timestamp, so that the more recent commits have higher version numbering.

eduardoscsouza avatar May 05 '23 21:05 eduardoscsouza

Is anything else needed for this PR to be merged?

eduardoscsouza avatar May 12 '23 19:05 eduardoscsouza

Is anything else needed for this PR to be merged?

It looks like this hasn't auto-merged because it's failing an internal lint check (lines are too long). I tried to update the PR but your branch is locked.

This is what I was trying to push:

$ git diff HEAD^
diff --git a/setup.py b/setup.py
index ba7cedde..3372dd02 100644
--- a/setup.py
+++ b/setup.py
@@ -35,9 +35,18 @@ project_name = 'tensorflow-examples'
 # The timestamp is used so that newer commits have a higher version number
 # The hash is used so that the specific commit can be identified
 # The hash integer can be converted back to the hash string with: '%032x' % commit_hash_int
-commit_hash_int = int(subprocess.check_output(['git', 'rev-parse', 'HEAD']).decode('utf-8').strip(), 16)
-commit_timestamp = subprocess.check_output(['git', 'show', '-s', '--format=%ct', 'HEAD']).decode('utf-8').strip()
-version = f"0.{commit_timestamp}.{commit_hash_int}"
+commit_hash_int = int(
+    subprocess.check_output(['git', 'rev-parse', 'HEAD'])
+    .decode('utf-8')
+    .strip(),
+    16,
+)
+commit_timestamp = (
+    subprocess.check_output(['git', 'show', '-s', '--format=%ct', 'HEAD'])
+    .decode('utf-8')
+    .strip()
+)
+version = f'0.{commit_timestamp}.{commit_hash_int}'
 
 if nightly:
   project_name = 'tensorflow-examples-nightly'

in non-diff format, that's

commit_hash_int = int(
    subprocess.check_output(['git', 'rev-parse', 'HEAD'])
    .decode('utf-8')
    .strip(),
    16,
)
commit_timestamp = (
    subprocess.check_output(['git', 'show', '-s', '--format=%ct', 'HEAD'])
    .decode('utf-8')
    .strip()
)
version = f'0.{commit_timestamp}.{commit_hash_int}'

markmcd avatar May 15 '23 07:05 markmcd

Thanks Mark. I'll fix it in the merge.

MarkDaoust avatar May 15 '23 16:05 MarkDaoust