|
4 | 4 |
|
5 | 5 | importos |
6 | 6 | importplatform |
7 | | -importsys |
| 7 | +importre |
8 | 8 | importsubprocess |
| 9 | +importsys |
9 | 10 |
|
10 | 11 | fromdistutils.command.buildimportbuild |
11 | 12 | fromsetuptoolsimportsetup |
|
34 | 35 |
|
35 | 36 |
|
36 | 37 | # version handling |
| 38 | + |
| 39 | + |
| 40 | +defgit_describe_to_python_version(version): |
| 41 | +"""Convert output from git describe to PEP 440 conforming versions.""" |
| 42 | + |
| 43 | +version_info=version.split('-') |
| 44 | +iflen(version_info)<2: |
| 45 | +return'unknown' |
| 46 | + |
| 47 | +# we always have $version-$release |
| 48 | +release_type=version_info[1] |
| 49 | + |
| 50 | +version_data= { |
| 51 | +'version':version_info[0], |
| 52 | +'release_type':release_type, |
| 53 | + } |
| 54 | +iflen(version_info)==4: |
| 55 | +version_data['commits']=version_info[2] |
| 56 | +else: |
| 57 | +version_data['commits']=0 |
| 58 | + |
| 59 | +ifrelease_type=='release': |
| 60 | +iflen(version_info)==2: |
| 61 | +# format: $version-release |
| 62 | +# This is the case at time of the release. |
| 63 | +fmt='{version}' |
| 64 | +eliflen(version_info)==4: |
| 65 | +# format: $version-release-$commits-$hash |
| 66 | +# This is the case after a release. |
| 67 | +fmt='{version}-{commits}' |
| 68 | +elifrelease_type=='dev': |
| 69 | +# format: $version-dev-$commits-$hash or $version-dev |
| 70 | +fmt='{version}.dev{commits}' |
| 71 | +else: |
| 72 | +match=re.match(r'^(alpha|beta|rc)(\d*)$',release_type) |
| 73 | +ifmatchisNone: |
| 74 | +return'unknown' |
| 75 | + |
| 76 | +iflen(version_info)==2: |
| 77 | +fmt='{version}{release_type}' |
| 78 | +eliflen(version_info)==4: |
| 79 | +fmt='{version}{release_type}-{commits}' |
| 80 | + |
| 81 | +returnfmt.format(**version_data) |
| 82 | + |
| 83 | + |
37 | 84 | version_file='bpython/_version.py' |
38 | 85 | version='unknown' |
39 | 86 |
|
|
46 | 93 | stdout=stdout.decode('ascii') |
47 | 94 |
|
48 | 95 | ifproc.returncode==0: |
49 | | -version_split=stdout.split('-') |
50 | | -iflen(version_split)==4: |
51 | | -# format: version-release-commits-hash |
52 | | -version='-'.join((version_split[0],version_split[2])) |
53 | | -eliflen(version_split)==2: |
54 | | -# format: version-release |
55 | | -version=version_split[0] |
| 96 | +version=git_describe_to_python_version(stdout) |
56 | 97 | exceptOSError: |
57 | 98 | pass |
58 | 99 |
|
|