44"""
55import os
66import sys
7+ import warnings
78
89from .utils import trace
9- from .version import format_version
10+ from .version import format_version , meta , ScmVersion
1011from .discover import find_matching_entrypoint
1112
1213PRETEND_KEY = 'SETUPTOOLS_SCM_PRETEND_VERSION'
@@ -37,6 +38,7 @@ def _version_from_entrypoint(root, entrypoint):
3738
3839
3940def dump_version (root , version , write_to , template = None ):
41+ assert isinstance (version , string_types )
4042 if not write_to :
4143 return
4244 target = os .path .normpath (os .path .join (root , write_to ))
@@ -59,10 +61,21 @@ def dump_version(root, version, write_to, template=None):
5961def _do_parse (root , parse ):
6062 pretended = os .environ .get (PRETEND_KEY )
6163 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 )
6367
6468 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 (
6679 root , 'setuptools_scm.parse_scm_fallback' )
6780 else :
6881 # include fallbacks after dropping them from the main entrypoint
@@ -101,18 +114,17 @@ def get_version(root='.',
101114 root = os .path .abspath (root )
102115 trace ('root' , repr (root ))
103116
104- version = _do_parse (root , parse )
117+ parsed_version = _do_parse (root , parse )
105118
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 )
107124 dump_version (
108125 root = root ,
109- version = version ,
126+ version = version_string ,
110127 write_to = write_to ,
111128 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