From 2f0d90e3bd9d929f1b5549c9e87a33fb5d48d3ed Mon Sep 17 00:00:00 2001 From: GitLab Runner 1149 <netvs@scc.kit.edu> Date: Sat, 22 Mar 2025 09:04:16 +0000 Subject: [PATCH] Automated Save by CI Run --- 4.0/openapi.yml | 2 +- 4.0/python/__init__.py | 2 +- 4.0/version_numeric | 2 +- 4.1/openapi.yml | 2 +- 4.1/python/__init__.py | 2 +- 4.1/version_numeric | 2 +- 4.2/es/tmp.cidr_generator.js | 4 +- 4.2/functions.json | 42 ++++++++++---------- 4.2/golang/structs.go | 6 ++- 4.2/objects.json | 12 ++++++ 4.2/openapi.yml | 68 +++++++++++++++++--------------- 4.2/python/__init__.py | 2 +- 4.2/python/tmp.py | 54 ++++++++++++++----------- 4.2/transaction_json_schema.json | 40 +++++++++++++------ 4.2/version_numeric | 2 +- latest_version | 2 +- 16 files changed, 142 insertions(+), 102 deletions(-) diff --git a/4.0/openapi.yml b/4.0/openapi.yml index 87aeaba..e94d473 100644 --- a/4.0/openapi.yml +++ b/4.0/openapi.yml @@ -3469,7 +3469,7 @@ info: \ nicht Bestandteil dieser Dokumentation, sondern \xFCber selbstdokumentierende\ \ Indexabfragen der WebAPI erreichbar." title: SCC NETDB-API - version: 4.0.701 + version: 4.0.700 openapi: 3.0.3 paths: /cntl/column/create: diff --git a/4.0/python/__init__.py b/4.0/python/__init__.py index 50fab04..7d46be6 100644 --- a/4.0/python/__init__.py +++ b/4.0/python/__init__.py @@ -36,7 +36,7 @@ class APIEndpoint(object): class APISession(object): def __init__(self, endpoint: APIEndpoint, protocol: str='https', update_check: bool='NETDB_CLIENT_DISABLE_UPDATE_CHECK' not in os.environ): - self._build_version = '4.0.701' + self._build_version = '4.0.700' self.session = requests.session() self.session.headers.update({'Authorization': 'Bearer ' + endpoint.token}) self.api_root = f'{protocol}://{endpoint.base_url}' diff --git a/4.0/version_numeric b/4.0/version_numeric index cd09724..0dbca23 100644 --- a/4.0/version_numeric +++ b/4.0/version_numeric @@ -1 +1 @@ -4.0.701 \ No newline at end of file +4.0.700 \ No newline at end of file diff --git a/4.1/openapi.yml b/4.1/openapi.yml index a047196..1b1e33a 100644 --- a/4.1/openapi.yml +++ b/4.1/openapi.yml @@ -4064,7 +4064,7 @@ info: \ nicht Bestandteil dieser Dokumentation, sondern \xFCber selbstdokumentierende\ \ Indexabfragen der WebAPI erreichbar." title: SCC NETDB-API - version: 4.1.159 + version: 4.1.158 openapi: 3.0.3 paths: /cntl/column/create: diff --git a/4.1/python/__init__.py b/4.1/python/__init__.py index d173edc..71b3b57 100644 --- a/4.1/python/__init__.py +++ b/4.1/python/__init__.py @@ -36,7 +36,7 @@ class APIEndpoint(object): class APISession(object): def __init__(self, endpoint: APIEndpoint, protocol: str='https', update_check: bool='NETDB_CLIENT_DISABLE_UPDATE_CHECK' not in os.environ): - self._build_version = '4.1.159' + self._build_version = '4.1.158' self.session = requests.session() self.session.headers.update({'Authorization': 'Bearer ' + endpoint.token}) self.api_root = f'{protocol}://{endpoint.base_url}' diff --git a/4.1/version_numeric b/4.1/version_numeric index 5f680d8..89206cb 100644 --- a/4.1/version_numeric +++ b/4.1/version_numeric @@ -1 +1 @@ -4.1.159 \ No newline at end of file +4.1.158 \ No newline at end of file diff --git a/4.2/es/tmp.cidr_generator.js b/4.2/es/tmp.cidr_generator.js index d5b7b7a..af8a8e6 100644 --- a/4.2/es/tmp.cidr_generator.js +++ b/4.2/es/tmp.cidr_generator.js @@ -13,8 +13,8 @@ import NETVSConfig from '@/../netvs.config' /* eslint-disable object-shorthand */ export default { - list (config, { value_limit, value_offset, base_value_list, masklen_summand = 0, value_limit_list, value_offset_list, masklen_summand_list }) { - const params = APIUtils.denullify_dict({ 'value_limit': value_limit, 'value_offset': value_offset, 'base_value_list': (base_value_list === null) ? null : JSON.stringify(base_value_list), 'masklen_summand': masklen_summand, 'value_limit_list': (value_limit_list === null) ? null : JSON.stringify(value_limit_list), 'value_offset_list': (value_offset_list === null) ? null : JSON.stringify(value_offset_list), 'masklen_summand_list': (masklen_summand_list === null) ? null : JSON.stringify(masklen_summand_list)}) + list (config, { base_value_list, fetch_limit_list, fetch_offset_list, default_fetch_limit, default_fetch_offset, masklen_summand_list, default_masklen_summand = 0 }) { + const params = APIUtils.denullify_dict({ 'base_value_list': (base_value_list === null) ? null : JSON.stringify(base_value_list), 'fetch_limit_list': (fetch_limit_list === null) ? null : JSON.stringify(fetch_limit_list), 'fetch_offset_list': (fetch_offset_list === null) ? null : JSON.stringify(fetch_offset_list), 'default_fetch_limit': default_fetch_limit, 'default_fetch_offset': default_fetch_offset, 'masklen_summand_list': (masklen_summand_list === null) ? null : JSON.stringify(masklen_summand_list), 'default_masklen_summand': default_masklen_summand}) const cnf = {} Object.assign(cnf, (config || {}).netdb_axios_config) cnf.params = params diff --git a/4.2/functions.json b/4.2/functions.json index f086c6e..2fe1ab1 100644 --- a/4.2/functions.json +++ b/4.2/functions.json @@ -18910,61 +18910,61 @@ "system": "tmp", "fq_name": "tmp.cidr_generator.list", "parameters": { - "value_limit": { + "base_value_list": { "old": { - "is_nullable": true, + "is_nullable": false, "is_required": false }, - "data_type": "integer4u", + "data_type": "ip_network_array", "is_deprecated": false }, - "value_offset": { + "fetch_limit_list": { "old": { - "is_nullable": true, + "is_nullable": false, "is_required": false }, - "data_type": "integer4u", + "data_type": "integer4u_array", "is_deprecated": false }, - "base_value_list": { + "fetch_offset_list": { "old": { "is_nullable": false, "is_required": false }, - "data_type": "ip_network_array", + "data_type": "integer4u_array", "is_deprecated": false }, - "masklen_summand": { + "default_fetch_limit": { "old": { - "is_nullable": false, - "is_required": false, - "data_default": 0 + "is_nullable": true, + "is_required": false }, - "data_type": "integer1u", + "data_type": "integer4u", "is_deprecated": false }, - "value_limit_list": { + "default_fetch_offset": { "old": { - "is_nullable": false, + "is_nullable": true, "is_required": false }, - "data_type": "integer4u_array", + "data_type": "integer4u", "is_deprecated": false }, - "value_offset_list": { + "masklen_summand_list": { "old": { "is_nullable": false, "is_required": false }, - "data_type": "integer4u_array", + "data_type": "integer1u_array", "is_deprecated": false }, - "masklen_summand_list": { + "default_masklen_summand": { "old": { "is_nullable": false, - "is_required": false + "is_required": false, + "data_default": 0 }, - "data_type": "integer1u_array", + "data_type": "integer1u", "is_deprecated": false } }, diff --git a/4.2/golang/structs.go b/4.2/golang/structs.go index 9a9b8e7..9a0b19d 100644 --- a/4.2/golang/structs.go +++ b/4.2/golang/structs.go @@ -1365,7 +1365,9 @@ type DnsFqdnStatistic struct { } type TmpCidrGenerator struct { - Value net.IPNet `mapstructure:"value"` - BaseValue net.IPNet `mapstructure:"base_value"` + Value net.IPNet `mapstructure:"value"` + BaseValue net.IPNet `mapstructure:"base_value"` + ValueHost string `mapstructure:"value_host"` + ValueMasklen uint8 `mapstructure:"value_masklen"` } diff --git a/4.2/objects.json b/4.2/objects.json index a433173..02e70ab 100644 --- a/4.2/objects.json +++ b/4.2/objects.json @@ -1185,6 +1185,18 @@ "data_type": "ip_network", "is_nullable": false, "is_deprecated": false + }, + "value_host": { + "is_core": true, + "data_type": "text", + "is_nullable": false, + "is_deprecated": false + }, + "value_masklen": { + "is_core": true, + "data_type": "integer1u", + "is_nullable": false, + "is_deprecated": false } }, "is_log_dst": false, diff --git a/4.2/openapi.yml b/4.2/openapi.yml index 0a498b7..202c0dc 100644 --- a/4.2/openapi.yml +++ b/4.2/openapi.yml @@ -3735,6 +3735,12 @@ components: value: description: CIDR-Notation des generierten CIDR-Objektes type: string + value_host: + description: Hostteil (IP-Adresse) des generierten CIDR-Objektes + type: string + value_masklen: + description: "L\xE4nge der Netzmaske des generierten CIDR-Objektes" + type: number type: object tmp.diag4gpk: description: '' @@ -4084,7 +4090,7 @@ info: \ nicht Bestandteil dieser Dokumentation, sondern \xFCber selbstdokumentierende\ \ Indexabfragen der WebAPI erreichbar." title: SCC NETDB-API - version: 4.2.14 + version: 4.2.0 openapi: 3.0.3 paths: /cntl/column/create: @@ -32379,24 +32385,6 @@ paths: /tmp/cidr_generator/list: get: parameters: - - description: "Maximale Anzahl der generierten CIDR-Objekte je Basiswert, die\ - \ als Standardwert f\xFCr fehlende Positionen in 'value_limit_list' eingesetzt\ - \ wird." - in: query - name: value_limit - required: false - schema: - nullable: true - type: number - - description: "Anzahl der Datens\xE4tze, die zu Beginn der Ausgabe \xFCbersprungen\ - \ werden, die als Standardwert f\xFCr fehlende Positionen in 'value_offset_list'\ - \ eingesetzt wird." - in: query - name: value_offset - required: false - schema: - nullable: true - type: number - description: Liste der CIDR-Notationen der Basis-CIDR-Objekte. Die Ausgabe aller generierten CIDR-Objekte erfolgt immer in positionaler Reihenfolge dieser Basisobjekte, und innerhalb eines Basisobjektes aufsteigend. @@ -32407,22 +32395,12 @@ paths: format: '["value1","value2",...]' nullable: false type: string - - description: "Netzmasken-Summand, der als Standardwert f\xFCr fehlende Positionen\ - \ in 'masklen_summand_list' eingesetzt wird. Der erlaubte Wertebereich ist\ - \ 0..16." - in: query - name: masklen_summand - required: false - schema: - default: 0 - nullable: false - type: number - description: "Liste der Maximalzahlen der generierten CIDR-Objekte je Basiswert.\ \ Die Werte werden positional passend den Basis-CIDR-Objekten zugeordnet.\ \ Fehlende Positionen werden mit dem Standardwert aus 'value_limit' erg\xE4\ nzt; \xFCbersch\xFCssige Positionen werden ignoriert." in: query - name: value_limit_list + name: fetch_limit_list required: false schema: format: '["value1","value2",...]' @@ -32434,12 +32412,30 @@ paths: \ werden mit dem Standardwert aus 'value_offset' erg\xE4nzt; \xFCbersch\xFC\ ssige Positionen werden ignoriert." in: query - name: value_offset_list + name: fetch_offset_list required: false schema: format: '["value1","value2",...]' nullable: false type: string + - description: "Maximale Anzahl der generierten CIDR-Objekte je Basiswert, die\ + \ als Standardwert f\xFCr fehlende Positionen in 'value_limit_list' eingesetzt\ + \ wird." + in: query + name: default_fetch_limit + required: false + schema: + nullable: true + type: number + - description: "Anzahl der Datens\xE4tze, die zu Beginn der Ausgabe \xFCbersprungen\ + \ werden, die als Standardwert f\xFCr fehlende Positionen in 'value_offset_list'\ + \ eingesetzt wird." + in: query + name: default_fetch_offset + required: false + schema: + nullable: true + type: number - description: "Liste der Netzmasken-Summanden, die zur Netzmaske der Basis-CIDR-Objekte\ \ addiert werden, um die Netzmaske der generierten CIDR-Objekte zu erhalten.\ \ Der erlaubte Wertebereich ist 0..16. Die Werte werden positional passend\ @@ -32452,6 +32448,16 @@ paths: format: '["value1","value2",...]' nullable: false type: string + - description: "Netzmasken-Summand, der als Standardwert f\xFCr fehlende Positionen\ + \ in 'masklen_summand_list' eingesetzt wird. Der erlaubte Wertebereich ist\ + \ 0..16." + in: query + name: default_masklen_summand + required: false + schema: + default: 0 + nullable: false + type: number responses: 200: content: diff --git a/4.2/python/__init__.py b/4.2/python/__init__.py index e403fa8..721585f 100644 --- a/4.2/python/__init__.py +++ b/4.2/python/__init__.py @@ -36,7 +36,7 @@ class APIEndpoint(object): class APISession(object): def __init__(self, endpoint: APIEndpoint, protocol: str='https', update_check: bool='NETDB_CLIENT_DISABLE_UPDATE_CHECK' not in os.environ): - self._build_version = '4.2.14' + self._build_version = '4.2.0' self.session = requests.session() self.session.headers.update({'Authorization': 'Bearer ' + endpoint.token}) self.api_root = f'{protocol}://{endpoint.base_url}' diff --git a/4.2/python/tmp.py b/4.2/python/tmp.py index 9a9dcb6..e7991de 100644 --- a/4.2/python/tmp.py +++ b/4.2/python/tmp.py @@ -114,51 +114,57 @@ class Diag4gpk(APIObject): class CidrGenerator(APIObject): value: str base_value: str + value_host: str + value_masklen: int def __post_init__(self): if not isinstance(self.value, str): raise ValueError(f"'value' of incorrect type. Expected str, got {type(self.value)}") if not isinstance(self.base_value, str): raise ValueError(f"'base_value' of incorrect type. Expected str, got {type(self.base_value)}") + if not isinstance(self.value_host, str): + raise ValueError(f"'value_host' of incorrect type. Expected str, got {type(self.value_host)}") + if not isinstance(self.value_masklen, int): + raise ValueError(f"'value_masklen' of incorrect type. Expected int, got {type(self.value_masklen)}") @staticmethod - def list_ta(value_limit_old: int = None, value_offset_old: int = None, base_value_list_old: list = None, masklen_summand_old: int = 0, value_limit_list_old: list = None, value_offset_list_old: list = None, masklen_summand_list_old: list = None) -> dict: - if value_limit_old is not None and not (isinstance(value_limit_old, int) or isinstance(value_limit_old, ExplicitNull)): - raise ValueError(f"'value_limit' of incorrect type. Expected int, got {type(value_limit_old)}") - if value_offset_old is not None and not (isinstance(value_offset_old, int) or isinstance(value_offset_old, ExplicitNull)): - raise ValueError(f"'value_offset' of incorrect type. Expected int, got {type(value_offset_old)}") + def list_ta(base_value_list_old: list = None, fetch_limit_list_old: list = None, fetch_offset_list_old: list = None, default_fetch_limit_old: int = None, default_fetch_offset_old: int = None, masklen_summand_list_old: list = None, default_masklen_summand_old: int = 0) -> dict: if base_value_list_old is not None and not (isinstance(base_value_list_old, list)): raise ValueError(f"'base_value_list' of incorrect type. Expected list, got {type(base_value_list_old)}") - if masklen_summand_old is not None and not (isinstance(masklen_summand_old, int)): - raise ValueError(f"'masklen_summand' of incorrect type. Expected int, got {type(masklen_summand_old)}") - if value_limit_list_old is not None and not (isinstance(value_limit_list_old, list)): - raise ValueError(f"'value_limit_list' of incorrect type. Expected list, got {type(value_limit_list_old)}") - if value_offset_list_old is not None and not (isinstance(value_offset_list_old, list)): - raise ValueError(f"'value_offset_list' of incorrect type. Expected list, got {type(value_offset_list_old)}") + if fetch_limit_list_old is not None and not (isinstance(fetch_limit_list_old, list)): + raise ValueError(f"'fetch_limit_list' of incorrect type. Expected list, got {type(fetch_limit_list_old)}") + if fetch_offset_list_old is not None and not (isinstance(fetch_offset_list_old, list)): + raise ValueError(f"'fetch_offset_list' of incorrect type. Expected list, got {type(fetch_offset_list_old)}") + if default_fetch_limit_old is not None and not (isinstance(default_fetch_limit_old, int) or isinstance(default_fetch_limit_old, ExplicitNull)): + raise ValueError(f"'default_fetch_limit' of incorrect type. Expected int, got {type(default_fetch_limit_old)}") + if default_fetch_offset_old is not None and not (isinstance(default_fetch_offset_old, int) or isinstance(default_fetch_offset_old, ExplicitNull)): + raise ValueError(f"'default_fetch_offset' of incorrect type. Expected int, got {type(default_fetch_offset_old)}") if masklen_summand_list_old is not None and not (isinstance(masklen_summand_list_old, list)): raise ValueError(f"'masklen_summand_list' of incorrect type. Expected list, got {type(masklen_summand_list_old)}") + if default_masklen_summand_old is not None and not (isinstance(default_masklen_summand_old, int)): + raise ValueError(f"'default_masklen_summand' of incorrect type. Expected int, got {type(default_masklen_summand_old)}") - return {'name': 'tmp.cidr_generator.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'value_limit': value_limit_old, 'value_offset': value_offset_old, 'base_value_list': base_value_list_old, 'masklen_summand': masklen_summand_old, 'value_limit_list': value_limit_list_old, 'value_offset_list': value_offset_list_old, 'masklen_summand_list': masklen_summand_list_old})} + return {'name': 'tmp.cidr_generator.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'base_value_list': base_value_list_old, 'fetch_limit_list': fetch_limit_list_old, 'fetch_offset_list': fetch_offset_list_old, 'default_fetch_limit': default_fetch_limit_old, 'default_fetch_offset': default_fetch_offset_old, 'masklen_summand_list': masklen_summand_list_old, 'default_masklen_summand': default_masklen_summand_old})} # TODO: Consider is_returning @classmethod - def list(cls, api_session: APISession, value_limit_old: int = None, value_offset_old: int = None, base_value_list_old: list = None, masklen_summand_old: int = 0, value_limit_list_old: list = None, value_offset_list_old: list = None, masklen_summand_list_old: list = None) -> list: - if value_limit_old is not None and not (isinstance(value_limit_old, int) or isinstance(value_limit_old, ExplicitNull)): - raise ValueError(f"'value_limit' of incorrect type. Expected int, got {type(value_limit_old)}") - if value_offset_old is not None and not (isinstance(value_offset_old, int) or isinstance(value_offset_old, ExplicitNull)): - raise ValueError(f"'value_offset' of incorrect type. Expected int, got {type(value_offset_old)}") + def list(cls, api_session: APISession, base_value_list_old: list = None, fetch_limit_list_old: list = None, fetch_offset_list_old: list = None, default_fetch_limit_old: int = None, default_fetch_offset_old: int = None, masklen_summand_list_old: list = None, default_masklen_summand_old: int = 0) -> list: if base_value_list_old is not None and not (isinstance(base_value_list_old, list)): raise ValueError(f"'base_value_list' of incorrect type. Expected list, got {type(base_value_list_old)}") - if masklen_summand_old is not None and not (isinstance(masklen_summand_old, int)): - raise ValueError(f"'masklen_summand' of incorrect type. Expected int, got {type(masklen_summand_old)}") - if value_limit_list_old is not None and not (isinstance(value_limit_list_old, list)): - raise ValueError(f"'value_limit_list' of incorrect type. Expected list, got {type(value_limit_list_old)}") - if value_offset_list_old is not None and not (isinstance(value_offset_list_old, list)): - raise ValueError(f"'value_offset_list' of incorrect type. Expected list, got {type(value_offset_list_old)}") + if fetch_limit_list_old is not None and not (isinstance(fetch_limit_list_old, list)): + raise ValueError(f"'fetch_limit_list' of incorrect type. Expected list, got {type(fetch_limit_list_old)}") + if fetch_offset_list_old is not None and not (isinstance(fetch_offset_list_old, list)): + raise ValueError(f"'fetch_offset_list' of incorrect type. Expected list, got {type(fetch_offset_list_old)}") + if default_fetch_limit_old is not None and not (isinstance(default_fetch_limit_old, int) or isinstance(default_fetch_limit_old, ExplicitNull)): + raise ValueError(f"'default_fetch_limit' of incorrect type. Expected int, got {type(default_fetch_limit_old)}") + if default_fetch_offset_old is not None and not (isinstance(default_fetch_offset_old, int) or isinstance(default_fetch_offset_old, ExplicitNull)): + raise ValueError(f"'default_fetch_offset' of incorrect type. Expected int, got {type(default_fetch_offset_old)}") if masklen_summand_list_old is not None and not (isinstance(masklen_summand_list_old, list)): raise ValueError(f"'masklen_summand_list' of incorrect type. Expected list, got {type(masklen_summand_list_old)}") + if default_masklen_summand_old is not None and not (isinstance(default_masklen_summand_old, int)): + raise ValueError(f"'default_masklen_summand' of incorrect type. Expected int, got {type(default_masklen_summand_old)}") - res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(value_limit_old=value_limit_old, value_offset_old=value_offset_old, base_value_list_old=base_value_list_old, masklen_summand_old=masklen_summand_old, value_limit_list_old=value_limit_list_old, value_offset_list_old=value_offset_list_old, masklen_summand_list_old=masklen_summand_list_old)]) + res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(base_value_list_old=base_value_list_old, fetch_limit_list_old=fetch_limit_list_old, fetch_offset_list_old=fetch_offset_list_old, default_fetch_limit_old=default_fetch_limit_old, default_fetch_offset_old=default_fetch_offset_old, masklen_summand_list_old=masklen_summand_list_old, default_masklen_summand_old=default_masklen_summand_old)]) if not res.ok: raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text) return [cls(**s) for s in res.json()[0]] diff --git a/4.2/transaction_json_schema.json b/4.2/transaction_json_schema.json index 1364a5a..e90965e 100644 --- a/4.2/transaction_json_schema.json +++ b/4.2/transaction_json_schema.json @@ -135,14 +135,20 @@ "description": "The referenced statement's position must be lower than the current position." }, "pos": { - "type": [ - "array", - "string", - "null" - ], "items": { "type": "integer" }, + "oneOf": [ + { + "type": "array" + }, + { + "type": "string" + }, + { + "type": "null" + } + ], "title": "Range of result sets of the referenced statement", "default": null, "pattern": "^\\[\\-?[0-9]*:\\-?[0-9]*\\]$", @@ -211,9 +217,13 @@ "maxItems": 0 }, "_when_condition": { - "type": [ - "object", - "boolean" + "oneOf": [ + { + "type": "object" + }, + { + "type": "boolean" + } ], "title": "WHEN condition. Recursive, boolean returning function (as type 'object') for the WHEN clause; or a boolean constant", "properties": { @@ -325,13 +335,17 @@ "title": "attribute/parameter name" }, { - "type": [ - "string", - "array" - ], "items": { "type": "integer" }, + "oneOf": [ + { + "type": "array" + }, + { + "type": "string" + } + ], "title": "range literal for object dict position as string (like '[<lower_bound>:<upper_bound>]' according to the array slice notation) or list of object dict positions as array. defaults to all positions.", "default": null, "pattern": "^\\[\\-?[0-9]*:\\-?[0-9]*\\]$", @@ -439,7 +453,7 @@ "properties": { "idx": { "type": "string", - "title": "Unique identifier of the statement. default: Position in outer statement list (0-based)" + "title": "Unique identifier of the statement. Default: Position in outer statement list (0-based)" }, "new": { "$ref": "#/$defs/_params" diff --git a/4.2/version_numeric b/4.2/version_numeric index 2393fef..ef8d756 100644 --- a/4.2/version_numeric +++ b/4.2/version_numeric @@ -1 +1 @@ -4.2.14 \ No newline at end of file +4.2.0 \ No newline at end of file diff --git a/latest_version b/latest_version index 2393fef..ef8d756 100644 --- a/latest_version +++ b/latest_version @@ -1 +1 @@ -4.2.14 \ No newline at end of file +4.2.0 \ No newline at end of file -- GitLab