06-30-2020 09:29 AM
I just realised I can only set major.minor.patch into the JSON "version" field. I need one more number to be able to push autogenerated packages on my pypi instance. Bundle resolver should support PEP440-compliant "version" fields. Any chance to get this into the todo list?
Thanks,
Val
07-02-2020 12:57 PM
What's the specific version string you're having issues with? We've been creating and posting post releases for a long time w/o any issues.
https://pypi.org/project/ydk-models-ietf/#history
user@host:bundles(master %=)$ ls -1 *post* cisco-ios-xe_16_6_1_post1.json cisco-ios-xe_16_8_1_post1.json cisco-ios-xr_6_5_1_post1.json cisco-ios-xr_6_6_3_post1.json ietf_0_1_5_post1.json ietf_0_1_5_post2.json openconfig_0_1_6_post1.json user@host:bundles(master %=)$ pwd /home/user/src/github.com/CiscoDevNet/ydk-gen/profiles/bundles user@host:bundles(master %=)$
We also frequently generate private alpha releases with alpha version strings w/o any issues.
07-03-2020 01:24 AM - edited 07-03-2020 01:46 AM
With 0.8.4 I get this:
./generate.py -v --python --bundle /tmp/tmpc6kf25w3/ydk-models-wireless.json YDKGEN_HOME not set. Assuming current directory is working directory. Bundle Translator: Cloning from https://github.com/YangModels/yang.git --> /tmp/tmpaqaxfqew.yang Bundle Translator: Removing folder /tmp/tmpaqaxfqew.yang Resolving file tmp3f57l_6d.bundle --> /nobackup/pyats/projects/ydk-gen/gen-api/.cache/bundles Traceback (most recent call last): File "./generate.py", line 492, in <module> output_directory = (generator.generate(options.bundle)) File "/nobackup/pyats/projects/ydk-gen/ydkgen/__init__.py", line 93, in generate return self._generate_bundle(description_file) File "/nobackup/pyats/projects/ydk-gen/ydkgen/__init__.py", line 123, in _generate_bundle curr_bundle, all_bundles = resolver.resolve(tmp_file) File "/nobackup/pyats/projects/ydk-gen/ydkgen/resolver/bundle_resolver.py", line 304, in resolve root = Bundle(bundle_file, self.cached_models_dir, self.iskeyword) File "/nobackup/pyats/projects/ydk-gen/ydkgen/resolver/bundle_resolver.py", line 232, in __init__ super().__init__(data['bundle']) File "/nobackup/pyats/projects/ydk-gen/ydkgen/resolver/bundle_resolver.py", line 84, in __init__ self._version = Version(*tuple(data['version'].split('.'))) TypeError: __new__() takes 4 positional arguments but 5 were given
Version field in JSON file was:
17.4.0.20200702092331
I tested this with pep440.is_canonical() and it tells me it's well formed. Same error with the followings:
17.4.0.dev20200702092331
17.4.0.post20200702092331
0.1.5.post1
So looking at PEP 440 format should be:
[N!]N(.N)*[{a|b|rc}N][.postN][.devN]
and I believe there's an error on how the release segment "N(.N)*" is parsed.
Thanks,
Val
07-03-2020 02:07 AM
This apparently fixed my issue:
diff --git a/ydkgen/resolver/bundle_resolver.py b/ydkgen/resolver/bundle_resolver.py index e3ad196e..05a8d18c 100644 --- a/ydkgen/resolver/bundle_resolver.py +++ b/ydkgen/resolver/bundle_resolver.py @@ -28,6 +28,7 @@ from shutil import rmtree, copy from collections import namedtuple, defaultdict from .bundle_translator import translate from ..common import YdkGenException +from packaging.version import Version logger = logging.getLogger('ydkgen') @@ -38,7 +39,6 @@ Local = namedtuple('Local', ['url']) Remote = namedtuple('Remote', ['url', 'commitid', 'path']) RepoDir = namedtuple('RepoDir', ['repo', 'dir']) Bundles = namedtuple('Bundles', ['curr_bundle', 'bundles']) -Version = namedtuple('Version', ['major', 'minor', 'patch']) def nested_defaultdict(): @@ -81,8 +81,8 @@ class BundleDefinition(object): def __init__(self, data): self._name = data['name'].replace('-', '_') - self._version = Version(*tuple(data['version'].split('.'))) - self._core_version = Version(*tuple(data['core-version'].split('.'))) + self._version = Version(data['version']) + self._core_version = Version(data['core-version']) self._description = data['description'] if 'description' in data else str() self._long_description = data['long-description'] if 'long-description' in data else str() @@ -108,12 +108,12 @@ class BundleDefinition(object): @property def str_version(self): """ Return string representation of version.""" - return "%s.%s.%s" % self.version + return str(self.version) @property def str_core_version(self): """ Return string representation of ydk version.""" - return "%s.%s.%s" % self.core_version + return str(self.core_version) @property def description(self):
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide