expand_version.py
Go to the documentation of this file.
1 # Copyright 2016 gRPC authors.
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 # http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14 """Buildgen package version plugin
15 
16 This parses the list of targets from the yaml build file, and creates
17 a custom version string for each language's package.
18 
19 """
20 
21 import re
22 
23 LANGUAGES = [
24  'core',
25  'cpp',
26  'csharp',
27  'node',
28  'objc',
29  'php',
30  'python',
31  'ruby',
32 ]
33 
34 
35 class Version:
36 
37  def __init__(self, version_str, override_major=None):
38  self.tag = None
39  if '-' in version_str:
40  version_str, self.tag = version_str.split('-')
41  self.major, self.minor, self.patch = [
42  int(x) for x in version_str.split('.')
43  ]
44  if override_major:
45  self.major = override_major
46 
47  def __str__(self):
48  """Version string in a somewhat idiomatic style for most languages"""
49  version_str = '%d.%d.%d' % (self.major, self.minor, self.patch)
50  if self.tag:
51  version_str += '-%s' % self.tag
52  return version_str
53 
54  def pep440(self):
55  """Version string in Python PEP440 style"""
56  s = '%d.%d.%d' % (self.major, self.minor, self.patch)
57  if self.tag:
58  # we need to translate from grpc version tags to pep440 version
59  # tags; this code is likely to be a little ad-hoc
60  if self.tag == 'dev':
61  s += '.dev0'
62  elif len(self.tag) >= 3 and self.tag[0:3] == 'pre':
63  s += 'rc%d' % int(self.tag[3:])
64  else:
65  raise Exception(
66  'Don\'t know how to translate version tag "%s" to pep440' %
67  self.tag)
68  return s
69 
70  def ruby(self):
71  """Version string in Ruby style"""
72  if self.tag:
73  return '%d.%d.%d.%s' % (self.major, self.minor, self.patch,
74  self.tag)
75  else:
76  return '%d.%d.%d' % (self.major, self.minor, self.patch)
77 
78  def php(self):
79  """Version string for PHP PECL package"""
80  s = '%d.%d.%d' % (self.major, self.minor, self.patch)
81  if self.tag:
82  if self.tag == 'dev':
83  s += 'dev'
84  elif len(self.tag) >= 3 and self.tag[0:3] == 'pre':
85  s += 'RC%d' % int(self.tag[3:])
86  else:
87  raise Exception(
88  'Don\'t know how to translate version tag "%s" to PECL version'
89  % self.tag)
90  return s
91 
92  def php_stability(self):
93  """stability string for PHP PECL package.xml file"""
94  if self.tag:
95  return 'beta'
96  else:
97  return 'stable'
98 
99  def php_composer(self):
100  """Version string for PHP Composer package"""
101  return '%d.%d.%d' % (self.major, self.minor, self.patch)
102 
104  return '7.2'
105 
107  return 'stretch'
108 
109 
110 def mako_plugin(dictionary):
111  """Expand version numbers:
112  - for each language, ensure there's a language_version tag in
113  settings (defaulting to the master version tag)
114  - expand version strings to major, minor, patch, and tag
115  """
116 
117  settings = dictionary['settings']
118  version_str = settings['version']
119  master_version = Version(version_str)
120  settings['version'] = master_version
121  for language in LANGUAGES:
122  version_tag = '%s_version' % language
123  override_major = settings.get('%s_major_version' % language, None)
124  if version_tag in settings:
125  settings[version_tag] = Version(settings[version_tag],
126  override_major=override_major)
127  else:
128  settings[version_tag] = Version(version_str,
129  override_major=override_major)
130  settings['protobuf_major_minor_version'] = ('.'.join(
131  settings['protobuf_version'].split('.')[:2]))
expand_version.Version.pep440
def pep440(self)
Definition: expand_version.py:54
expand_version.Version.php_debian_version
def php_debian_version(self)
Definition: expand_version.py:106
expand_version.Version.ruby
def ruby(self)
Definition: expand_version.py:70
expand_version.mako_plugin
def mako_plugin(dictionary)
Definition: expand_version.py:110
expand_version.Version.major
major
Definition: expand_version.py:45
expand_version.Version.php_stability
def php_stability(self)
Definition: expand_version.py:92
expand_version.Version.php_composer
def php_composer(self)
Definition: expand_version.py:99
expand_version.Version.php
def php(self)
Definition: expand_version.py:78
xds_interop_client.int
int
Definition: xds_interop_client.py:113
expand_version.Version.__str__
def __str__(self)
Definition: expand_version.py:47
expand_version.Version.php_current_version
def php_current_version(self)
Definition: expand_version.py:103
expand_version.Version.tag
tag
Definition: expand_version.py:38
expand_version.Version.patch
patch
Definition: expand_version.py:41
expand_version.Version.__init__
def __init__(self, version_str, override_major=None)
Definition: expand_version.py:37
expand_version.Version
Definition: expand_version.py:35
len
int len
Definition: abseil-cpp/absl/base/internal/low_level_alloc_test.cc:46
split
static void split(const char *s, char ***ss, size_t *ns)
Definition: debug/trace.cc:111


grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:59:17