Skip to main content

KeySet with 4 classes to represent concepts of All, None, Some, and AllExceptSome

Project description

key_set

Python port of KeySet in TypeScript and KeySet in Ruby

KeySet with 4 classes to represent concepts of All, None, Some, and AllExceptSome, the last 2 with a set of keys, and all with intersection, difference, union, inversion, and inclusion calculations.

Limitations

KeySetType enum

Enum that represents the 4 types of KeySets:

  • ALL represents the entirety of possible keys (𝕌)
  • NONE represents an empty set ()
  • SOME represents a concrete set (A ⊂ 𝕌)
  • ALL_EXCEPT_SOME represents the complementary of a set, all the elements except the given ones (A' = {x ∈ 𝕌 | x ∉ A}) _(see Complement in Wikipedia)*

Creation

Build your KeySets using the build functions

from key_set import build_all, build_none, build_some_or_none, build_all_except_some_or_all

build_all()  # => returns a new instance of KeySetAll
build_none()  # => returns a new instance of KeySetNone

build_some_or_none([])  # returns a new instance of KeySetNone

# returns a new instance of KeySetSome with keys {'a', 'b', 'c'} (in a unique set)
build_some_or_none({'a', 'c', 'b'})
build_some_or_none(['a', 'c', 'b', 'c'])

build_all_except_some_or_all([])  # returns a new instance of KeySetAll

# returns a new instance of KeySetAllExceptSome with keys {'a', 'b', 'c'} (in a unique set)
build_all_except_some_or_all({'a', 'c', 'b'})
build_all_except_some_or_all(['a', 'c', 'b', 'c'])

KeySet classes

Methods exposed:

key_set_type()

returns the KeySetType enum

elements()

returns the set with the elements. It will be blank for All and None.

represents_xxx() methods

  • represents_all: returns True if the KeySet is ALL
  • represents_none: returns True if the KeySet is NONE
  • represents_some: returns True if the KeySet is SOME
  • represents_all_except_some: returns True if the KeySet is ALL_EXCEPT_SOME

invert()

Returns a new KeySet that represents the inverse Set of this one.

  • ALL <-> NONE
  • SOME <-> ALL_EXCEPT_SOME

intersect(other)

Returns a new KeySet with the intersection (A ∩ B) of both Sets: a set that contains the elements included in both sets.

union(other)

Returns a new KeySet with the union (A ∩ B) of both Sets: a set that contains the elements in any of the sets.

difference(other)

Returns a new KeySet with the difference (A - B) of the Sets: a set that contains the elements of A that are not in B.

includes(element)

Returns True if the set that this KeySet represents contains the given element.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

key_set-1.1.1-py3-none-any.whl (12.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page