All Purpose Set


Table of Contents


What is it?

  • A set which doesn't require hashable contents

Why create it?

  • I often have a need to store non-hashable contents in a set. For example storing a dict isn't possible with the builtin set.

    # doesn't work
    someDict = { "key": "value" }
    someSet = { someDict }

Simple usage

from all_purpose_set import ApSet

someDict = { "key": "value" }
someSet = ApSet([someDict])

print(someDict in someSet) # prints True

See also


Api

Note: This api is young and subject to change quite a bit. There also may be functionality present in the builtin set which this set doesn't cover. I'm willing to add it so please just raise a github issue or PR with details.

class ApSet([a list])

  • all methods return self unless specified otherwise
  • iterates in the order of insertion
  • currently the internal methods implemented are
    • __contains__
    • __iter__
    • __len__
add(something)
clear()
has(something) => bool
  • a function alternative to key in aSet
remove(something)
  • raises a KeyError if the element doesn't exist

Test

#
# you must have poetry installed
#
$ poetry shell
$ poetry install
$ python runTests.py