Skip to main content

This package provides a collection that is basically a “dict of sets”, named MetaSet.

Build status Supported Python versions Wheel status License

Quickstart

Install the package from PyPI, using pip:

pip install metaset

Or from GitHub:

git clone git://github.com/Polyconseil/metaset.git

Import it in your code:

>>> from metaset import MetaSet

Usage is quite straight forward, basic set operations are supported via the binary operators + - | ^.

>>> from pprint import pprint
>>> pprint(MetaSet(a={1, 2}, b={3}) | MetaSet(b={4}, c={5}))
{'a': {1, 2}, 'b': {3, 4}, 'c': {5}}

Django Postgres

A custom Django field is available. It is quite straightforward:

>>> from metaset.django_field import MetaSetField
>>> from django.db import models        # doctest: +SKIP

>>> class MyModel(models.Model):        # doctest: +SKIP
        mset = MetaSetField()           # doctest: +SKIP

The following versions of Python and Django are supported:

  • Python 2.7, 3.6, 3.7 and 3.8;

  • Django 1.11, 2.0, 2.1, 2.2, 3.0 and 3.1.

Detailed considerations

They are two ways to consider the “dict of sets” notion, differing on how you handle the empty values for keys.

The easiest idea is to consider that a key with no content is non-existent. This is how the dictset package is implemented.

In this alternative implementation, we chose to keep the empty keys as meaningful elements, allowing for smart unions and intersections.

>>> pprint(MetaSet(a={1}) | MetaSet(a={2}, b=set()))
{'a': {1, 2}, 'b': set()}

>>> MetaSet(a={1}) & MetaSet(a={2}, b={3})
{'a': set()}

So, beware of how empty-keys are handled, and consider using dictset if it is a better match for your use case. The behavior for subtraction and symmetric difference, although sound on a mathematical point of view, may not be what you want.

>>> MetaSet(a={1}) - MetaSet(a={1})
{'a': set()}

>>> MetaSet(a={1}) ^ MetaSet(a={1})
{'a': set()}

Download files

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

Source Distribution

metaset-1.4.0.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

metaset-1.4.0-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file metaset-1.4.0.tar.gz.

File metadata

  • Download URL: metaset-1.4.0.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.4.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.8.9

File hashes

Hashes for metaset-1.4.0.tar.gz
Algorithm Hash digest
SHA256 bea5a87eeb794957d27dba5dfaf5efa7526a3b924c95608b59587ee6abf19d92
MD5 88c2f892642f7cd6a0cd4a2ce8cf12af
BLAKE2b-256 2b49c711d2c5e47b90f97f6dc2edde0d8bd316eb72600f8e3868439e51cdd472

See more details on using hashes here.

File details

Details for the file metaset-1.4.0-py3-none-any.whl.

File metadata

  • Download URL: metaset-1.4.0-py3-none-any.whl
  • Upload date:
  • Size: 5.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.4.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.8.9

File hashes

Hashes for metaset-1.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b395a05c7f27fc83b840fce6d96db1d335c0e2742742907b3f3dba99033c4a36
MD5 c9fca03086f0902b7db1ddf18ddf770a
BLAKE2b-256 a645f29cec9d4fd7d0eaecf0aeb85dfb55725084065882fbe47929cb6d5d9b6e

See more details on using hashes here.

Release history Release notifications | RSS feed

2.0.0

2 files

1.4.1

2 files

This release

1.4.0 This release

2 files

1.3.0

2 files

1.2.0

2 files

1.1.2

2 files

1.1.1

2 files

1.1.0

2 files

1.0.3

1 file

1.0.2

1 file

1.0.1

2 files

1.0.0

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page