<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
from guppy.sets.setsc import BitSet        # base bitset type
from guppy.sets.setsc import ImmBitSet     # immutable bitset type
from guppy.sets.setsc import immbit        # immutable bitset singleton constructor
from guppy.sets.setsc import immbitrange   # immutable bitset range constructor
from guppy.sets.setsc import immbitset     # immutable bitset constructor
from guppy.sets.setsc import MutBitSet     # mutable bitset
from guppy.sets.setsc import NodeSet       # base nodeset type
from guppy.sets.setsc import ImmNodeSet    # immmutable nodeset type
from guppy.sets.setsc import MutNodeSet    # mutable nodeset type

from .setsc import _bs
_bs.__module__ = 'guppy.sets'  # ..to be able to set it.


# Define some constructors.
# Constructor names are lower case.
# Some constructors are equal to types.
# But this connection depends on the implementation.
# So one may wish the user to not depend on this.

mutbitset = MutBitSet
immnodeset = ImmNodeSet
mutnodeset = MutNodeSet


def mutnodeset_union(iterable):
    "Return a mutable nodeset which is the union of all nodesets in iterable."
    set = mutnodeset()
    for it in iterable:
        set |= it
    return set


def immnodeset_union(iterable, *args):
    "Return an immmutable nodeset which is the union of all nodesets in iterable."
    set = mutnodeset_union(iterable)
    return immnodeset(set, *args)


# Make attributes assignable by reading one;
# this is getting around a bug in Python 2.3.3
# and should be harmless in any version.


try:
    mutnodeset()._hiding_tag_
except AttributeError:
    pass
