Parsing an Atom expression

>>> atom = pms_utils.atom.Atom("!>=foo/bar-1:0[baz,qux]")
>>> members = [attr for attr in dir(atom) if not callable(getattr(atom, attr)) and not attr.startswith("_")]
>>> for m in members:
...     print(m + ": " + eval(f"atom.{m}").__repr__())
blocker: pms_utils.atom.Blocker('!')
category: pms_utils.atom.Category('foo')
name: pms_utils.atom.Name('bar')
slotExpr: pms_utils.atom.SlotExpr(':0')
usedeps: pms_utils.atom.Usedeps('[baz,qux]')
version: pms_utils.atom.Version('1')
verspec: pms_utils.atom.VersionSpecifier('>=')