4
4
"""
5
5
import os
6
6
import sys
7
+ import warnings
7
8
8
9
from .utils import trace
9
- from .version import format_version
10
+ from .version import format_version , meta , ScmVersion
10
11
from .discover import find_matching_entrypoint
11
12
12
13
PRETEND_KEY = 'SETUPTOOLS_SCM_PRETEND_VERSION'
@@ -37,6 +38,7 @@ def _version_from_entrypoint(root, entrypoint):
37
38
38
39
39
40
def dump_version (root , version , write_to , template = None ):
41
+ assert isinstance (version , string_types )
40
42
if not write_to :
41
43
return
42
44
target = os .path .normpath (os .path .join (root , write_to ))
@@ -59,10 +61,21 @@ def dump_version(root, version, write_to, template=None):
59
61
def _do_parse (root , parse ):
60
62
pretended = os .environ .get (PRETEND_KEY )
61
63
if pretended :
62
- return pretended
64
+ # we use meta here since the pretended version
65
+ # must adhere to the pep to begin with
66
+ return meta (pretended )
63
67
64
68
if parse :
65
- version = parse (root ) or _version_from_entrypoint (
69
+ parse_result = parse (root )
70
+ if isinstance (parse_result , string_types ):
71
+ warnings .warn (
72
+ "version parse result was a string\n "
73
+ "please return a parsed version" ,
74
+ category = DeprecationWarning )
75
+ # we use ScmVersion here in order to keep legacy code working
76
+ # for 2.0 we should use meta
77
+ parse_result = ScmVersion (parse_result )
78
+ version = parse_result or _version_from_entrypoint (
66
79
root , 'setuptools_scm.parse_scm_fallback' )
67
80
else :
68
81
# include fallbacks after dropping them from the main entrypoint
@@ -101,18 +114,17 @@ def get_version(root='.',
101
114
root = os .path .abspath (root )
102
115
trace ('root' , repr (root ))
103
116
104
- version = _do_parse (root , parse )
117
+ parsed_version = _do_parse (root , parse )
105
118
106
- if version :
119
+ if parsed_version :
120
+ version_string = format_version (
121
+ parsed_version ,
122
+ version_scheme = version_scheme ,
123
+ local_scheme = local_scheme )
107
124
dump_version (
108
125
root = root ,
109
- version = version ,
126
+ version = version_string ,
110
127
write_to = write_to ,
111
128
template = write_to_template )
112
- if isinstance (version , string_types ):
113
- return version
114
- version = format_version (
115
- version ,
116
- version_scheme = version_scheme ,
117
- local_scheme = local_scheme )
118
- return version
129
+
130
+ return version_string
0 commit comments