setuptools-git-versioning 1.13.5__tar.gz → 2.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (15) hide show
  1. {setuptools-git-versioning-1.13.5/setuptools_git_versioning.egg-info → setuptools-git-versioning-2.0.0}/PKG-INFO +14 -8
  2. {setuptools-git-versioning-1.13.5 → setuptools-git-versioning-2.0.0}/README.rst +9 -7
  3. {setuptools-git-versioning-1.13.5 → setuptools-git-versioning-2.0.0}/setup.py +3 -3
  4. {setuptools-git-versioning-1.13.5 → setuptools-git-versioning-2.0.0/setuptools_git_versioning.egg-info}/PKG-INFO +14 -8
  5. {setuptools-git-versioning-1.13.5 → setuptools-git-versioning-2.0.0}/setuptools_git_versioning.egg-info/entry_points.txt +1 -2
  6. {setuptools-git-versioning-1.13.5 → setuptools-git-versioning-2.0.0}/setuptools_git_versioning.py +47 -78
  7. {setuptools-git-versioning-1.13.5 → setuptools-git-versioning-2.0.0}/LICENSE +0 -0
  8. {setuptools-git-versioning-1.13.5 → setuptools-git-versioning-2.0.0}/MANIFEST.in +0 -0
  9. {setuptools-git-versioning-1.13.5 → setuptools-git-versioning-2.0.0}/requirements.txt +0 -0
  10. {setuptools-git-versioning-1.13.5 → setuptools-git-versioning-2.0.0}/setup.cfg +0 -0
  11. {setuptools-git-versioning-1.13.5 → setuptools-git-versioning-2.0.0}/setuptools_git_versioning.egg-info/SOURCES.txt +0 -0
  12. {setuptools-git-versioning-1.13.5 → setuptools-git-versioning-2.0.0}/setuptools_git_versioning.egg-info/dependency_links.txt +0 -0
  13. {setuptools-git-versioning-1.13.5 → setuptools-git-versioning-2.0.0}/setuptools_git_versioning.egg-info/not-zip-safe +0 -0
  14. {setuptools-git-versioning-1.13.5 → setuptools-git-versioning-2.0.0}/setuptools_git_versioning.egg-info/requires.txt +0 -0
  15. {setuptools-git-versioning-1.13.5 → setuptools-git-versioning-2.0.0}/setuptools_git_versioning.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: setuptools-git-versioning
3
- Version: 1.13.5
3
+ Version: 2.0.0
4
4
  Summary: Use git repo data for building a version number according PEP-440
5
5
  Home-page: https://setuptools-git-versioning.readthedocs.io
6
6
  Author: dolfinus
@@ -20,11 +20,15 @@ Classifier: Programming Language :: Python :: 3.8
20
20
  Classifier: Programming Language :: Python :: 3.9
21
21
  Classifier: Programming Language :: Python :: 3.10
22
22
  Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Programming Language :: Python :: 3.12
23
24
  Classifier: License :: OSI Approved :: MIT License
24
25
  Classifier: Operating System :: OS Independent
25
26
  Requires-Python: >=3.7
26
27
  Description-Content-Type: text/x-rst
27
28
  License-File: LICENSE
29
+ Requires-Dist: packaging
30
+ Requires-Dist: setuptools
31
+ Requires-Dist: toml>=0.10.2; python_version < "3.11"
28
32
 
29
33
  *************************
30
34
  setuptools-git-versioning
@@ -68,14 +72,16 @@ version number according :pep:`440`.
68
72
 
69
73
  - Well-documented
70
74
 
71
- See `difference <https://setuptools-git-versioning.readthedocs.io/en/latest/differences.html>`_
75
+ See `comparison <https://setuptools-git-versioning.readthedocs.io/en/stable/comparison.html>`_
72
76
  between ``setuptools-git-versioning`` and other tools.
73
77
 
74
78
  **Limitations:**
75
79
 
76
80
  - Currently the only supported VCS is *Git*
77
81
 
78
- - Only git v2 is supported
82
+ - Only Git v2 is supported
83
+
84
+ - Only Setuptools build backend is supported (no Poetry & others)
79
85
 
80
86
  - Currently does not support automatic exporting of package version to a file for runtime use
81
87
  (but you can use ``setuptools-git-versioning > file`` redirect instead)
@@ -109,7 +115,7 @@ add a section ``tool.setuptools-git-versioning`` with config options, and mark t
109
115
  .. code:: toml
110
116
 
111
117
  [build-system]
112
- requires = [ "setuptools>=41", "wheel", "setuptools-git-versioning<2", ]
118
+ requires = [ "setuptools>=41", "wheel", "setuptools-git-versioning>=2.0,<3", ]
113
119
  build-backend = "setuptools.build_meta"
114
120
 
115
121
  [tool.setuptools-git-versioning]
@@ -118,7 +124,7 @@ add a section ``tool.setuptools-git-versioning`` with config options, and mark t
118
124
  [project]
119
125
  dynamic = ["version"]
120
126
 
121
- And check the package version generated (see `command help <https://setuptools-git-versioning.readthedocs.io/en/stable/command.html>`__):
127
+ And check the package version generated (see `command help <https://setuptools-git-versioning.readthedocs.io/en/stable/command.html>`_):
122
128
 
123
129
  .. code:: bash
124
130
 
@@ -131,7 +137,7 @@ And check the package version generated (see `command help <https://setuptools-g
131
137
  0.0.1
132
138
 
133
139
  ``setup.py``
134
- ~~~~~~~~~~~~~~
140
+ ~~~~~~~~~~~~
135
141
 
136
142
  Just add ``setuptools-git-versioning`` to ``setup_requires`` argument of ``setuptools.setup`` function call,
137
143
  and then add new argument ``setuptools_git_versioning`` with config options:
@@ -145,10 +151,10 @@ and then add new argument ``setuptools_git_versioning`` with config options:
145
151
  setuptools_git_versioning={
146
152
  "enabled": True,
147
153
  },
148
- setup_requires=["setuptools-git-versioning<2"],
154
+ setup_requires=["setuptools-git-versioning>=2.0,<3"],
149
155
  )
150
156
 
151
- And check the package version generated (see `command help <https://setuptools-git-versioning.readthedocs.io/en/stable/command.html>`__):
157
+ And check the package version generated (see `command help <https://setuptools-git-versioning.readthedocs.io/en/stable/command.html>`_):
152
158
 
153
159
  .. code:: bash
154
160
 
@@ -40,14 +40,16 @@ version number according :pep:`440`.
40
40
 
41
41
  - Well-documented
42
42
 
43
- See `difference <https://setuptools-git-versioning.readthedocs.io/en/latest/differences.html>`_
43
+ See `comparison <https://setuptools-git-versioning.readthedocs.io/en/stable/comparison.html>`_
44
44
  between ``setuptools-git-versioning`` and other tools.
45
45
 
46
46
  **Limitations:**
47
47
 
48
48
  - Currently the only supported VCS is *Git*
49
49
 
50
- - Only git v2 is supported
50
+ - Only Git v2 is supported
51
+
52
+ - Only Setuptools build backend is supported (no Poetry & others)
51
53
 
52
54
  - Currently does not support automatic exporting of package version to a file for runtime use
53
55
  (but you can use ``setuptools-git-versioning > file`` redirect instead)
@@ -81,7 +83,7 @@ add a section ``tool.setuptools-git-versioning`` with config options, and mark t
81
83
  .. code:: toml
82
84
 
83
85
  [build-system]
84
- requires = [ "setuptools>=41", "wheel", "setuptools-git-versioning<2", ]
86
+ requires = [ "setuptools>=41", "wheel", "setuptools-git-versioning>=2.0,<3", ]
85
87
  build-backend = "setuptools.build_meta"
86
88
 
87
89
  [tool.setuptools-git-versioning]
@@ -90,7 +92,7 @@ add a section ``tool.setuptools-git-versioning`` with config options, and mark t
90
92
  [project]
91
93
  dynamic = ["version"]
92
94
 
93
- And check the package version generated (see `command help <https://setuptools-git-versioning.readthedocs.io/en/stable/command.html>`__):
95
+ And check the package version generated (see `command help <https://setuptools-git-versioning.readthedocs.io/en/stable/command.html>`_):
94
96
 
95
97
  .. code:: bash
96
98
 
@@ -103,7 +105,7 @@ And check the package version generated (see `command help <https://setuptools-g
103
105
  0.0.1
104
106
 
105
107
  ``setup.py``
106
- ~~~~~~~~~~~~~~
108
+ ~~~~~~~~~~~~
107
109
 
108
110
  Just add ``setuptools-git-versioning`` to ``setup_requires`` argument of ``setuptools.setup`` function call,
109
111
  and then add new argument ``setuptools_git_versioning`` with config options:
@@ -117,10 +119,10 @@ and then add new argument ``setuptools_git_versioning`` with config options:
117
119
  setuptools_git_versioning={
118
120
  "enabled": True,
119
121
  },
120
- setup_requires=["setuptools-git-versioning<2"],
122
+ setup_requires=["setuptools-git-versioning>=2.0,<3"],
121
123
  )
122
124
 
123
- And check the package version generated (see `command help <https://setuptools-git-versioning.readthedocs.io/en/stable/command.html>`__):
125
+ And check the package version generated (see `command help <https://setuptools-git-versioning.readthedocs.io/en/stable/command.html>`_):
124
126
 
125
127
  .. code:: bash
126
128
 
@@ -19,7 +19,7 @@ setup(
19
19
  name="setuptools-git-versioning",
20
20
  # +local version is not allowed in PyPI
21
21
  # https://github.com/pypa/pypi-legacy/issues/731#issuecomment-345461596
22
- version='1.13.5',
22
+ version='2.0.0',
23
23
  author="dolfinus",
24
24
  author_email="martinov.m.s.8@gmail.com",
25
25
  description="Use git repo data for building a version number according PEP-440",
@@ -38,6 +38,7 @@ setup(
38
38
  "Programming Language :: Python :: 3.9",
39
39
  "Programming Language :: Python :: 3.10",
40
40
  "Programming Language :: Python :: 3.11",
41
+ "Programming Language :: Python :: 3.12",
41
42
  "License :: OSI Approved :: MIT License",
42
43
  "Operating System :: OS Independent",
43
44
  ],
@@ -54,8 +55,7 @@ setup(
54
55
  setup_requires=requirements,
55
56
  entry_points={
56
57
  "distutils.setup_keywords": [
57
- "version_config = setuptools_git_versioning:_parse_config",
58
- "setuptools_git_versioning = setuptools_git_versioning:_parse_config",
58
+ "setuptools_git_versioning = setuptools_git_versioning:parse_config",
59
59
  ],
60
60
  "setuptools.finalize_distribution_options": [
61
61
  "setuptools_git_versioning = setuptools_git_versioning:infer_version",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: setuptools-git-versioning
3
- Version: 1.13.5
3
+ Version: 2.0.0
4
4
  Summary: Use git repo data for building a version number according PEP-440
5
5
  Home-page: https://setuptools-git-versioning.readthedocs.io
6
6
  Author: dolfinus
@@ -20,11 +20,15 @@ Classifier: Programming Language :: Python :: 3.8
20
20
  Classifier: Programming Language :: Python :: 3.9
21
21
  Classifier: Programming Language :: Python :: 3.10
22
22
  Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Programming Language :: Python :: 3.12
23
24
  Classifier: License :: OSI Approved :: MIT License
24
25
  Classifier: Operating System :: OS Independent
25
26
  Requires-Python: >=3.7
26
27
  Description-Content-Type: text/x-rst
27
28
  License-File: LICENSE
29
+ Requires-Dist: packaging
30
+ Requires-Dist: setuptools
31
+ Requires-Dist: toml>=0.10.2; python_version < "3.11"
28
32
 
29
33
  *************************
30
34
  setuptools-git-versioning
@@ -68,14 +72,16 @@ version number according :pep:`440`.
68
72
 
69
73
  - Well-documented
70
74
 
71
- See `difference <https://setuptools-git-versioning.readthedocs.io/en/latest/differences.html>`_
75
+ See `comparison <https://setuptools-git-versioning.readthedocs.io/en/stable/comparison.html>`_
72
76
  between ``setuptools-git-versioning`` and other tools.
73
77
 
74
78
  **Limitations:**
75
79
 
76
80
  - Currently the only supported VCS is *Git*
77
81
 
78
- - Only git v2 is supported
82
+ - Only Git v2 is supported
83
+
84
+ - Only Setuptools build backend is supported (no Poetry & others)
79
85
 
80
86
  - Currently does not support automatic exporting of package version to a file for runtime use
81
87
  (but you can use ``setuptools-git-versioning > file`` redirect instead)
@@ -109,7 +115,7 @@ add a section ``tool.setuptools-git-versioning`` with config options, and mark t
109
115
  .. code:: toml
110
116
 
111
117
  [build-system]
112
- requires = [ "setuptools>=41", "wheel", "setuptools-git-versioning<2", ]
118
+ requires = [ "setuptools>=41", "wheel", "setuptools-git-versioning>=2.0,<3", ]
113
119
  build-backend = "setuptools.build_meta"
114
120
 
115
121
  [tool.setuptools-git-versioning]
@@ -118,7 +124,7 @@ add a section ``tool.setuptools-git-versioning`` with config options, and mark t
118
124
  [project]
119
125
  dynamic = ["version"]
120
126
 
121
- And check the package version generated (see `command help <https://setuptools-git-versioning.readthedocs.io/en/stable/command.html>`__):
127
+ And check the package version generated (see `command help <https://setuptools-git-versioning.readthedocs.io/en/stable/command.html>`_):
122
128
 
123
129
  .. code:: bash
124
130
 
@@ -131,7 +137,7 @@ And check the package version generated (see `command help <https://setuptools-g
131
137
  0.0.1
132
138
 
133
139
  ``setup.py``
134
- ~~~~~~~~~~~~~~
140
+ ~~~~~~~~~~~~
135
141
 
136
142
  Just add ``setuptools-git-versioning`` to ``setup_requires`` argument of ``setuptools.setup`` function call,
137
143
  and then add new argument ``setuptools_git_versioning`` with config options:
@@ -145,10 +151,10 @@ and then add new argument ``setuptools_git_versioning`` with config options:
145
151
  setuptools_git_versioning={
146
152
  "enabled": True,
147
153
  },
148
- setup_requires=["setuptools-git-versioning<2"],
154
+ setup_requires=["setuptools-git-versioning>=2.0,<3"],
149
155
  )
150
156
 
151
- And check the package version generated (see `command help <https://setuptools-git-versioning.readthedocs.io/en/stable/command.html>`__):
157
+ And check the package version generated (see `command help <https://setuptools-git-versioning.readthedocs.io/en/stable/command.html>`_):
152
158
 
153
159
  .. code:: bash
154
160
 
@@ -2,8 +2,7 @@
2
2
  setuptools-git-versioning = setuptools_git_versioning:__main__
3
3
 
4
4
  [distutils.setup_keywords]
5
- setuptools_git_versioning = setuptools_git_versioning:_parse_config
6
- version_config = setuptools_git_versioning:_parse_config
5
+ setuptools_git_versioning = setuptools_git_versioning:parse_config
7
6
 
8
7
  [setuptools.finalize_distribution_options]
9
8
  setuptools_git_versioning = setuptools_git_versioning:infer_version
@@ -9,7 +9,6 @@ import re
9
9
  import subprocess # nosec
10
10
  import sys
11
11
  import textwrap
12
- import warnings
13
12
  from datetime import datetime
14
13
  from pathlib import Path
15
14
  from pprint import pformat
@@ -104,18 +103,6 @@ def get_all_tags(sort_by: str = DEFAULT_SORT_BY, root: str | os.PathLike | None
104
103
  return []
105
104
 
106
105
 
107
- def get_branch_tags(*args, **kwargs) -> list[str]:
108
- warnings.warn(
109
- "`get_branch_tags` function is deprecated "
110
- "since setuptools-git-versioning v1.8.0 "
111
- "and will be dropped in v2.0.0\n"
112
- "Please use `get_tags` instead",
113
- category=UserWarning,
114
- )
115
-
116
- return get_tags(*args, **kwargs)
117
-
118
-
119
106
  def get_tags(
120
107
  sort_by: str = DEFAULT_SORT_BY,
121
108
  filter_callback: Callable[[str], str | None] | None = None,
@@ -188,7 +175,7 @@ def _read_toml(name_or_path: str | os.PathLike = "pyproject.toml", root: str | o
188
175
 
189
176
  log.log(INFO, "Trying 'pyproject.toml' ...")
190
177
  try:
191
- # for Python 3.11
178
+ # for Python 3.11+
192
179
  import tomllib
193
180
 
194
181
  with file_path.open("rb") as file:
@@ -232,24 +219,9 @@ def _infer_setup_py(name_or_path: str = "setup.py", root: str | os.PathLike | No
232
219
  os.chdir(original_cwd)
233
220
 
234
221
 
235
- # TODO: remove along with version_config
236
- def _parse_config(dist: Distribution, attr: Any, value: Any) -> None:
237
- from distutils.errors import DistutilsOptionError
238
-
239
- if attr == "version_config" and value is not None:
240
- warnings.warn(
241
- "'version_config' option is deprecated "
242
- "since setuptools-git-versioning v1.8.0 "
243
- "and will be dropped in v2.0.0\n"
244
- "Please rename it to 'setuptools_git_versioning'",
245
- category=UserWarning,
246
- )
247
-
248
- if getattr(dist, "setuptools_git_versioning", None) is not None:
249
- raise DistutilsOptionError(
250
- "You can set either 'version_config' or 'setuptools_git_versioning' "
251
- "but not both of them at the same time"
252
- )
222
+ def parse_config(dist: Distribution, attr: Any, value: Any) -> None:
223
+ "Dummy function used only to register in distutils"
224
+ return None
253
225
 
254
226
 
255
227
  def infer_version(dist: Distribution, root: str | os.PathLike | None = None) -> str | None:
@@ -257,18 +229,7 @@ def infer_version(dist: Distribution, root: str | os.PathLike | None = None) ->
257
229
 
258
230
  from distutils.errors import DistutilsOptionError, DistutilsSetupError
259
231
 
260
- config = getattr(dist, "setuptools_git_versioning", None) or getattr(dist, "version_config", None)
261
-
262
- if isinstance(config, bool):
263
- warnings.warn(
264
- "Passing boolean value to 'version_config'/'setuptools_git_versioning' option is deprecated "
265
- "since setuptools-git-versioning 1.8.0 "
266
- "and will be dropped in v2.0.0\n"
267
- "Please change value to '{'enabled': False/True}'",
268
- category=UserWarning,
269
- )
270
- config = {"enabled": config}
271
-
232
+ config = getattr(dist, "setuptools_git_versioning", None)
272
233
  toml_config = _read_toml(root=root)
273
234
 
274
235
  if config is None:
@@ -450,12 +411,12 @@ def _callable_factory(
450
411
  try:
451
412
  return _load_callable(regexp_or_ref, package_name, root=root)
452
413
  except (ImportError, NameError) as e:
453
- log.warning("%s is not a valid function reference: %s", callable_name, e)
414
+ log.log(DEBUG, "%s is not a valid function reference: %s", callable_name, e)
454
415
 
455
416
  try:
456
417
  return callable_factory(regexp_or_ref)
457
418
  except re.error as e:
458
- log.error("%s is not valid regexp: %s", callable_name, e)
419
+ log.error("%s is not valid regexp neither a valid function reference: %s", callable_name, e)
459
420
  raise ValueError(f"Cannot parse {callable_name}") from e
460
421
 
461
422
 
@@ -545,6 +506,9 @@ def version_from_git(
545
506
  )
546
507
  return _get_version_from_callback(version_callback, package_name, root=root)
547
508
 
509
+ head_sha = get_sha(root=root)
510
+ log.log(INFO, "HEAD SHA-256: %r", head_sha)
511
+
548
512
  filter_callback = None
549
513
  if tag_filter:
550
514
  filter_callback = _callable_factory(
@@ -555,16 +519,22 @@ def version_from_git(
555
519
  root=root,
556
520
  )
557
521
 
558
- from_file = False
559
522
  log.log(INFO, "Getting latest tag")
560
523
  log.log(DEBUG, "Sorting tags by %r", sort_by)
561
524
  tag = get_tag(sort_by=sort_by, root=root, filter_callback=filter_callback)
525
+ if not tag:
526
+ log.log(INFO, "No tags found")
527
+ tag_sha = None
528
+ on_tag = False
529
+ else:
530
+ tag_sha = get_sha(tag, root=root)
531
+ log.log(INFO, "Tag SHA-256: %r", tag_sha)
532
+
533
+ on_tag = head_sha is not None and head_sha == tag_sha
534
+ log.log(INFO, "HEAD is tagged: %r", on_tag)
562
535
 
563
- if tag is None:
564
- log.log(INFO, "No tag, checking for 'version_file'")
565
- if version_file is None:
566
- log.log(INFO, "No 'version_file' set, return starting_version %r", starting_version)
567
- return _sanitize_version(starting_version)
536
+ if version_file:
537
+ log.log(INFO, "Checking for 'version_file'")
568
538
 
569
539
  if not Path(version_file).exists():
570
540
  log.log(
@@ -573,26 +543,30 @@ def version_from_git(
573
543
  version_file,
574
544
  starting_version,
575
545
  )
576
- return _sanitize_version(starting_version)
546
+ tag = None
547
+ else:
548
+ log.log(INFO, "Reading version_file '%s' content", version_file)
549
+ tag = _read_version_from_file(version_file, root=root) or None
550
+
551
+ if not tag:
552
+ log.log(INFO, "File %r is empty", version_file)
553
+ else:
554
+ log.log(DEBUG, "File content: %r", tag)
555
+ if not count_commits_from_version_file:
556
+ return _sanitize_version(tag)
577
557
 
578
- log.log(INFO, "version_file '%s' does exist, reading its content", version_file)
579
- from_file = True
580
- tag = _read_version_from_file(version_file, root=root)
558
+ file_sha = get_latest_file_commit(version_file, root=root)
559
+ log.log(DEBUG, "File SHA-256: %r", file_sha)
581
560
 
582
- if not tag:
583
- log.log(INFO, "File is empty, return starting_version %r", version_file, starting_version)
584
- return _sanitize_version(starting_version)
561
+ ccount = count_since(file_sha, root=root) if file_sha is not None else None
562
+ log.log(INFO, "Commits count between HEAD and last version file change: %r", ccount)
585
563
 
586
- log.log(DEBUG, "File content: %r", tag)
587
- if not count_commits_from_version_file:
588
- return _sanitize_version(tag)
564
+ elif not head_sha:
565
+ log.log(INFO, "Not a git repo, or repo without any branch")
589
566
 
590
- tag_sha = get_latest_file_commit(version_file, root=root)
591
- log.log(DEBUG, "File SHA-256: %r", tag_sha)
592
- else:
593
- log.log(INFO, "Latest tag: %r", tag)
594
- tag_sha = get_sha(tag, root=root)
595
- log.log(INFO, "Tag SHA-256: %r", tag_sha)
567
+ elif tag_sha:
568
+ ccount = count_since(tag_sha, root=root)
569
+ log.log(INFO, "Commits count between HEAD and last tag: %r", ccount)
596
570
 
597
571
  if tag_formatter is not None:
598
572
  tag_format_callback = _callable_factory(
@@ -606,19 +580,13 @@ def version_from_git(
606
580
  tag = tag_format_callback(tag)
607
581
  log.log(DEBUG, "Tag after formatting: %r", tag)
608
582
 
583
+ if not tag:
584
+ log.log(INFO, "No source for version, return starting_version %r", starting_version)
585
+ return _sanitize_version(starting_version)
586
+
609
587
  dirty = is_dirty(root=root)
610
588
  log.log(INFO, "Is dirty: %r", dirty)
611
589
 
612
- head_sha = get_sha(root=root)
613
- log.log(INFO, "HEAD SHA-256: %r", head_sha)
614
-
615
- full_sha = head_sha if head_sha is not None else ""
616
- ccount = count_since(tag_sha, root=root) if tag_sha is not None else None
617
- log.log(INFO, "Commits count between HEAD and latest tag: %r", ccount)
618
-
619
- on_tag = head_sha is not None and head_sha == tag_sha and not from_file
620
- log.log(INFO, "HEAD is tagged: %r", on_tag)
621
-
622
590
  branch = get_branch(root=root)
623
591
  log.log(INFO, "Current branch: %r", branch)
624
592
 
@@ -644,6 +612,7 @@ def version_from_git(
644
612
  log.log(INFO, "Using template from 'template' option")
645
613
  t = template
646
614
 
615
+ full_sha = head_sha if head_sha is not None else ""
647
616
  version = _resolve_substitutions(t, sha=full_sha[:8], tag=tag, ccount=ccount, branch=branch, full_sha=full_sha)
648
617
  log.log(INFO, "Version number after resolving substitutions: %r", version)
649
618
  return _sanitize_version(version)