Source code for pyrsistent_extras._psequence

from __future__ import annotations
from collections.abc import Sequence, Hashable, MutableSequence
from typing import TypeVar, Tuple

import os
import platform
import builtins

from .._util import sphinx_build, try_c_ext

use_c_ext = False
# Use the C extension as underlying implementation if it is available
if try_c_ext: # pragma: no cover
	try:
		from ._c_ext import PSequence, Evolver # type: ignore
		use_c_ext = True
	except ImportError as err:
		import warnings
		warnings.warn('failed to import C extension for PSequence', ImportWarning)

if not use_c_ext:
	from ._python import PSequence, Evolver

T = TypeVar('T')

Sequence.register(PSequence)
Hashable.register(PSequence)
MutableSequence.register(Evolver)

psequence = PSequence._fromitems

[docs]def sq(*elements:T) -> PSequence[T]: ''' Shorthand for :func:`psequence` >>> sq(1,2,3,4) psequence([1, 2, 3, 4]) ''' return psequence(elements)
__all__: Tuple[str, ...] = ('sq', 'psequence', 'PSequence') if sphinx_build: __all__ += ('Evolver',)