opcua-asyncio icon indicating copy to clipboard operation
opcua-asyncio copied to clipboard

v0.9.14 -> v0.9.90 breaks NodeId interface

Open joristork opened this issue 3 years ago • 5 comments

Description
The upgrade from v0.9.14 to v0.9.90 breaks the interface of NodeId.

To Reproduce
Steps to reproduce the behavior incl code: Write code that initialises a NodeId from asyncua==0.9.14 as follows:

NodeId(identifier=2259, namespaceidx=0, nodeidtype=None)

Test to assert this code works. Upgrade to asyncua==0.9.90.

Expected behavior
The code should continue to work, as 0.9.14 to 0.9.90 is a patch version upgrade.

Actual behaviour

TypeError: __init__() got an unexpected keyword argument 'identifier'

Version
Python-Version: 3.7.6
opcua-asyncio Version (e.g. master branch, 0.9): 0.9.90

joristork avatar Jul 20 '21 14:07 joristork

Shit i knew i was forgetting something when releasing yesterday. Next major number is 1 so i choose 0.90 instead, you are welcome to propose a better idea. But i should really have written a big warning about that breaking change. The constructors are now autogenerated and use the UA cases: Identifier

oroulet avatar Jul 20 '21 15:07 oroulet

Also FYI i added a few wrappers to remove the worst things like argument order inversions. But some renaming generating clear errors and making things much more consistent were left

oroulet avatar Jul 20 '21 16:07 oroulet

In my CI, I rely on the semver convention, wherever it seems to be respected, to allow automatic patch upgrades but not minor version upgrades (e.g. for your library, asyncua >=0.9.14, <0.10.0). You could make the breaking version 0.10.0 at least, even though it doesn't comply with semver to have breaking changes in a minor update... Any reason that you don't want to bump to 1.0.0 ? I guess it's a roadmap issue?

joristork avatar Jul 21 '21 14:07 joristork

I do not want 1.0 so people do not think this is a stable product yet. It is not like i am paid to maintain it. I just happen to need some functionalities

oroulet avatar Jul 21 '21 18:07 oroulet

Meh, stability, what is that? :) semver is your friend when it comes to communicating the instability, though

joristork avatar Jul 23 '21 08:07 joristork