hunterMakesPy 0.5.0__tar.gz → 0.5.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {huntermakespy-0.5.0/hunterMakesPy.egg-info → huntermakespy-0.5.2}/PKG-INFO +2 -2
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/dicttoolz.c +13 -13
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/dicttoolz.pyx +12 -12
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/recipes.pyi +20 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/dicttoolz.py +56 -49
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/functoolz.py +28 -31
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/itertoolz.py +43 -43
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/dataStructures.py +54 -74
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/semiotics.py +76 -99
- {huntermakespy-0.5.0 → huntermakespy-0.5.2/hunterMakesPy.egg-info}/PKG-INFO +2 -2
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/pyproject.toml +2 -2
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/LICENSE +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/README.md +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/Notice_of_Copyright.txt +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/__init__.pxd +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/__init__.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/__init__.pyi +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/_signatures.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/_signatures.pyi +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/cpython.pxd +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/curried/__init__.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/curried/exceptions.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/curried/exceptions.pyi +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/curried/operator.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/dicttoolz.pxd +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/dicttoolz.pyi +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/functoolz.c +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/functoolz.pxd +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/functoolz.pyi +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/functoolz.pyx +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/itertoolz.c +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/itertoolz.pxd +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/itertoolz.pyi +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/itertoolz.pyx +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/py.typed +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/recipes.c +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/recipes.pxd +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/recipes.pyx +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/__init__.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/dev_skip_test.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_curried.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_curried_toolzlike.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_dev_skip_test.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_dicttoolz.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_docstrings.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_doctests.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_embedded_sigs.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_functoolz.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_inspect_args.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_itertoolz.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_none_safe.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_recipes.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_serialization.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_signatures.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_stubs.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_tlz.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/tests/test_utils.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/utils.c +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/utils.pxd +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/utils.pyi +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_cytoolz/utils.pyx +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_tlz/__init__.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_tlz/_build_tlz.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/Notice_of_Copyright.txt +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/__init__.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/__init__.pyi +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/_signatures.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/curried/__init__.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/curried/__init__.pyi +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/curried/exceptions.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/curried/exceptions.pyi +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/curried/operator.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/curried/operator.pyi +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/functoolz.pyi +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/itertoolz.pyi +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/py.typed +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/recipes.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/recipes.pyi +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/sandbox/__init__.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/sandbox/__init__.pyi +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/sandbox/core.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/sandbox/core.pyi +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/sandbox/parallel.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/sandbox/parallel.pyi +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/sandbox/tests/__init__.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/sandbox/tests/test_core.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/sandbox/tests/test_parallel.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/__init__.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/test_curried.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/test_curried_doctests.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/test_dicttoolz.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/test_functoolz.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/test_inspect_args.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/test_itertoolz.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/test_package.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/test_recipes.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/test_serialization.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/test_signatures.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/test_tlz.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/tests/test_utils.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/utils.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/humpy_toolz/utils.pyi +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/__init__.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/_theSSOT.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/coping.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/filesystemToolkit.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/parseParameters.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/py.typed +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/tests/__init__.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/tests/conftest.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/tests/test_coping.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/tests/test_dataStructures.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/tests/test_filesystemToolkit.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/tests/test_parseParameters.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/tests/test_theTypes.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/theTypes.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy/theTypesCallableFunction.py +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy.egg-info/SOURCES.txt +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy.egg-info/dependency_links.txt +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy.egg-info/requires.txt +1 -1
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/hunterMakesPy.egg-info/top_level.txt +0 -0
- {huntermakespy-0.5.0 → huntermakespy-0.5.2}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hunterMakesPy
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.2
|
|
4
4
|
Summary: Easy Python functions making making functional Python functions easier.
|
|
5
5
|
Author-email: Hunter Hogan <HunterHogan@pm.me>
|
|
6
6
|
License-Expression: CC-BY-NC-4.0
|
|
@@ -38,10 +38,10 @@ Requires-Dist: typing_extensions>=4.10.0
|
|
|
38
38
|
Provides-Extra: development
|
|
39
39
|
Requires-Dist: astToolkit; extra == "development"
|
|
40
40
|
Requires-Dist: setuptools>=62.3; extra == "development"
|
|
41
|
+
Requires-Dist: pytest-cov; extra == "development"
|
|
41
42
|
Provides-Extra: testing
|
|
42
43
|
Requires-Dist: cython; extra == "testing"
|
|
43
44
|
Requires-Dist: pytest; extra == "testing"
|
|
44
|
-
Requires-Dist: pytest-cov; extra == "testing"
|
|
45
45
|
Requires-Dist: pytest-xdist; extra == "testing"
|
|
46
46
|
Dynamic: license-file
|
|
47
47
|
|
|
@@ -9741,7 +9741,7 @@ PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
|
|
|
9741
9741
|
PyObject *__pyx_args, PyObject *__pyx_kwds
|
|
9742
9742
|
#endif
|
|
9743
9743
|
); /*proto*/
|
|
9744
|
-
PyDoc_STRVAR(__pyx_doc_13humpy_cytoolz_9dicttoolz_24get_in, "get_in(keys, coll, default=None, no_default=False)\n\nget_in(keys: collections.abc.Sequence[K], coll: humpy_toolz.dicttoolz.SupportsGetItem[K, V], default: Optional[V] = None, no_default: bool = False) -> Optional[V]\n\nRetrieve a value from a potentially nested `coll` (***coll***ection) using a `Sequence` of `keys`.\n\
|
|
9744
|
+
PyDoc_STRVAR(__pyx_doc_13humpy_cytoolz_9dicttoolz_24get_in, "get_in(keys, coll, default=None, no_default=False)\n\nget_in(keys: collections.abc.Sequence[K], coll: humpy_toolz.dicttoolz.SupportsGetItem[K, V], default: Optional[V] = None, no_default: bool = False) -> Optional[V]\n\nRetrieve a value from a potentially nested `coll` (***coll***ection) using a `Sequence` of `keys`.\n\nYou can use `get_in` to navigate into a nested `coll` (***coll***ection) by following a\n`Sequence` of `keys`. `get_in` applies each key in `keys` sequentially using\n`operator.getitem`[1].\n\nIf the desired key does not exist, `get_in` will `raise` an `Exception` or `return` `default`\ndepending on the parameter `no_default`. If `no_default` is `False`, which is the default,\n`get_in` will `return` `default`. If `no_default` is `True`, `get_in` will `raise` an\n`Exception`.\n\nParameters\n----------\nkeys : Sequence[K]\n `Sequence` of keys that describes the path to traverse in `coll`.\ncoll : SupportsGetItem[K, V]\n Python `object` to traverse. `get_in` uses `operator.getitem`[1], so the nested objects in\n `coll` can be nested o any type that works with `operator.getitem`, such as a `dict` or\n `list`.\ndefault : V | None = None\n Value to return when the path in `keys` does not exist in `coll`.\nno_default : bool = False\n When `True`, `raise` `KeyError`, `IndexError`, or `TypeError` instead of returning `default`.\n\nReturns\n-------\nvalue : V | None\n The value at the nested path in `coll`, or `default` if the path does not exist.\n\nRaises\n------\nKeyError\n When `no_default` is `True` and a key is missing from a mapping.\nIndexError\n When `no_default` is `True` and an index is out of range.\nTypeError\n When `no_default` is `True` and a key type is incompatible with `coll`.\n\nSee Also\n--------\nitertoolz.get : Retrieve a value or values from a collection.\noperator.getitem : Return the value at a given key in a collection.\nassoc_in : Create a new `Mapping` from `d` wi""th a value at a nested path.\nupdate_in : Apply a `Callable` to a value at a nested path in a `Mapping`.\n\nExamples\n--------\n>>> transaction = {'name': 'Alice',\n... 'purchase': {'items': ['Apple', 'Orange'],\n... 'costs': [0.50, 1.25]},\n... 'credit card': '5555-1234-1234-1234'}\n>>> get_in(['purchase', 'items', 0], transaction)\n'Apple'\n>>> get_in(['name'], transaction)\n'Alice'\n>>> get_in(['purchase', 'total'], transaction)\n>>> get_in(['purchase', 'items', 'apple'], transaction)\n>>> get_in(['purchase', 'items', 10], transaction)\n>>> get_in(['purchase', 'total'], transaction, 0)\n0\n>>> get_in(['y'], {}, no_default=True)\nTraceback (most recent call last):\n ...\nKeyError: 'y'\n\nReferences\n----------\n[1] Python `operator` module\n https://docs.python.org/3/library/operator.html#operator.getitem");
|
|
9745
9745
|
static PyMethodDef __pyx_mdef_13humpy_cytoolz_9dicttoolz_25get_in = {"get_in", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13humpy_cytoolz_9dicttoolz_25get_in, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13humpy_cytoolz_9dicttoolz_24get_in};
|
|
9746
9746
|
static PyObject *__pyx_pw_13humpy_cytoolz_9dicttoolz_25get_in(PyObject *__pyx_self,
|
|
9747
9747
|
#if CYTHON_METH_FASTCALL
|
|
@@ -11202,33 +11202,33 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) {
|
|
|
11202
11202
|
static int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate) {
|
|
11203
11203
|
CYTHON_UNUSED_VAR(__pyx_mstate);
|
|
11204
11204
|
{
|
|
11205
|
-
const struct { const unsigned int length: 12; } index[] = {{46},{1},{1},{1067},{1651},{19},{16},{7},{1774},{17},{6},{2},{
|
|
11206
|
-
#if (CYTHON_COMPRESS_STRINGS) == 3 && __PYX_LIMITED_VERSION_HEX >= 0x030e0000 /* compression: zstd (
|
|
11207
|
-
const char* const cstring = "(\265/\375`\306j\345\252\000\212z\214\030F\020\2576\007\000\000 Q\250B\001\025 \024P\001\220(\024\004 \020\2431\353o[J\364\026\331\376I\333\226BV.\337\r\344\377\343\201\374\007\226\3772\355\341\025\243\327\247\363\2202\272!\243h\217\344\r\000\0330\232\r[\001[\001p\001\244\376|m\t\244\277\342\373w\251\275\334\243\370\037\027\243\234\350\362nq\337\327\037um\235\226\352kJw}1\377\276\366\276\311\222\234\2028\264.]G\030\314c\226w\376\373$?)\351h;\262\232\216\233\272\210\363\310[PD\344\313\253\350k;\353\n\305]\002)3\315\237\rAB@H\031o\343\246A\\A@Bz\334\273\364!Y\261\350\036.\355r\304\203\367\363\217\270/$D\206\363P\214ue\234k\030\305\\\223\211q\013\026,|8\212\364\244!D\250\216%D\0227\223\373\263\326\256\037\244\341\370\3313v\275\363\353k7-m\267\036\314$V\261,\017y\265\256\017\353\322\371\367\2134\323\021O\272\264\004^\327\217\353vI\266^\317\272\312\3573\350e\246\265z^\216x{\346\341\341\321q\317\363\327\240\223\030\305\346U\353\236\347\245ma\274\205\023y\236\303\374u\352\277\351g\023\353\272,|x\266A[\235\304[6\251\265\210D\037~4\014\251I\231\361\006\351\3105\026\017=\031R\223\207\264\026\026\327PD\244k\307\221\202\330\300\217n\372b\033\206\030\364P\355\200Xkza\303d\270\030\314\367}\221$e\3525c\230\362]\274\376\006\177<\375%\375R\337\230\344YG\306\023\023\2765\026;\356\002\322\357A\232WHJ\017G1\353\312<\"L$\344\303}\200j\246\240o[eZ@\237\215s\315\003\332<[c\020k\301D<&zMK`&G\314\267m\263.\r{\320\206%\330\213\364b1T\357\215n\2357\2117\375\261<}\275'\031\347\254\301s\026\026\036z\232\222\344\006I\377\017k\327\366\375\234I\320\304D\363g3\250\277VjI\332\322\374\341=\231W<\317s\255mmO?:\361m\313\330\263\256P[\027\014\036mJ\262&z=\322\2630\244v\337\337xt\372:\244\033\276\016_\327\236E\024\216\"<DG_\305\337'\3739\350\235\3618\222*\333\212\020\343\335\225\243H\226<\324\001I\3673\t\"\022l\025]\237x\003?\311\224'[i\376\361\343C\353\007\377^\262Zl\242\256\341}\367\223\243(z\326\036\334\3740?2\021\322\215\365[\322\326\216a\266\337\177\230\375\237\353\327\341gp1cRX\002\343\257\361\370""\340\351\265\370\333\372\265t_\014>\211\372x\327\3178\264\3723E\261\256\253\271u\331\372&,~F\361\320\266f#\236\014\004\212\340\177m\330\361\017\213\221\371|D\377\246\267\231R\247^\206\343XBb\035\226\370\277\312\305\232~;\014]\206S9\242\353\262\t! \021P\004\rz[\223\t\023,,\023\270\354\343\221\3010\006\231~\014H4n\305\n\017\347\020\300K\363mAW\350\272m\257\005CjM\325\273\356s\3279\276\031h\204\333:\333\021\347\361\310|8M$\365V\037\264\256kD\257Kk\234A\352\227v\321\362\273\302\221I\024\362\271\336DK\037\256\313\265+\223\3010\327d0\214v\326\265u\306\033\256\355Mw\263Wh5\036\261G}s\241\373\3324\274/\352L_{W\376\272?\324*>\354_\005\241=:O\312/f#\023>\037\305\264\37408\334ZD-\036\320G\024\206\366\323\366Z\226\222\254\326d5\324\213G\3759k\272\206\226\374\374\303\311C'\247\365\023i\250\307G\331\262E\361\214\210d\022@!!\0177\342\004E\005\202\207v\003\367L\253\237=\030CHW\273/\211A\360\013\311\021\217\241\025\353\"q}\261z^\213\t\327>\200\227\034u> \017\211\270&\342!N\304+\270\307IH\374\343\017\334\205\304M\256\271t\252\035\341\ru\253\237\267&E\315\255\313f<\362FQC\326\331j\r\337\226z+CM\342\277T\264\273\374</G\332n\252]gK\307\017\215\334\237\307N\306\211\200\362\357\320\216*H\tf!\023F\032x\310\272B\331\3264\274\017~\016\034\027*fRf \2446\234\007\006l8*jf:+\347\211\231\221TvvL\216\257\246\343Eh\243\332\320X\245X\003,j:0/\r\215\214M\306J\rK\tU\t\022\025\311F\3251#!\305r\226\234\005jM\312\314\203\215*\345\204`^\250\0301(J\363\222\262a\016\310X\275\230&f\007\324\006\207\246\300I \203\23204\034'\347T`Z\0334\034)\214cc\305I\275\234\n\002\250\002h\254:N\t&\001\215\025\207\206J\206\t\032\016\323Z\275\244h\312A\252\"81\223\200\251\306\353T\235\007\225\007\016\245\301Y\225\230\234\311\201\246\344\3340\220\221`C\265! D\r\205\261a\243z9\005\010\340\234/\346\003\363\312Xq\270XiQ\322\202\234\2413\036R\033\251\014'\203S\233\002L6\034\257\246#\265\340\271S\343\374h\200\260\206\203aBS\245\263d\226P)(\000\032\253\027j\242\2505\03500lT\034s\000g\325a\226@\225\24062V)3'R\246\363d\2220\021\230+(""\000\031\253\216\024G*\302\331q\2260K\314\003&\307|A\t\340\2548\263\303\274N\3203\345lpr\234)P\0008\253\024\223\204\n\300\241\341N\004\032\033\316\250\206{Aa\243\332l6\233\356WX\255\273k7\231\207\217v\007n2\017\237\320\205p\335\036\261V\0027\035\273\321\272\270k\035\017\027Q\216\350\272Qx\372\027p\304\343\355:M\312\024\306E\203[g\273m;m\273\255\333z\323ndk\335]\027\352\r[\360\226\232v\335>}\210\206\276\250\223\032B\010\025\232\021\021\021I\222$\303\001s` 0$&\236\016\007\004\343\026\037\023sa%4E\345P\206C@\206(B\020!\206\020\242\004\204\020CdDjHF\365j\002\006\221\314KL\026\034Z\262:\n\217\tQY\013\216t\217\317\000\317\361\031\252\264S\006h\"\372\363\245Y4\365I\210\021\255]'\314I\016ZP\204\315\226\322e\036\022\250bB+w\212\357\022\271H\376\rVV\333pq/r\315\251\231\001w\034\254\013:\275\332\t\224\024\2255\234\332jU\001,j\321\301\214'\016\032\212j>\344\024\315)\374\356\010&\324\312L\010\002\221\273\204i\215^\0279\334\010\376Z_(GV\000?\311\014\n\300&e/\177[@R\022\321JP\315\034\222n\362\272\326\200\311\254e\267^5z0\331\tC\222x\366\001\344\243\203/\323\354\214\325\243\222A\3354\246\371(\272\264\020\017\017x\252=\003\007\235@\245\257t\021\214)Qt\024ZJ\341]\346\351\207\253\326Y\331wX\274s\323c\213\300\\\202\251B]\0214\254#@v\361@\026px`\031*D\250\373\360\023\241\001\310w\335CZ\214\263J\323\224\261\271f\242\365\306\224\262\204\004\273?\265\273 %\004>s\240\032\276p\177\026\222D)\203\005\275_B~\313A\277A\274\317\216|\306jk\031a\307\246h2\272\025\240\251\332\217\335\212\200\261}\025&\354\372\213\374\373,\007+.\215\372!3\356?\251\007(\316\220\2053\016\277r\304/\2600\235\3466E\271\222\344\352\002_\014\217\340\223\240\217g\013\037\330*\222v\357aqoH\247\20496\240(\217\210\003\031\357\014\023\273\205\220\n{\335;\231\244\205\356\230\260>\352\177\020\215\004_\306#\373\244zR\226\315({\013\336#\320C\003\225\t\374\2222D\221\252z\233EwL\252J}\245|[\007iH\230\023\333\034*\266\310\355\002s\320\346\342\232\215\010#D\320y\010\316d\336\342\243U\3160\200\342\000\313R\324\000\006\034.KAD\037\341""\032\314\321S\222\016@R\021\307\024\333M\372\322x\010bmh\230\360\300\310\264 \350\022\204#\305\t)zKs\013a\262\210\030\256+\357\207)\244\2120\366O\214\272\352\264\224\343\330\023\022V\325\246\362\005\327\022B\013\266\303U\205\025\2535\204\3203$\253\250\250J\315^\370\345\n\001\n/\343\262k\345\026\321S\026\002\241\355\256\275\004z\240\020$\214\314M\310\310i7\020\014\251$$\306?\024*d\036s\024\252u\211[\344\244\303\343\232vD\241\233\234r@\202\250\010YK\360{\303\017B~\0241I\212\026!\316\336\007\342f\305@\212@\010\341p\315\246\335z\036q\025'\031iz\020ib\355\314R\340 k\316\336\251&\240{\200A\024\006\320UP\026\004\222,\235\026D\325\023k\215\004\027\014\177\250MAp\302\232\310~\031\362\305i\305\177\304\005N\234\001\250\246\030\000\261\315@\312\361\320b\215\246\244\205\010\362\014\330u\230\305\033h\210s&AiE]v4x\304\2651\021\275\255J\320\177B,\267\272\302\010q\021\372\362\346h\211D\007n\013\260[\343\213\016\241\206_\031\350\342\020}\037\231\010]\t\306]\265\365H\256\217+\026Q\264\215J\252\3740\225COM?\203\021\300\303>\222\273\265\307\374\245e\254\312\252\341\342\303_\345\264#P\\\2718\217\324\375\371\rE\321\356\346\034\345\340,W\256-`\324d\307\270\376\253TD,\276*\t\234\312\031'\277\303\265\320\001\303hF\216\014\235\020\222A\371\023\233\023h,=\335\251\206\020\270\251@\310\342H\310\245\003\374\373\020\200\265G7.]\350\337\273\243\273w\333\364x\177\336\3517,\351X\365\235\212Q\n)\002\254\271\031\013\375\363\343\337S\343\203\2324n\241\005hm.j\024\361d\332\203\005\253\027\236\214\343\232\r\341\303oU\340\264\025zyJ){\007\370l:\030T\220/x\214\302\t\314\347Ir\351\020\317L\nQg\263A\300}\033;-\277v\367=\310\256\223\351\273\302\355\374\205\364Y|\004\2474SlB/\346\274\027k\255\253\230\036\344A.\310nD_\317\205r\312Ztr\001)\031H\000\347\331\325s\007\307\215K\2613\235\207\325\340\346\306\017<.\017\277\253pcs\030\216$\276{\371M\322&\3334\363t~(\275\374\234\\#\257\234\204\325\325\030\331Y\346\212\260\206\335\255\361\3549\257F\272\360\360\2007v!\304\0355\010\233is\0013GjGi\027pp\013\225\033\205)\035""\036,\325\242\374\272\347\306\300-\206\363\372\032\211\226\301\242.\245N.S\236\231\2040\275RP\322$z\225\033\027\\O#\255H\303/\324\021\326a'\213\312D\022\200\275\244\376\031b$\270\236\">\trI{v\251\244\363\007Oq\252\201\242\247\274\002NI\256\261\274\323{\216\036\236\322d\035\236\276\262\337\214\300\340^<'\341\200#\032\316_\344w}\216!J\326\232\233S\304\262\240P\332\223\324\206\032\277K\3634-\tiD)\311\205\360\313\205\313\370.x\023\266\022p\003\266\337\007S\n/f\274\325\215o<\220\030\217Z\322\212A\374\236\027\220\r\253{v}mj\366OA&V\320\230\026p0\302\275=;\036\201J\365Y[\214\365\243\tw\217\021\363\356<l\216\223\326g\024.O\230\260\201;\341\347\225%\274I\022\344\310K\312x\372V\327!\334O\021\301\306\\\363d\224)\034\247\300\245\007\177?\230\\\263\020\212\311\260m\355\323\316N\366N\364\366\304\257}\016\243(\007{\235$\364\010\304\202\213\320\025x\307\177\222\313\024\260\305\227\350'h\211!\204\032\256u\314\247\036HG0\346K\030\243\264<\264@\022j\206\007\214\210\036$\336\037\220|\272sf1\037\321\363n\265@\303\332\n\347\207\235\212\n\350\220t{\212\002\270KI\275\273p\366\033\346\017\234[\306\311t\030T\016J+\213\212\236D,\201B\n\331\333\025G\327Y\003\330\337\t\254\323\314p\000\026\201x\253Vo\002\333\277\245t\200m\213\256+\341\206\316\357\370\251\266\221\260$\274\234\366\026#\232\000\347\"\340\302\220\266W~\346A\303\357=\253V\343\327\302\376\335\022\321\222\325[\377\202\302hVS\227[aQ\007\301\036\217\\s\247\305\263h)t5Q\326\274\335SH\033*\336d\302y\003v6K\264\373p\335\2612UH\262\226\222\263\321\252\307\343\244g\3250^\255\270\325)z\020O\3735\006t\027T\365+V\226\262\323\330{\367\272\024\247\302\337\300\020\3300\262\000O\345\024\345u\016\036g\345k\242\240\310lA\224\375PB\t:k\013\376[\260{\311\356\000\275\243?\337\307\351\026\375\033l}e\263\023\006\240\004\335\255\211$\373fW\244N\301\013\217\201u\230l5(\360,i\324\244\303=\260-\236\204\365\372w\235n\034^\350H\341\265h\263LK*\347(\027.\261F\344\216\022\230}|\276\3020$^\261\3224\325\223&\2517p\000\270!vK[t\010h\033\350\221\371\226Q!efQ\203\307""\236\257\233YO\317\353O\252\275\355\267\210\267A\214\254\313\302Q=<^\243 \006\257\201\230\316r\206\267\322\272\350+a\233\260v\212\257\221\261V\321%\257\241\307\330w8\360S\254\240\260g\315\345\001\326H\313\264p\254\230\000\341\356\002\373\247\230\350\227\201\246\234\025\352>\002r\034\246@\223\370O\316}\r\037\361UK\000\223\300\2752}\002\313\\\033\356\225\252\265\304\024`\253M\177\333Abk\037\266\260Z\034\375+1\240\260t\\CD<[qC\007\2333\370-N\225\024\253\343\n]\300\235H\004\231(^LG\365\262\260\242\240\221\352\033|\226\315\300\221\2111\227\004\276\270\244\257\217N\205\331\355&\231\353>Tt^ZI\342\352)\357\0018q\235\3062\346\261\"\230\006\271.\274|\214\224g\367\227\212\037\243y\315\006v\013O\232\225\261\244\224q\222\023B\361\355\255D].\255\233[\030-p0\244\300K\303\267\346T\001\270{>\r\264\234c>d\033\326\363A\242\031\202H\031\227\002\223)r`bFo.\316)s.NMvj\363?6)\t\267\307\277\324\260<6-s\313\017e\373\252\301\334\007\234\224(\204\334Z\311Z'\311Jsa\232\352\230F)\205k\232\341\340\334:\211\364\235\271\2738+8\342\244|\022\353\3518\376\026Ps\240d\023j\332<\323\256}#aKN\340\226\025<\2548\216\271cDf\216\227\365w\303\265Q\323\002)\233\215g\2740=\370\2613pM\205\212\220\342\236%&6e\262\031\027hV\313\211^\313\305\316\"J\276^j\257\023L\356\225\036\200\033:\242V\006{Q\236\221\237D\271>{\016rVuV?r\265\213\254\233\177\270\001\242\333\205\336\253\361\334\322\223\3039h\237\34535\226\354\306\262\217\2369\314\362`f\346B\300\211\204\301\227Xp\256%\\T\220\377^\241\320\021\n\330N\241\033\2215\241\210\2740\311\225\237Z\221\216\260b\224\323\306\002\315X\342\022bmc\236\"-\202C\014\367p\004c\027\275\217O\3149\021\374\226aBa\233\233u\2600\027V\005\"4\342\026\236X\026,\006\310\257U\265m\356\300\013\363\230CtWM\0207K\266\304\202q\244\266\253\352\004\360\335\347q\363\352\033\225b\305\302\356t\304\274\206~\214#\023\341\244\321\231\343\371\334\346K\273\307\3134\023\001\323V\267\311\212\251\300\222\206\272\270.\213)\316yt\332\272&\235-\311V4\221\026\237\251\255\263\230\272 +\251\336\346\004\220\000\364\006""\330|\212\216\255VE\217\372\277\377\203\377\217,\337\300\275\2249A\023\266X5\353\\\203E\340\334\220A\211\200\311\211\230\247\037\r\243Q\262\347\34602\244Y\340\371\007\025\023\331\243\204o\321\314k7\354\024\016\232\374\317\000\223\350\254`%U\306\217\350\224 \016D\364\357y5\332\327\367BB\302k\337\"*S\327\327.\312\025\366{x\316r\276\2640\036\210\245\327n y7\332\240\177\212\030\356\221\017Nn\273y\014#\357\2000\320+%\306^\2672\363?!\013(_e\021\373\212\212=WV\262\223\21200Y\213U\312`P/\014A!\"\372'r\3314\310\363\312\023\240\223\324\221\235~Xr\215\013\rH\273\243\331\322s\347\372@\277\250\200Z\235P\206i(2\264X\2160_\037\033\275sHO\217\342\001\0216\304\220\300m\210-\335\211/w\215;\201+o\002>\364\t6T\272\235\257\017* \263\376\312\244e\\\254\242\345\250\324:,\360dg\340${\304\373B\260\212b+\211\202!4V\342\255\221\t\014\014\027Qf|\214\313+`G\231\252\026\263\025\205}\005\277\221xZe\326q|\251\017\313\304Pc\262\230\305\266I\n\025\256\023\034k[\373\365\220,4i\265\337U\212k=\225\031\017*\226}\352VWM\\\007\232\275\315\310\256\332\316\340.;\275,!n\315U\222\204\"-\256\232\225\373\2574'\3562\342;F\020R\277\214K\332_\276Q\340\360\307f\303\241'\262\373w4\214\216\237\227\356\274\246\003BR\030\2532\024\254Q\215t \254\262\211\322\262$j\212oR\026\265IpTSR\347\307\264W\302r\010K\202Yn\256\241\266\273\330\317\266I\354l|\273v\224S\312\312\220j\037\260\023}NYe9oXAT?\330\2742\307\361GN\266\t\213\272\033\247W\203\322\322|x\034\242\212:\362\241Q\023\000F\003\365\257\353\312\"\371\2545lQ\323\247\324\027\036\231o\003\032\034\227%\235\360\317\230\225\336\310\331DF\200\036\245\037\265\372.\311-w\341\304h`\372\205\234\206C\210\306\0276\252f\334}NI\277\362U)\367Y\220I\005e\210Cc\253\330\376\203F\254\216\n\275^4\257\207z l%\331\267'O\320\223\035\037\033\247\250:\255\036Ju\244\276\306\204^R\310\225\324\306\177\344\316/\004\366>\247C\346}\245\2657CI\313\235\233\350\236\266\371m\315p\013\2636C\237\210op\005\237\243\nA\256\021q3\333 z\210\315a\215\307\312~\231\226\372UVX<\377\364\301\270\003n\232|\207\344\001X""\242\250j`\340\304\300O\0339\024\177O\216\3404\263\360\022\025\303\336?\031 1\343&!YL\212\231x\261\255\273W#\003_\3630c\033\274\220\243\365me1\336\234ra\211\353\244?\335[1\263|\245\331s4\237\346?\263\340\n\3018\340\305\311\340\230\330\267\223\310\302\024\253\276.V\241\005L\204\265\3132\366YYTv\366\225\325`\005A\032I\027,O\001\343\001[C)\251\213\343@\202\025de0\362{[\003\211_\217\207\3144c\214\337\220\275\002\375E5\246\204\205\313/\3720\303L\205HQ\377j\326\334\326M\217\270\326\202$E\206QQP\264\0235yh\006\354\237\362\2071i\307\027\255F\314c#\312\350\271\204\347\362\313j\224:#X\204\t\207[c\261\024P\2143\234x\0141\243(\257>L\010\024\361\242ym\366\344\273!\205y\330\365\231\266\306k\314\227\365\322\370\311\273\301\024\376g\016s\264\007f~\005U\010\t;^\276\005h\327M\354t\024\260)I\200\324\230\364\267\377D\356\355p\201A\275/}(\017\365 \336N1\n\020,n\3701Ru\340\226\2539)\220\321<\322#\373q\262\266u\026Y*p\010\020\311x\324\2350Vab\212rH\033Y5\216\341Q\245RB\017\323De\376\377\311Z:K5\000\223\226\222\205\356\036-\353[\374\037\020\221AM\025>\367\253\222\270V\325\177\242W\261a\242\2254\320\360\023\033g\027\027\341\t\2320\372D\332\201?\214\365F\240\254\324<\344t\375\215\370\013$\211\341\026tL\346 $\224+\317\276\200\"\273\270\003\327\317c\334iY3\311R\\\017=ZjD\3321js]\340\200\252^\370\023>\204\003\211n\266\031!\023J\246\365\r\234\206z\261\023pQ\363\377\310\036\344\035r2\276\275\t\222\363$\302\024\213\023\244\010]\353\014\240N\2662\316\301\325\326\374\325\300\232\350\032\272\340E2\307b48\235\230\201,\206E\213P\252Cr~\271Y\032\311\334\235e\275\312:\340]\332i\340\351\006";
|
|
11208
|
-
PyObject *data = __Pyx_DecompressString(cstring,
|
|
11205
|
+
const struct { const unsigned int length: 12; } index[] = {{46},{1},{1},{1067},{1651},{19},{16},{7},{1774},{17},{6},{2},{2745},{17},{27},{9},{21},{1953},{1789},{18},{20},{1765},{1719},{17},{1590},{15},{1909},{21},{50},{14},{2093},{20},{20},{1779},{1685},{17},{7},{20},{3},{7},{5},{8},{18},{17},{18},{4},{11},{1},{7},{5},{17},{6},{7},{6},{4},{8},{6},{12},{23},{13},{2},{10},{7},{5},{13},{31},{33},{3},{9},{6},{4},{6},{8},{5},{10},{10},{8},{4},{10},{3},{7},{9},{12},{11},{12},{10},{17},{13},{4},{12},{10},{12},{19},{8},{6},{9},{9},{6},{5},{6},{2038},{99},{97},{107},{57},{57},{205},{170},{9},{59},{52},{90},{90},{24}};
|
|
11206
|
+
#if (CYTHON_COMPRESS_STRINGS) == 3 && __PYX_LIMITED_VERSION_HEX >= 0x030e0000 /* compression: zstd (5540 bytes) */
|
|
11207
|
+
const char* const cstring = "(\265/\375`+k\325\254\000z{\264\030F\020\2576\007\000\000 QH!\202\212\020\n\250\000H\024\n\002\020\210\321\230\365\267-%z\213\234\376H\333\226BV.\337\r\344\377\343\201\374\017.\3752\355\341\025\021\263\357wO\272?\223Q\264G\362\006\200\r\030\315\006]\001]\001r\001XOo[Q\1776}\363Y|\377\036\265\217;\004\377\343\342\024\024=\336\r\356\373\332\233\256\253O\023}=\347\246\017\346\337\267\336?\325\222\317\017[\353\322\224\204\277\034by\347\277_r\024\223\217\256\244\252g\270\247\2038\223\334%e$\302\374\212\276\225\263.\013n\023\310\230g\366\252\005\021\001)e\254\205\232\3760\005\001\021\351po\323[\221b\320;l\332\343\210\377\356\347'm\236\210\310\314\346\"\031\353\3026\317<\323\343\331\214\214[\260`\341m\010N\324I\010\021\rK\200$n\026\367g\255]\3777m\370\3313v\275\363\353[\3674m\267\376\313\"^\261,\0279\265\256\017\353\322\371\367\2033\317\021_\272\323\364]\327\217\251vK\225\336\316\272F\357\363\347c\236\224v>\206x;\346\341\341\361\361\256\363\327\237\213\030\205\326\321\352]\347\246]c\334e\033u\235\307\374\365\351\277\347\347\014\326uY\370pl\177\225z\211\273l1s\031\215\336z\323\332\231a\314x\177\223\344Y\213\213^\264\363\344\242\314\245\305\263\224Q\351\3260\234 \264\317\233\232\276\270Z\213?\027\321\317\207\265\236\0274\317\314&\343\361}\037\024Ky:\3158f\374\027\247\277\277\017Q\177E\277\3237.9\366\231\001\311\004\366\376\367\331\267\306\340\307_\276\351\37573K\311\010\332\246\307\2720\320\3103\"\022\262}\204h\236\237\357\372\315\270\204B\264\3153PH\003m\215?\217\213G\304{F\257\247\351\313b\350qM\323<\377Uk\342yp^\217\314\324[\233[\347\272g\335\"\256~It>\352\351E\3118\347\223\316[X\270\325S\324/\037\216\036\326\236i\361{\025\036\316\177\232\331\253\371\263\256\356\305\314\222\351Z\263\256\013\357\207]\347'\257\353\2646\333\272\242>W\375\224\204\242el\255+\006\223\366,\325\323\274\235\350\230\265\263\356\373\033\207>_\333\271\301\343\360\365\354[F6\024\341\242Iz\n\376F\331\317A\357\214\303P\\\321VX\21477\206\240hr\321\347+\335\307$\214H\250\024t\215\342\r\03453\242*\235\371""\303\217\017\255\377\373{EZ\361iz\206\367\335/\206 \3509{p\363\307<\311\204\235\033\353\257\245\255\035\307\374\307\354\367\\\277\266\257\301\301\214K\326$\306_\343\360?\324k\360w\365[\347\276\370{\022\364\361\246\237\261\255\372\363L\261\256\233\271uU\372'\014~N\361\320\225b$ ,\024\212\340\177\253\375\270\347\221\231\t\t\031\375\237\276\3469}\372h\303\320D\304\332\232\370\377\312\r!8\r\250q\004\307a\023DB#\241\010'z\327\223\t\023--\0236,\0044\343\3610\310\323cP\222m+@\233C\370<\323\370\336\352\373~\316\342\267-\350\n\034\267\353\255\237\235\365D\235\343>s\234\343\213\205H\266\255s%m \320L\310\226\201\242\326\350\177\326u\221\346ui\215\3637\375\312\256\313\222N#\221\220\353O\323\364\341\272<\273\260\031\217\307\263\031\217gr\326\265u\306\033.\355OW\253\227\255\032\207\270\233\256\275\314}\355i\357\203:\317\327\335\225\237\356\267\332\003\241=>_\312\017b$\023B\274\351\311\362\307`\253\271\214\\@\241\220\221\265\325\323\365\326\226Q\244\365TOf\3158\324\237s\246\251\255\242\347\037P.B\371\244\0368\255\016?E\3135\005D2\202I\010\211\210@\333\010\224\224\025\010.\332\r\334\261\214~\006a\014\"M\353\276\"\376>\317\212!\016E,\326%b\372 \355:\027\023\236}\370\256H\372\204\204\\4\342\331\210\213\266\021\257\340 /)\361\020\177\340/%~\362\354\345C+\to\240\032\375\274\265\010fn]\031\223\272\020<q\255\303>\032\245\366\353\250\265\321j\021\377\235`\325\326\265G\257\363\221\244\353\236\332u\2563\374\310\304\3759\374`\333H(\377\266\225DA\306\017\023\231@\322\300E\326%\302\266\236\001\035\027*hTh \2506\224\007\006p:*nh>,\345\t\032\022\025V~H\016\357\246\343\205\210S\263\241\261R\261\006X\223t@^\032\032\031\234\014\226\233\226\0225%JjJ85\0354\022T-\245IY\200\336\250\320<\340\324\250\224\020\310+\025C&5m`T6\310\001\031+\0302\003\331!\265\321\261)P\022\310\230d\214\rG\331)\025\220\326\206\r\207\312\303\261\261\352\250`J\005\001j\002h\254:J\t$\001\215\025\207\306J\206\t\033\016\322Z\301\250\246\312\201\212\"(=$\201\323M\307\325p\036j<l)\215\316\312\204\334H\0166&\345\206\201\214\004\0335""\033\002B\334L\030\033850\245\000\001\235\022\206|@^\031+\016\027,-LZ\2104\223\306\203jC\245\241dPjR@\006N\247\273\351P-\370\255\324(\275\031\300\336l02L\225\2514\221\246\224J\n\200\306\nf\222(\350M\007\014\014\234\232\0169\240\263\352 K\244LR\033\031+\025\232\023\252S\211\"I\220\010H\226\024\200\214U\207\212C\025\241\354(K\220&\344\001\262C\302\244\004tV\033\331A^'f\251R6(9\312\024)\000\235\225\nYJ\005\350\330l%\002\rN\207t\263\275\240\300\251\341p8\034\356WT\255\271[9\230\207\2236\367q0\017\237\300\211l\334\016\361'\232\276=C.\254/\356\331\307\303E\214#8\216dQ\017\363\2058\014qx9N\227\362\214y\321\237\306UnWNWN\343\266\336\223#UJ7\307Y\255\341\372\335QO\216\333\250\017\206\330\250s*B\010\031\232\021\021\021I\222$\303\001s` 0($\237\017\347\363\332\026\0373\203i%0\005\205(\302! C\024!\210\020B\014Q\002B\210!2\"5#\243zj\002\006m\350\013\344H\n\255\255:\377\202\211\253L\027L\214/\237M\310d\000\n\2733+i@o\361Ee4\365-\004\356\226\350'L|\007t\250\315L]\211\240\006\020\252\220\225Uuj(\211G\244w\033*\332j~\334\373\270\346\030\317\200.\007\340B6\257\023\002}E\304\016\357\233\016\237\001M\035\336\230\301\304A\256\204\344\207y\242\365\207\203\215\300n\332\301dp\223\325\235Bo7\232\310\214LH\227r\214\034\211\013\377\244_(\000\233\306\336D\253@\255\244-+E5wHX\211\354\334\007\270XS\221\322\352\371\325\003V\330V\022\\F\221;\207\346\256\2453\266FU,uu\314\202r\273\\!7_}\316|\206\223\213\300\225~\230\"\304\025\001;\236^\272\362\335\344\322\243VmE\331 -\236t\323\026\364\2509\002\264Bg\t\032\325%@\364\3618\031p\364`\343\025\"\324|p8\241\341\311\313\353CZ\304\331J\323\233\261\321g\342\341\306\330\344\275\004\203\001m\273\034\033\202\203\373@;\277r\250/\035\027\2011\013^\276\342\3742_\272\212\260\233\242|\356\324\266\2148\304Ft2-\024@t\355,\273[\345\321\356\021\236\355\250{\377\371,\311X\334\225 \"\211\334\177<\016\2343\310\005\321W\257[b2\330\034\335x\033y\273z\330\305\240\010*\205\313\361\240\260b#%\364z\257\013\367\016u\017\304[\001m\361\330x\240\371\216*\221_h\230\210\325J\310\300""\\\350v\017!\240\336\n\251H\374ex\323'\320\237\352\3434\315[\360\t\201\316\030pL\340\227\264!\352T\375m\036\335\335\365az#\345\2409\330B\302\301\330v\257\214G\264\3340\007W7\351\244R\232 \202{\303T&\303\227\017\255\362\200\241>\016@J\241\036\200\340p9\313\"r\204\201+ge\t*\000\022\3078\24656\302W\216!\210]C\003\205W/\246\005\371\027 \034)&\240\330\333\017[\010\237e\306D\256\344BL!~\304\235?1fA\247\355\017q\234\020k\252\326(\345S-!\256l>\256\352Z\021-C\210S\010\257\262\276\2524\366B\306\254\220\242\360\030\267\376\033\335b\356\261\220zm\227\336\033\324\031\205\004`\304\302\204\360\220v\017\001K\225\204H\376\223R!\2513\004\232Z\027\274\3058==\367f\331\022\272\355\036\352\231\004\025!\334\005~w\373AHv#&Y.\021\202\350\025\255nX|\366\010\2044\016\377iZ2\306\021Wq\322f\246\007\331\346\325\316[H\016\262\350>4\325}\252\2100\210f\276X\205\231V\tI\273\323\202,=\2576Hp\301\024\227\255(\210\314ks\355\227\004_\037(&'t~\366\031\3002E\010\010\003\005`\034\217\026W\224~-\250\n\346\363\202\222\0163B^M\021\314\201\374\315\322\311\262\246\233\350\274XB\335\352}{1\214\345U\207\020B\301\304\321o\216\n\221\350\350\266\200\331jk\370$\236\374:\265\333IT\365cE\004\225h\333\252m\320\334\372[\261\213\213\216\357Xmd\212\016-\325w\246m\000\236BD\356c=6\017\320c0t\207n\022\023*\r\222\320j\020H\213\017\327d|hD\2635\007\212\240\263$\\N\231\314\327\rKN\226z\222\221\341\003k\314\201\037k\325-\354:\035\304\341*;q(\370\030\305\344\004\353S\225\026\2025\025(Y8\262E?\001y\237\267\253=F):\r\227{\312\270{\375<=\036\265t\372%'\034\021\016Z9\n\230D\200\237h+\303?\375\230\211\324\310D&\025Z\270\003*\232W\005\202\030\014{^\002\265\302H\306\233f>><\227\242\236-\016\275t\246\312~\201\301CG\310E6>n\261X\207\331Y\013\"\217\234\030\254\020\325\330\024\003p\307b\007\310\377\344\236T\262\3433\347,\234\321_\254\237\027F\260KS\027q\264b\326z1\250\265\210\357s\036\024\005\231m\364u\323\224\005\245EG\004\220\371\006\272\350\274\242^v\350\326\270z;\1773\320?Nm\334\236\307N\343\027\020NI\014#\220d\271W\337\320\361\344es""\250+>\351\275\360$B\362fUXOC\251\216\223\235\010\251\345n\007\217\322|4\362](\037\274\025\2272\206\324\302\260y\233\327\004fM\355\253\322\200\347J\322j\243Si\300\303\307\332\220\237x\356$\335\316:\207^\203\327\322&\"\244\024\313e\3559z\330\323A\004\325\203Dds\023\251\2119\206\2224s\027\2724\036\266X\352\235\034T2Ir{3\370\247\236\321\344z\216\350Id\221\366\234\246\262\324_\364\265\2514\212\206\3626\\I\362\305\362\346\336-\364v\276&\217P\332}\1778\316\204\010\361\024\207\224\210\350\277\276\324\330\365\005\2068Yonr\305\353\200\302\215Or\031*q\227pi\202$\364\004\255\244\035\352\004\027\222\361\201\345MeK\270\000\351\036\003&5\334\207x\253?\237rBB\037\001\322\252\006\323\233\260\0005\004\300\263\000i\223\316\336\024$z\005\355\264\000CF\350\355\351\3421\252T%\265\345X\035\232H\254\001\261p\027\314\346B\322jG-y\312\204O\331\t6\357@\341\203$O\316P\262\301KhM\037:\374D5X\023\207\234|\230\002\242\352b\272\342w\226\344\332\025\241\374\247\350M\017\255\353\344\354\250\336\236\035\264;\223--\275\237I\302\215p\220]\312\256pw\230'a\257\320]\034C_\222\357\030)/\370\251czz@W\004\233o\030\375'\317\303\023\222A\323+`h\364\260\341=\203\260/\024d\366\373\366\236\327F\021hX\3529Wo\253P\300\223\034l\237\034\300\304\024G\260\207\262x\303\374M'\"\222\221GWU\257\013\261\2124\211\210\201|(\202\252\016G\353L\203\367\247\267N\216\3242\010`\021\276\335\002\207M`G\021)Y\330B\275uE\313d\376\356\204\326v5,\301\313\252\275s\210\326\340\354\002\\\216\3206\307\317\367\327p\244\311\252\245\341\265\371~\267\324\250d5\271\177\177c\304\244\211\312\253\260\242Cf\357#G8Oq\207h\354N\0347k\335\271\252\323\235\212\235\311\241\334\000]6\373 \277\321v\254\351\352\223\254\306\312Y\317\327\0358\201\263&\003^\331d\265\210j(\020\277\336\014\362\010T\177WHJY\360\230\333\022\265\357\367\215\325\002\305p\322\306\036\002\251*\251\362\n\020\204\307\230\224\374\202\036Y[);Sr\023<Y\003\375\330\305\2564\273\036\350-\225\371\266B\267\263\357\t\255/5\177\257\026\351\277\273U\373d\337\354\212\311(x\357Yc\035&\257g\0056'\2016""\371\331\017\334\316 \341\n\375\003I7\016\257\032\244\360[\244Y\2465\355s\224+\227\261>\344\216\222\221}\373L\2670$^1\2734\005E\223\243W\215\000\210L\354\355\267q\210\324\026\323\031\360-\177[\312\334\242\014\210=\225ofh\216\307\034\311\367\350\337$>\203h\205.+\216z\230\266\234B|-V`z\310i\211\022\255HP\002\275\204u\"\036\306\214\365\212-y\035\035c\333\032\3407w\202\242\236u\272\036\340#Y\3442rb\302\355\335\255\330wo\242\304\004\312\305UF\370\330\332\004\307\005\214\304\275\344\274<\374\244^\355\370\341\003\336\313\240\t\370p9p\367\255V\251\361\235\255'\376\316\031\211\250\261\333\n\265\330\343\257\206G7\3518\024@8Kq\360\013P\256\326[|\225,D\307\001qA<i\004\301\241\350\274\216\034W0\024\021\215\274q\203\323\322L82-v\027\370\264\262\252#\243\327\230m\331$t\335\207&N\200!\223\272\372\356\265#\347\251\303\271\256<\336\212\223A\016\013\247\017\211\300\261\263[qbhZ\330e\264\355\223pe+\351q\234\255\004O|\317+\364\3452\352n\013+\013\032\006\t\010\323n\256\371\210\005\224g(\003\2215\237h\337\206\201>z5\333 \262\307\320\2735/C\316f\364\267\004\177;\347\034\324\226\264^\002\313\3702p;\373\243\032\276c\323\322\n\006\3607\300\037=\003]-\033\n9*VE\342I\370\322`\210]]\266Q~\341vi\014\034BgJzQ\356\025\3114\2228\374\236\324q:\353\357\003\3122P\330D(7\033\332\311\306H\236\233\023\326\242\217\307\212_i\356p\225Y\343\262-7\004n;Y\222b\262\n\035\315L\225<@g\364)\007\267\326\330Y\266b\251\230\206\340\227\316\275r\024tM\030I\254\344\261\227\306\313U&1\222\350\340\240\216J\025\010PDb4L\324\363\347\017\007\360\227\010\376\222\001\332\r\353j?\020\214|8 \375\225\010\0325\311>\3136:>\033cy7\301\207F\010[\222[b\032S\201x$\324\372\310\242\303\275\363\231\202\367{-\205\236\206E-\002\352h\224\177\341\345mxj\020r\374\305\024\217\216\032j\026\213\321\306\312'[\r\247\244\246\304Q\014\254\372->*\346vn1BMh\2669\267.\003s\361\241@\360\331=\223\3216\347\345\027>^\265\361\035$\333\265$\r\322\341)\262\356\006f\253z\036\350\324\336Y\305\027q\372<4\277O^Z\254YH\323\247<kP\217;U\244Z\031?\247=?o\210\205Y\374""\317e\371~\231Mi\0058\035\263\004\017\024/\305&^r\316\235\370\256Gg\317\002\216~&e\315\273-Yd+\310m\252\215jX%\220\2701\026\237\007\024\253u\264\307-\017~ \366\275\224/i/\377\220e\204\255.\r\033\327\244*^\220K\205\022\244\001\301\354T\316\352\006\302w\2519/\222\000\nf\377X\364\003\305(5=\376\223\365\030\337\\A\324\360-K\370\241D\263\226 Z\325\000\350\201\264\303N\330\242$\320\225\315\317\246\262\rR\364\013\273\016\246R\360}\222\262\205@\254!\326^ba\305\037\023\362B\357\304\3270\225\214IY\244\214\026\024>Q\364`\3503\263\022\245;\325\352\360a\3064A\027\335k\214\371e\\\225g\266\223\344\333BR\245\356\0064\t\220O\257\337b7\301C\006\221\354`VQ\037\352\247f\344^\000\000\274\202\215]i\200\266\2510k\374\025\242\005\337\200\373\353qb\2014\277\251c\253\213\\\266\r\023-\264\216\220\217!sw\325c\n\277:\321\262\325\013\014x\013\007\210\210\217p}|a\020u\244\312 G\320\304\220\200\272\033\271f\333\217\334\274;\275\376\376l\325\343E\274\307I\322%wx\333?\336\346\301\327A$\277\364\004Yl\343\245d\236byq\306a\227\314\264\200\340\020\256\365\340d\251\253\021\264\242\367\177\273\t! \024\257\265\206\006\277)Y\3778n\313\214\354}\025\034w\362\024\3327\200\260\322\305l\246Ks\301q'\340=\257N:\375\202YD#\254\306\"\206\021\004\032\332\320\\W\005gD\032z\214\360l\270\263\374\002M\226E\341\016w\346\311\322\"\2576\305L\200\014T\324\253\364\351\340\314\256%\341\354\260oV\ta'}>V.s\317l\314)\010\021sl\336\260\034.{u#\t\202\262[4\014\271\344)\037\037\2567J0\261\236FSg\3209\316\250\2273\033<6w\347\226>\002;kDc\327|U\030\222M\2446\353P\243\336\223N\324\365:PlI\247\177\324\035%\334C\320\023\014z3\030%\360\342\312\234\225\214]c\353\232\021\247\314N\206\177\370\220\004\365Y\027\332\337yC\n\306\247\301J\2229\202\232\334\336&\354\362n,\270r\233\206\312\261\342\020oJ\352\037F\005\025 s\270\272KW\254\210\260v\032\026%?\245\001\362\310\3636\210\345\230Y\244\007\353\231^!\216\334Jp\002\240uzz\253\013\221\\\025WK\274\007\"_\343\024,\204\370\271r#\236\307e\303\005\371\347G\025|\273\n\342TGy9L\273J\333\026\350\3042Q""\321\365\324\346-\250\007\301\265$]z\242\004\324\262\366py\212)\257\245\275\0241\344 \272\320\203\205CIs\374\274\334ga\271\330\247\001\316\243\2546Wk\315\312\220\267\006\311\3466\023m~\2332^ah\263\354\263\256C\223\341\003\257\020~\315J73\005\321\353p\0165}\254l\027k\271W%\207U\365\325\002\257\034\213M[w\004\035\200eEU\025\014\315\236p\004\035\207\236{b\205\276\331r/_f\030\340#\016I4\236\020\222\205\211Q\223\0016R\356u.\360\305\003;\266\203\227,Z\026\254\370c\232s,,\206\316\362O\006+kV\355k\366T\343\323\2722\253G\025\270\203\027\031+A\303\373v\322\265\312b\021\253\302\"\210A\020\222\265\203\214\203\366\001\353\341\362x4\210\201\320\234\223\005\257'\007\033\301\317\241<\277\313\032(\343\nf\031\372\036\262-\237\307\007\360\203\030lL)7\364\227M\376\n\024\226n\341\340\203\276\311X\251\304+\250m5+\221\326\315\026\337\371A~kaT\2252yB\010n+hf\367O*\n\243\271Y_\254zf\247\363\310\014]Z\355\032\017j/\235\207\355\305t\205\363c%\t8\306\370.=\206\360S\244W?\"\004\207h\324\3346{~\335f\341\000\354\350,[\303\274\224K\2434x\3445^\312\373\303\016\337\332C\263o\203\302F\216\023/\261\005\031\324\257^\272!\330\255\244\354\327\330\375\355}\"p\323+\310P\037\004~\230\307C\010\203S\026\005\030\353\244\372\201\272\352qCMNd\310\020\217H\300~\006Y\236:\265\226\262\034\202Z3\226\270\223\032\2520\341\2279\327\207\202\3771l\2414\271\377\341\267\250l\377\177\202\245\327\247\246l\222!\266\260\356\0132\315*\327\033\332\216X\260\252}%\027q\326\337\303\237(\025\213\367\006\221\306\006\036n#\037p\013\036\217\0214\220\0302P\004\003\331\250\240\337\216\307M\247\277\331\375\212\314\035:\203\206\310\"\354\206.\311\353&\200\231\367n\310U\372\210;\r\324s2\010\313\243\243K\025I\233F\355\260\213#\200\325K~\342\303/Fr\2666\003\307B\tZ\t\202\323P/p\202\n\265\364Q\303\303\352\220)c\000LHl.JHF0Aw\367$1\324r\222\233\373\357 `(\254Mo\202d\020\007\367\223x\257\340\340\2365\243\262\030RZ\204f\017\325\370\207\201\323\006\316\3357u\016\334\341wi7\372\250\033";
|
|
11208
|
+
PyObject *data = __Pyx_DecompressString(cstring, 5540, 3);
|
|
11209
11209
|
if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error)
|
|
11210
11210
|
const char* const bytes = __Pyx_PyBytes_AsString(data);
|
|
11211
11211
|
#if !CYTHON_ASSUME_SAFE_MACROS
|
|
11212
11212
|
if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) }
|
|
11213
11213
|
#endif
|
|
11214
|
-
#elif (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (
|
|
11215
|
-
const char* const cstring = "BZh91AY&SY\214y\016\265\0004>\177\377\377\376\256\260~\377\377\377\277\377\377\356\377\377\377\376@@@@@@@@@@@@@\000@\000`\035N\337c\347\274\361\352\366:\354\032$(\002{*n\272\333\036\355\334v\346\202\356\336\356\000\343\334\201W,t\034 \024>\216@\350=\003 \000:9\303'f@49\335\326w\303\004\222\024\320\247\2426h\247\264M\032hi\017SOI\246\232\014\200\0004\001\246\203\010zA\352\r\032\003M\222\t\020\232 D\232\023\324&(\332e\036\211\232@\036\240\030\215\000\031\030A\220\007\250\323\0204\365\003F(\365R`\214L\0104\300#\023\020\310b`M4\300\23212a\031\030\201\200 \304\000!JBOT=\020\364M\r\006M\0324\001\240\000\000\320\000\006\200\000\000\001\240\001\022H\246\004iO\324\324\321\240<\325?Ry\023\322h\003\324y\023\3224\017P\007\244\000\000\000z\215\000\000\211\"\004\000@\2314\3205$\374JzzSm(\332A\246A\240h\000\000\000\000\003\322\r\034\344\215\323\212\310=\326\004\2656u\235sVS\242\211\274\351=\357\364j\351z\356\277\\\330u\313\327\3311\tL\220\247^\177_\272\034\326\0309\277\301|\035>\371\332\341\210S\021\007\350\260\201\202\222P\241\022\217g^\325\226$Z\366U\n\3702\270,\370`B\024\260\"f#\221HY\271!IE\0319g\200\032\310\325\310PC\221*\224,\2244@\014\214E\004\251\r)\003I1JQ\022!,C\024\r\010\320L4\322\224\241\251\324uG#\227\364s%N\353\344\216\313e\344\022\375\277\254\301\333\362\030\224\322\341\201\372K\371\306q:\270A9\004\212\232\374\236c\203c\370!\010b\363\311V<\273\352T\276\353\313\302\270\254X\200\030\025Z\230\360\0051\356B\317H\204c\024v\2648$c\346\347[~\034\014H\234P\367\334G\256|c\275L\370\004\201\315\326\324#\r\236\264\036\006\t\346\214\264\370\213\202Y0\314\357\356\210\242\266}Z\366\266[\363\2564\334D\020\315\357\177\357\365\022o\227Q1\023\364\343\344'Z\300J\023\313`\262\246\022!\r0\242\\\242\210\027<\205q\324\036\004\r\370\022+s\247\236]\\\263\261\217#CvSg\030z\223\312e\014\241A\342{\313\025\355\246\260=\213\356\033{\310\226,RT\3150\326\350o\315\275\234\257>\233\251\201\373\037\237%\344\205\001A\021\025\023\243\301\010z?\r\364\277_\276C\267VJ\245\356\341\214\222[,\2645\353\r\250""\363\035N\236\226\0304T\354\305=\007C\026\251\320\3040b\031\205P4\373q\264\226\032\n\201\252UD\243*\031m\t\272\rT\271\0379\177`\224a\276\300\360\034\216>\334\217Vm\337\242\305\237b\r\2626d\326\247\365\234\201\3558\002\033(zH?v\351\\\312T\210I$\237N\004a\373\327\272\206\364i\022\220\007\026\251$\203\303\210\017\264[\362\024v\244\023\361#\323\237\311\220\274Z\224CcD4\233P6&&\026\253E\260\225\315\346\302BI\325\264\300\322\241\231\362b\353\200\366\017K\020\356\260\315\264\325\200\332`\330\341\240\341F\230\303\241\312\312|\362\341\365\234Is\237\003\266\351[K\220\350\342\313\222p\256\013\215\353\223&\215\240\033O\243D\204\261\337\013\210\204\315\242\033\207\326;q\304\231]>M \344\343\243#R#\205o\035[\006\307KW\0316\235\204\272Ab\254a\222d}\240\355'\005]$\360\030\022\"\033,\205\020a\204\310\326\344\020\234\243\317\333\277F\346\022\347@\367\227!\327\025T\034\230\353W\302=\r\020I\021$\370l-\267}\214\021\314\255\r2p\303\233N\350\336\005\337\200\2464\256$\227\311\272\014\260\301,\256\273F\306\017@\305\266\300\226\177\014\336H:\354so\342\033B\255j\020\266\364\207\000\007(%\003m\267\013]\201\351\213.L\225\240\237#\r\200\325\2201\024\266[ wM\373\000p6\363\311\340\017hj\241\201\320C\355\321\320\355!U\035V%\215%\313\235\222Y\265\3602\352\334\364\360\006r\307\023\261\330&P\276\005)\200\363\300I\325\254m\360\202\361K\217O\253\267\226\272\037\233\216\255F\330\234Z\207\211\027\232h\315\3673\013\236\305\357\205\201fp#\013\017\t\260\320\306\346=\311^a\354yg\325\354\006\3140r\275\002\340\023\014y_n\014\311\354Xe\311\350m\231\262d)\306\240\254\346\326+\036\034\030\365\014\307r\005\251R\242\034\371\362Ou\214=\337=\365\235d/\304\342\216\300\343\272\316\335f\231\031\3525\312)!\n\200\265\004\360\";\216\354\003\321\273g2\266\327\236\010PD7<\\\312\010\346\2038\371\rU\033\301lo9\351=\274\360\233M\252\333=\207\261<b\013f\332\212h\321\222BY\274\r\215\r1\262v%vx\274.\3656#\252\342\342\314e\370o@\265\220d\211\0161\\\350\224N\220aOa\320\371G2\265\313#Ei\241q[>\\ni\211j5\000\234A\013n\033\325w:\303]""\224q\215\264U\205G\030\336\036il\313V\361\nY\3219:\225\314\357H\327Px\010q\3445\t\202\345\204\216F\306\307\201\3645\014!\204\261\311\310\345GX\353\307\260\241N<!\352(\301\006{;\306\224\211W\034k\004k\314\223;\271\230\\\371\371pU\020]\224\235\350\277\035/\033\206\302\3556\207\r\322\301G\022\301\204Y9G\030\343U$\222\004\341)j\035n\3272\346gK\200M\254aD>\270{S\343O\275%W\325HQ[\245\373\363\347K-\242\223\2216i\005dy\231\204O1\331\3065!\310{\336\317;\017\320\337T\305\032\"!\377\354@\336S\330\210f6!B\224\376\206\307\337\010\377\271\025]\267\274\370\267\276L\233\002\201\300\323G\327\372p\244\250\032&\021(b\230q\324\235\3047\322Q)\224h\nj\010\250\010\351\217\326\004\315e,\361\213\\\261\233\005U\204\261)T\261V1\255\307\013\267\263\322\027\005\036\313Y\376\237\330\333\340\231\217\243\237\017\260\311\371\240\251,\024\317\235\307\005_~\306\273\020\037\013w\"\027\222\345\310\343u\010\022\243\231\213Y\n\230\304\344\031D\2054BR@\300\220\300b\221=\342+\270U\253T\251\311\241=\303\340I\321E\240\331\261c\263~\005\262\250\321\205\211h\363lf\335\261:\232a\307m\301x\n\036\200\037\214&\221FHdR\006@\3222\245UT\2216\217\317\322yh\222\241\346$\226\357\365\350\241\314\312\200\267\207\314sI\035\010j\271\340\344e\036\341i\201\355\366\300\360\007\321\336;\326\341?\272\205S\274\037\002\010@\202\220'I\362\370#\303\243\245\346K'\017\213\355a\245:\355\232f\313!x0\232\363\003\203l\214\250\241\327\021i\0044y\230\014t\320LCm\266\021\230\247\244Q\tS^\014\305CP\251yxLh\251/k\026\223\021\334>o/\233\301E\367\3605('\272\317x`\014\340\023\2228\243\205\317\256\216h\361\006\377\316\217\241\033u\034'\364\020\367r\361\361h'\276\370\336\3729Z\326\371j\256\036h\3471\211N4y\337\264-\006\245\302\336\242Y*\017\263\336!\301\036\210\034\033\372\211\334\300117[\213\034\355K7?/*\036\0322h\301j\312\003`\260r\214:h\372\321J:\272\261u\341\205\347\2470\325\200t\304\344\225\215\271\237/.&8t\361\274\366\343\036B_8\354pkFOo\336\013\nM\215!\2051\303\033\t\033\311\n*\232\231I\002\261\252\032;\212\021\303\004&\341x\026\2676\350K""\301\252\232C\001\006>\026\373\2105uoGu\313\237\201\244\023Z3\255\1777\250\204\006*\006\330\257|\020s\354\357\003mu\310,)\312\023\222\365+\306\377L\\v&\356\315\265UP05U\333\010\033H1\275\215]z\373\020(\347\312!\306\200\354`\371\211\231\327\250p\217\361\007\347\014SM\335E\250:\275f\242\347\270T!\377!Bfez\2624o\344\264$!\020\350\006\010\\ <\374k0c\"\021\221\211JQ\220\210Ivn\026\361!\276BBB\244\222I$\270!\367\365\003\336C\0005\n\220\354\373\201u5\030\357\352\200\344\367\004\"H\221I\025\277Y\333\344\023\345\224-Zj\343\331Jl4*\022\022\022\021J2\373\241a,K\234\336v\022\326\304\347wG\317\220\266\233\r\276c\273&\372&z\320O$$ \304\002\020\035F\237M\225\260\314\204\313\313b\340o#\201d\350X6\022\344\334+\243\337\356\252\322/\020 \202\t\335\t\301\242\003\2544\036\021`\022\205r'L\017\346M\246\204\301\277\303W\313\206\244\212\\\003\316P\037\037\346\252!h\334\024\330\323\230\210\207 \264\265\265\330\213\311\013o~y\310\255\206\314\326\273\355\301\252\006\250(u\206\030\027(8\300q\321\204\300sD\236\372\026\236\004p\203\322}\3669\314\306m\031'I\002TS\035)\272\020%\243\324F\t\317\265nf\342\273^\351\267\22726G9h\341\247[\010t\0008@\375q\036%k-\345\223\266\010\210\210d\020\202\"\"\023!\262!\270Q\r\341_\246\363P\336{|\013`\242\265\034\210LI\014G/\207\036\215\353\020@\217\213\337\334\343\216\254\360\243\273\355rg\007\300\210\312\355\371E\013-R\310\323i\212 \r.\344\326\260\331\355\004lIC\343\217Z\361a\231\224\033\020d\352M\367v*\346\007;\031Z\301\225a\223(\262\3046a\226\242\311\3019\326W*\326\306\371.\225j\265$!SM\246\323k\206\252U\356\312\r\325\031\335FvH\341\242r\241C\224\306\314\272\317\0138\3461\210\313\031TpcA\213\200\201\026\324Q\t7mHb\341p\004o\254\230\235L\275\025\223\023=\026\025\247\003\036\320>\t\303\033=\340G\252\002D\000;E8\2048\n:HP\034\2310\220\245H\232D\246\204\245r\032\014\251X\220*\222\232\022\236\024(\273\036\250C\210\250\035$\016\374\0219\2471\020\341\310\320\013\\\211\376\335\004\214\"2) ~i\203\201q\210\227\tc\020\235\204dNZc\376\245\214\273Pj\020\212\361\213\257\014@""\234\310\007+\256\"\026\\'\031\250\014\375L\005\204\r\311 )\322\363\330\233\221\364\211\341\261\320\251H\360)\001\374z.\246$`%\373\247H!\224(\362\322\277H\250H(=7\020\261\331\332\177\0229\340\233;\004\177f\316\270q\r\016T\233\321\272\357\201\300v\275\301\321\026\347\263\323\2737\375\360}\330\337\010\335\370<\340^\310\3527m\013\001\004 \033\004\311\363\035\007 =~8[\002\234\t\034\021\245K\\\263\005\346\r\207\\K\333\353_\000\274\022y5\002e\226l\352CqC\353\024\270o\261}\376\031\274\357\0353}*\3051\364:&\207\300\204\010M\203\325\266G\214\021;\026\215\210\224\037xT\314o\200\240\230\342\205\221\260\322\207\2322H:b\352\340\034\351\031\000\220\232U\002$\206\326\315\310\325Ib\304\030\250\024\001\014\002\305\241\200a\326\351$\325\022n_\314\362\020\311\220\310\014\246\212C(\206\036d\276QI)\235\275\275\0241\346\n\0044\t\215L\220\3108Q\304\206\\\230J0i0\351\003\327\245W\324\006\300\370\3314\202e\023?\255A\327\351)\034\"\005\275{]\350<\201\340*sF4,\260^\230\220\220\262\020\021(D\246\200\2127\311\326\t\336\340\033f\261 81,\022H\234\345D\002C-\2640\\T\251B*)\0356\353w\222\355\260\247\210\375\234F4 \235\217\304\t\303\240r2\332o\246I\327\241A\003\352W\311\216O\003=\315\200\n\001\316\007\000\245\325\327\331\372+Qw\350\363\237\036\3657M\273]\273R\316F\304p\021\312&\234N\221\247\261\314p\241q\361;\365;\365)hWo\260\256\373\314\014Q\351k&\316\300qLC\250\203\221\240\232\024h%\r\242\321r\340{\303\036\355`a\003\\\321s3\234<K[mS\225?\0321\356\351j\250\013\204\034\275\013\215\332\306\253\000\304\300\265\250\310\3229j\0306\366\326B\226\206\202\221\252\036\303\224F7\204O3\214J\274h\243c\030Ju#\272V\247\223HI\020\206\200M\355\024C\034Cm\240\323\017\317\235\204I\244\320d\0068-\002\327\252%\301\220\033\302\313d9 \024\032\307S\025\014\210\272Y\017\352\0253j=\204TKH\227\311r\311\324lna\016\232\304\261\346\030\r\322\305\003\203nUn\014\006,\013\201\235\313L\314\313.FW\2559\232\234\313\n\354\316\252'\317\367\001\320\374/\023n\020R#\226}FZ\336\003\274:\035\n\340f\251\273S\306\3026\031\351`\201\260\304""\203! r\224g\347\325\326\020\211\244\210\352\007\240\250o\311*\305Q\257\035\2668\030\206\32337\241f\200\235\033\n\032\2109\203\326\274,\373\305\330\0370D\010B\301\213\025\344\315I'\t\300\r\312t\223\256\304\031+\004@M\250Y \206@\337\217\264\001![B\300\215{\020I\234M|\265\r\360K\240YN\223?\244\240J\372{\220\302\3348\2431L\002\365\014\025m\000\"1v\352\333\2741\0146'\366\301\030\244\007\243\203\343\33670\223\232u\305C\355\261\024\221I\025~\036\357\320\362\n\036\021JxWV\334>%\371H\357\007\332\201\337\200\2478\215\365\001\335\371\032\310\010`\010\010\n``\000\004\000\000c\000\000\000\r\325G\212]b\2351\n@R)\3566\273\246W\217w\016\000\271\241\264\326\000\366\243\020\001\255\366\264`\220$d\020\320\037\222\276]\232\241\202\363\266\264\303\"\320\232jMNdJ:g+\354Q\302\017X\033\366\260$c\026A\204R\003T\254\304\201\014\302K\002B\232\340\020\372\340\240\362\023\2563,32\206@\"\201\203~\217@\217\003\257\345\213\246\260\370|\277\037\273Y\342{\316(\362\277B82(\300<F\200}\3212K\322,=X\232\036\245\270\036\221\216\315o\272\305Z\007\035[\220\322\351\347\302{\t\355\017\035\242\207\3441\271\344r 0\016\202(b\204\002\310\025\001\336\222\311\332pGQ!\217#\302\372\264mnm\373\345\3169X\260s\304\252\013\362\007\240\020\034R\265\257F\366\243\2762\023\325J\034t\306(\001\354\022e\353 t\344\001\244s\333\207\317\013\237P\321\014\004\366\020[^\220\035\335G\213\313l7`bW{\342\313\366\375\344g8\266\027\200\361\364XG\347\017\022\255\220e\344\0052\217Xt\345\260\355,\343\274\307\335\345\004~\306\235\337\323(\3557R\022!\"\2474\350\351\345\201\205\260\036\3741\306\240c\203\276\213z\241J\035D\013vQ\210\207]rS\227\224\035\376_QEFH$\200I\010\005\250\246\026\032\244`\202d9<\241\352\227\354\037qts\355\014\345>K0\021 \022$\005/\000\250#\213\220\212Jc\202\341)\306/\247\274\215\324\266\321\013#\235\035lg\021\312\035\331\"\306@ \210E\024\204\330RB uq:\263\302!\201\264\030q\020.\242X\224Y\0013\332\201\341\351\0079:\341\314\254\034T\013\007\305B'k`)\203\250\211\3353\362w\324\242U4\323%\025W-kQUUU\\nr}\344Z\266:\270:\302""\r\003\253XI&Y\315<5\005\257/k\314zB\260\321\033\243c\2224\215#x\232\236\313\216\314\204\240\255\210\024 t\031,\n\213\205P\303\031P\311R\t\261\200J\217bEC\242\004\214(\033\301\016f\244\250H\231\035LL\004L\3056\2054 \240(bD6\206\302X\265\243\002+\3538y\366]\01425kK1@\321\007T'+\320\203=\346aDb1\010D\235\2324\350LL\301\301\265\301]5\031\335\001\\\200 \346@,\216\024\362\350\314\346\034\350\344@\r\0012\266\200\211\251e\222\221\203\264\212El\264Q\254\224\260\227{\021\320\005\335\021\277\211r\310\324\000\205\256\007\322\036\211\267|\014\304N\226\013\361\"\360{E\240\014\004\037g\0201\017B\277\225\025\023\325k\250\032\"\227\035\376\000\350J\032\"\034>bQt\010\013\350\013\216\003\340QYDpDJ^`t\250\027\376>\216\343\342\231\032\3170\214\244\336\347\370<\350\322Z%\244\ri\201!\333s\2619\237\0226O\014\305\326;\rB'H\005\006\267Pa\226\240\014\234y\177\352\270\237@\236O9\261\335\264\332>c\316\003\344\022\003\200\006bE\014=\002\375\326>/\007\024>\257\235t\205\301\001\224hn\rx:\013\254IH\006\2019\345D\366GE@}\244\026+\023^e\374\262>\327_\202\245\303q\236\304kDg\331)\034\231\353\032\306\311H\036d}\010\207\272T\315O\202\237\001\370?l\242\245\303A\200\302\023T\252\341\230\231VA\232\022\357\364J\306\224\241\211;\335<#Z<8\334L\030\276\244r\006\257KGR\006\231\300\227\252\221\265`\007\306\007\251W\271\260d\341a[\362\350$\305q\027\320\327l3\316\256\021\004\370C\264H8\220;\262G4]\302\006\310\033\302\351\021\275UP\2613(\220\2109]\304SUp\272\205\354\0179p#\313\306F\231\006\343\030\273\n\330\2607\250AZ\3217\024\212\031\024{\260\025D\024\307\252\030\317\307\263u\226\326G\356\025-\215n\213\034\320Z\036\260\024\315A.\001\341\204\236\003 \037\307\024b\022\\J\227Q%\322\241\303\330`\027q\207\004\270 \210\234%\r\313\270c\206\254\201\034&\240qekQ0\017\023#\217\224\205\311\305V\"5\020f\252\312\t\305\033\\\216\210\321\206\210\311\263n\231!\214\204HI$\276\213\321\214C;c\263y\311^\024\206\2218\016\027\247R\326\240\362e\334>T\271GX\344u\225\353\271\013Bh70k*IGA\031\021\337\007`V\314\000\224\0318\363n\"\212b""\240\334\356\r\303A\203\210\207T\3231B\324\305R:\254\307\234\r4\340[\002(v\234\014\341At\013\351\331:\001\376j\027d\305L\014M~\006bp\206\353\353>\244\272\006\350\213\253\223H\334J\317\"\321\010m\252\327e5\027\022\205H\306#+\0243Vi\032\234#\000yh\320*\207\230p2\031\000\321g\022q|]i\013(F*\233`\323mn\010E$\321w}M\256FE\362,\233D\317\n\020\250\000\330##\002\010\351@\320\272\304>b\000\006\223%{\314\n\0331\003\004\211\260\206\210\336\260WU\365\007e\314dF\021`\023Ti\212F0\216\305N\250\200\310\203\272\001g\260V\212v\030\303Y[\346\270p\242\242\230\205\225\244-\001\023u!\2710\243?j<\365\202ZI$\010\010\035}\033\273-J\305s\035\202&?\200m\301\035\346\230 T7\005#\353\202\346:\302;*\215\367\275\213\220\014B oG\340\036\220\324@\276\010\201gq\311\256]J\371\317\277\020\335\264]\345\003I2\022b\t\202\233R\220\017\024\333\254^\020d\244\000\364\022J=\003\311\003\314\002n6\223\277\277\311\017\330\273\324\364\341i\334.\377\220\324\247\021\272 v9\t\304\214&\311\211\310 }\240D\243;\037`\37218\375\033\365\027\267\021\363u\231c\224\014\261{\252\314\006@|\351\005\272\300\017y\003\253|\r\347\227\235\007\240\271\010X\2245\256|\227Tx;:\301\215\006f\nA\315\006\206ToM=\371g\006\221\246\213\244T:\002QQ\016y\245\314\r\250s\220\\\354\\\232\020\260\267\2150l\270\202X\206\t\372\3048\310\312\311\004\006!\266\316R\31244\215\230\006h\216@\371\270\312\246\240\n\323BZZ\244\026m\034\035E\321\355\325\362\026\001tGD}\000\226\265\200Mf\325\003\243\347w\243\262\306f\214L0\256\322\354\264\2654\332inj0\223\220\217Pa\364\276w\325\3733\374\373\177\037\324\177\304\336\013\324\\V0\377\223k\215i\313\227\235\260[q\251\304\252\313\313\305\272\356|?\n\373\243Xp\277U\266\201\264\277\300\373\377\351\002*\227\204\201\272~\007\002\304!\314\205m[X\214J\243\265N\254O\310\353\327Yn\"\313\245\004g\351\024\227\224\272^\223\256\003_G\365\207!\257U\360\366\327\210s\266\315\305\213^\270\341\265\267Lk\006\221\242\340\336F1\222\270fB2\317\261\242D\226~A\227\210\216\022,Y[&W\251\027\224\263k&\316H\214z\305}3\014\366\237tf\326$E\375A\333""\037M9\013\231\204\373F=\215\272\225-\355\025f\033\005b\3553\362o]\316\247:\336\005Gx-8\260\305U\322?\023su#\300^\2241n~\2429\030\351\307%\226\212o\3509\035\217\3622k\263\263\300\243+h\306\215\314+!9c\3022\256\202\376E\2553:\177c\360\013\271\"\234(HF<\207Z\200";
|
|
11216
|
-
PyObject *data = __Pyx_DecompressString(cstring,
|
|
11214
|
+
#elif (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (5737 bytes) */
|
|
11215
|
+
const char* const cstring = "BZh91AY&SY\n~\346\227\0004p\377\377\377\376\256\260~\377\377\377\277\377\377\356\377\377\377\376@@@@@@@@@@@@@\000@\000`\035\216\371\033\251\307}Z\226\3405@\000s\337w\235\343\356,d\330\3679\016]z\373\336\007|@\037^\366\322\366\305\305m\255Q_f\362\006\366\031=\334\247(\022\257Ls\326\355{\235:\203\240v\356\367\275\360\373\204\221$\nyL'\241\204Lbjd\3232\232\0324d\001\24044bh0\207\244\036\240\332\232h4\331 \221\023A\010$j\236\324\310\200\304\000\320\032\003@\000\000\000\000\036\240\r\000\r\001\246\324\246S%\000\032\032i\24024\000h\000\000\r4\000\000\006\215\000\000\000\010R\221'\242\233&\223M\r4hhi\240\000\000\001\240\000\000\000\000\000\006\200\004I\020\2312S\325=2\247\3454\237\252~E?I\251\352d\36524bd\033H\000\320\3204\000\000\000\032\000\010\222 D`M\004i\241\241)\371\245=S\315M\244\217S\324\311\352h4\003C@\000\000\000h\323\324\001\335#\204\3462\017\205!-}\315\227\261\261\031\343\307oJP\204=[\032^\3330\3326\336\305\273\214\230\204\246HS\255?\257\335\016k\014\034\337\340\276\016\223c\266\341\210SUG\321\002\210\r\213#Id\362g\335\211\210\246/\221\270\343\254\311\326Y\362\340B\024\260\"f#\221HY\271!IE\0319g\200\032\310\325\312@C\225\n\262P\321)H\204\014E\004\251\r)\014@QD\305)DB\204\261\014-\n\314\224-(ju\034\223\225\344\373?B\245Os,U\004\255\010j\221\342\307\371\222p\355\034d\212\244\266[\361\271d\324\035\311 \213B\032H\354\364~R\307\246\377#\030\315|\321\304\237&\241\303\253QA\037:I\032\002f\013P \000\244\301\320\263R\"\232Qrv\007O\000\2767f\314\225\n00c\2717-\242<G\222u\264\317`H\033\315\336\254\"\233<0u(\236,a\247\274^\td\3031\267\230\"\305\264\371]ek|m\206\342 \206j\372\375>\004\233\335\303LP\373\261\354'R\304J\023\266\301eL$\221a\246\024K\224Q\002\347a[\265\007q\003n\004\212\334\350\361e\323\303;\030\36046e9\267\303\275;L\241\224(='\306X\257e5\201\353_\001\267\306D\261b\222\246i\206\267Cx\333\354%w\323u0?c\363\345\275HP\024\021\021Rr\365!\016\357\242\367\237O\246C\271\246J\245\356\341\214\222[,\2637\357\r\221\366\235N\236\216\0304T\355b\236{\241\213T\350b\0301\014""\302\250\032}\250\332K\r\005@\330\252\211F\250khO0\032\251r>b\376\301(\303m\201\3349\033\3742=\031\267\177\032\305\237b\r\2629\262kG\331r\007\270q\0045\241\346 \373\027J\355\224\251\020\222I?\306\004a\373\327\272\206\324i\022\220\007\026\251$\203\273x\017\200\273wc\260<\231o\311\013\376\004\351\325\366\254\030\341\213d\251\010\225\026F\211\006\013\013U\242\330J\321\336\302BI\317\300\300\316\246\343\007H\017@\3630\207\202\3036\303V\003i\203c\206\203\205\032c\016\207k\225t\343\2073\3137\243\023\236\247=\322\273K\316\016g\027/$\322\274\027\215\255\310\306\236\206\020\323\346d\220\226;\356\267\210\030\336\242!\362\256\233AWOx\337\210\203H87\243#Z\3544\356#\205\247\236Z`\330\354\267\274ls\236\004\271 \270\255T\3110>\220t\223r\327\262N\202\204\210\206\313\220\242\na25\261\004'(\355\353\327\221\261Iq\220{K\220\345\275\255`\340\354/\317X\341\024\240b\033B\033\367|\023\313i(\026H\321\254*\256\362\205\311\2530\263\350)\214\253\304\222\370:\240\303\n%\226\347\304h\243\264\203\236`\271u\232X\243n\006\270\317l\221\033\356\335H\347\314\033\300\rP\224\r\266\334,\363\007\226,90[!=\3056\003W b.f\346\204\306\326o]\0000\333\267\223\305N\340iC\003^Z=z9^c\"\032\336\\\233;\026<\206\345M\250\3075\333\324\023\336\250\362\026\3420\313Q\t\024.\365\004\234]V\274i\035\211o\333\335\257\006yK\216\273\362\245\032\251\253\250\251\027[X\305\372\030\205\3072\373R\241a\320\212Vr\233FF71\346J\354\037\033\036\014\367X\r0\243u\341\026\340\230Wu\371\356bO*\341\207\213\035\255\274\340\231\nqP[\030\272\253W]\312\360\030\216\204\0132\245D9\357\340\236\212\251\354\370\351\271\3342\335\207b\027\001\331\316W-\315`\316\306\356\002\020\306$\233\021\324\210\350;\334\003=\257hg\026[k\277\004(\"\033\236.B\007\231\014W\226\312\2526\211c\357\306s\315=\252\023i\265m`\3463D\357P_Y\2331d\301!,\332\033\032\032cd\350\225\315\325\351t\265\320r\235\352(\254>\273X\026p\014\221!\305[\214\310NPR\236c\260\370G\022\263\303#%\262\304\263n\034h\303\022\304b\244\024L\020f6!\346z\034S\2739\251\313\313\260b7\254C\332\313L\272\273""\250R\316\t\301\316W\023\265\221\236Pu\020\343\270j\023\005\303\t\034\215\215\216\207\310j\030C\tnN\007*\035\270\357r\024)\256\260\361\026(\203\2471\336\262\244KU\276\372\271\032\354I\235\034\314.]\376N\013X\202\367,\235\362c\3037\2065 ]\246\320\347\331,\024e\274\270c\004\223\207\ns\216uRI M\362\226\241\263\251\332\35205\034\234\002s1\205\020\371\303\3012\221\300\314\357]\0148\374%\313\234\211r\n\310\234\350\225(\211U W\274/Jl\344\374\004B\231\227+\227;\373\372ZX\255@?\330&\357C\271\003T\271\020D\303\370\332= \217\365\"\265\356\336\323\336ol\0304\n\007\003M\037o\352\302\222\3204\265%\222\r\252W\217\177\204\323\243\224\3479y\00741\344C\326-\367\301\223\313_\204C\336\372$\233=\313\344-\233\270_\022\021\320\224\360\351\331\035\345\316\230\345\370{\262\263\241\007\321\221y\260\3049\251\027\353\216\232\022\362\301b]1\264\304D\"\255b8\265,X\2335\370\\\303\216}\335\250\365\020\326\207\304u\235I|\024 )\000\3561\265\204\362\320\366\366\366v|:\270\360\261|\t9Qh6lX\353\335\201l\2524abZ=\r\214\333\266'SL=\014\310]\312\037\246\277\347\024\264$*!P\244\014\201\244l\2633*M\321\356y\363\177\n29\005Zt\366f\241\3332\240-\325\350\032\335M\204\215\365\336jK\235\206,\002\335\356\024L\000\371ZU\373Xh\027\372\010\252t\203\324A\010\020R\004\346<\376\244x\362\363\005&\336_\217\232\3228LmX\312\202\362\3010\252\016Y\214\251!C\256\"\341j\300\322N\034\004Z\3444\314*\2503fj\264K\224\267\203{SP\251i\224&4T\227\265\213I\210\354\036\356\336\357*\213\362n5('\266\317\2210\006n\t\301\034Q\302\347\316\216h\357\006\377\316\217\235\033t\233\247\364\020\366\360\365z\232\t\362_\033\337G+Z\336\372\253\207twLbS\215\035o\214Z\014n.\n%\222\240\375\2371\017V>\374\017W\324\305:\240\031\2616g\\7\311\0263\214_\201\007\235\030\226`K\324\200b,\016\021\207*>X\245\035=8\272\360\302\363\2770\325\200r\211\301+\033q=\3747\230\341\3170\325m\232\360\352\027\3516\032\314\3632;\375a\210]\220\224\203TY\023\024\353(\3031\313\202Pf\342\241\311\344`\216\350!=\341\200\026\267~\360\230\003U;\003\"\014}\017Q\3146\333\004|\327^OU""\244\023\204g\327\303\277\353!\001\212\201\340\025\363\202\017'_\244\245\270\256\361aMH'\205\352^\357\375)i\3056\3079$\222H\t\202m\266\375\270\200\200\320\336\214\336\336-\020(\343\272!\306@\346lbOsFzt\234\311\375\212}\200\304\325\031\247Ij\016\237I\250\271\355\025\010~\000\24132\275Y\0326\360Z\022\020\210t\003\004.\020\036'U\233\001\232Bi\211JQ\220\210Iv\270\005\304$6!!!UUU\250\020\377\267\001\351\010\326\006\340\251\016\277\316\013\251\250\307oL\007'\306\020\211\"E$\027\031\207Q\342\354\023\337(Z\264\307\177])\314hT$$$\"\224e\372\201a,\\\342\361n%\255\211\306\356\217\233!m9\216~\343\307\223}\023=h'd$ \304\002\020\035F\237U\225\260\314\204\313\266\305\300\332G\002\311\312\260l%\311\300V\316\253\352@\031\021|\240\201\002\004v\010\320\310@;\345\207\230\260\tB\273\323\343/\371\223\272R\231}\037Ma/\204KI\024\300\007\330\240y\3766\3458\232\201\266$e\252\"\034\202\312\316\257q\027\301\013^\326vcw/\024\226p&\333\004\334\201 \340\024PO\256\036p=\t\272\001\363\213kp\360\260\034o{,.1\240\314f_O\227>\"4y/\031\272\321\022\020\273(L#&\017\221w\341\212\362&\307\231v\206\310\360-\034\351\331\230{\200>\221?,N\005\363\312L\241m0*\252\251\241\020\220\001\r\r\203`\t\005\"\270\025\275`\335\354\336\366.J\305}\325\250\214\025 \232\315\362\271t\276\024P\236\337\213Ck\232\2346\255\252\306=Oz\210\307!\243\237\271(Yj\313#M\246(\2004\2616\3156z\200\215\022X{\357\341\275\\12\203D\0309I\266\316\342\267\0209\321\205\232#\n\350\301\204X\270\206\312e\324\027n]e\3338\\,-\033\\\2258\234I\010Vi\264\332mn\325\245kfX6V6US}$J\336\021l\250P\3451\263.\333=\326k\210\361^/\230\031RnV\202\257\001\002.\324Z\022n\355HV\360\230\030\3378*s2\343%\260M\255\260\304/\231(\204\322\211\314[\010Hz\301;\025\221F\021\001\"WlSt\207\020\322@\032\020\353$\302B\225\"hJR\232\022\205\311\310\310L\225\210R\251)\241)\342\302\213\264\362D8\352\201\306\201\336\004N)\304D7p4\002\327\"}\376\202F\020\031\024\220>\341\203\222\352\021.\205\215\004\337\031\023\2455?\365c\233\317\002\241\010\257\336\027t4\004\354\200q\373\342!e\314\373""\306 \317\367r, z\344\200\247'\2172m\027\274L\274\263\231\205JGqH\017\332\242\352bF\002_\3079\002\031B\216\332W\352\025\t\005\007\225\320,u\370\216\317\342GLS\237\260G\366l\363C\200j8\322nF\353\272\006\361\330\354\016\210\267=\235\3733\177\333\007\333\215\360\215\337\231\343\002\366GQ\263\234,\004\020\200Na2{\216\203\200\036\237V\026\300\247\002G\004iR\327,\301x\251a\327\022\366\371o\200^\t;5(e\226l\351CaK\351A\270]@\212\3574\316Y\307X\317C\300t\313\305\\\246\271\31400\327\306\234%\255@B94tD\240\377\221S0/\200\240\230\342\205\221\260\322\207td\220{\"\355\220\362$d\002Bv*\004I\016\357]\321\252nI\030\305`P\0040\013\213#\000\247m\222I\253\022lc\356\352\022\026\261\220\020\274K\244\013\225\003z\3707V\326\323\2772\344&T\322\201\336\023E7\303x\356G45\337\270\243.\303wb\3734\252\375\320l\017\252\311\244\023(\231\374\264\035]\345#\204@\267\247\235\332\003\300\035\302\247\024cB\302\301z\"BB\310@D\241\022\232B(\344o\004\351n\033M\342@pbX$\222q,\211P\206\002\215\214.\000\312\021QH\333<\036)v\330S\274~\234F4 \235o\304\t\273\240r2\3476\320I9\363i!'\202\274X\344\316&\343\203p\002\200w@\342\024\272s\364}\025\250\275\254\303\267<\336\322\234&\333;l\226r5G\004\034\242g\344\034\303O;\270p\241q\357\235:=\255\024\264+\271\341+\246\363\003\024y\232\311\263\2508\246!\322A\310\320M\n4\022\206\321h\271p>@\307P\027a\263\310\030/zu-g6\234)\361Ey\271Y\265\200\274#\312h\341\350[p_V\241\241\266\225\326\243\003H\313P\320\367\316\002\313#A\2625a\3549DV\360\211\342j\245^\262X\265\222\214H\352\312\224\350\302\025)\"\003&ur\241*\244\221\014\340|\366\320K\032:4\206@c\202\314&\224@\354\t\260Vd\245%4\273\300\004\272\216\366*\033\210\272Y\017\320*f\312\243\240\212\211i\006\371.Y:\316v\346\020\345X\226;\206\003t\261Ja\224/\302\256\355b\215&\026\003V%\350\321)`\305\243=\363e\222D\227\031\210h\363\376`:\037_\324s\341\020b9g\322e\255\334;C\241\320\255\306`;5;\354#a\235\346\010\032\230\220d$\016IF\356\2759\310D\3161\036}jr\r\331\245`U\034\331l\261\274\325\220l4t9\0015\"r\310\241\250\203\271M\200\343g\316""\027P\364\002 B\026\014X\257#4I7M\300lS\221:\254Q\221|\032\240\266-\031\024T(\223\207p\005\202\372S\200\235\260\243(\232\370i\"_\004\270\205\224\344s}E\"W\325\343C\013n\336,\304p\013\3240U\264@\210\301\347\325\317\2641\0145O\327\004b\220\036^/\177\245.a'm9\342\241\353\261\024\221I\005~ooX\247\350\220\003\313\004\247ut\363\341\361/\274\216\320|!%\207HJ4\016\024Y}%\205\304\314&&\010D1\200\010\000r\252\252\252\252\274\\\330\257C\204\022\221O0\331\3412\274|\256<Aw!\261\274T\356#\020\001\256\325\255\030$\t\031\0043S\305^~\272C\005\343mc\206E\2434\324\352s\"Q\312p\2772\216\020z\200\333\316\300\240\231i\"RF\250Y\211\002\031\204\226\004\2255\300!\365\301A\314NY\231a\231\224\260\201\t\001\201\261\035\350\355\360\373\202\351\254>o\177\326\366\353=G\310oG\205\372\021\301\221F\001\352Z\001\366\304\311/H\260\364bhz\026\340w\214y\265\276\333U\240o\325\261\r.\371\260\236\302v>\001\352\330(~C\034\017\023\233\001\200r \206(@,\201Q\035\314\262x\315\350\352$1\342[L\337-\272\035\230\\\337\225\213q\214\304\252\013\360S\240\020\034R\265\257F\326\243\2662\036\210\241\277Lb\200\036\301&^\223U\007,\3205@\317l\037\207.x\r\020\300O\t\005\305\346\002c\215\353\222e$\r \030X:\337{\227\365\236\275\030\305]\205\350;\375\262!y\341\346\2218\014xP\221\206\272\003\226\\\307\210\263\216\323\037oh\243\364i\343\376\231G\210\331HH\204\212\234S\243\227\014\014-\200\3710\307\032\201\216\016\332-\350\205(t\220-\327F(\035U\300L\347\016\320v\366\372\n\240\214R@$\204\002\324S\013\rR1\0013\034\336\020\364K\365\217\264\2729\370\2039Oe\230\010\220\t\022\002\227\200T\021\305\311\005%1\312\342S\240\276\307\244\215\351m\336\205\201\355\243\303C\347\234\243\303-X\013L\213\004B\010\244%\024\220\210\035[\316\254\360\210`\363\203\r\350\205\324K\022\213 &|\350\036^\360s\223\252\034J\301\305@\260|T\"`\304\244\210j/\246\243\t\333\203\20610\202\010lAb\231\221\000DGe\216\362\366\303J&\373u[\203\024\002\333pm\274e\353\324\354\023gi\274\307\230+\014\305\27269\021\244i\033\304\321\350\270\353\220\224\025\252\005\010\034\246K""\003\th\265T0\302\3316\205\333\203!\025J\203\312\221Xv H\245\003tD\315\254Z\022&Gi\231p\025iy\021\253\010\\\013\220R\244,D\250\262\204\261Af+\330q\353\326\350a\221\246\364\263\024\014\320t\204\344\275\0103\316/\230X\214F!\010\223\257F\235\t\221\212\2306\272+\246\243;\252\213\220\004\034\340\026G\nxtfq\0364p \006\212\031[0D\321e\222\221\211\261\024\202\331h\243y)a.\364\003\240\003\244\003dG\017Q\201dj\005E(\265\304\372\203\3176fm\201\240\211\311\202\374@\273\337\020\264\001\202\003\354\340\006!\347D\036\372\262\201\232)q\333\334\016d))\200n\371IE\320 \257\230.8\017qEe\021\301\021)x\201\311@\277\361\361\350}S#Y\344\021\224\233\\\317\255\306\202\242T\201\254nHv\\\352N'\251\033=\330f.\241\326j\0219\000Pku\206\031\353\000\311\307\207\376+\211\351\211\344\365\032\275\255\215\207\244\352\001\362D\200\340\201\270H!\207X\276\303\036\300\342\342\207\213n\2604\206\000\200\3124.\033\360s\027x\222\200\r\002q\312\211\353\216\212\200\373\010\214V&\274\313\371d}\216\376\245K\207\003v\250\326h\303\343\224\216L\354\032\306\311H\035H\367Q\017\tS5>\n|\007\340\375\262\212\227\r\026\003\010\315R\244\35212\254\2034%\336\320k\001\242\206$\356\364\341\272\305\337\341\352\023\006/z9)W\240(\344\201\246p%\352\244f\003\367\000\357U\3616\014^|n+\207\016\202L\227!|\305vC<\352\341\020O\2049\001\211\211\036\346H\356E\340 k\003\210]\200\336\252\251X\234QHEM_\002)\262\356q0 |\325\311\037#B4\31074G\225[\026\007\005\010+]\331\340R(oS\262\202\326 \263\036l1\236u\315\203\r\254\036Yhm5\262.9\260]\0174\026f`\227\000\351\204\235FB~\250QP\222\336K;8\211+dX\230\356M$\253R\214R\304 \232D\r\313\250\323\034U\0027)\301#\213\225\234\304\373\311\010\275\244q\354P\271\034Z\325\021\250\203\021\026PNDmr:#F\031\243&\2743\311\014X\220\222I|\327\2261\014\355\2176\343\212\273\350]\343{jj\316\245\276\240\361c\3326u\247\026\335Z\353\311v\013\2414\032(\360\340\222Q\236A9\021\322\3471,P\013\014\314\367\352\022\345\340\3345\033BJ\210`k\252\222H\310\314P\2651T\216\2531\334\r4\341[A\024;\246\371\262)\270\205\363\362g*\237\222""\221\326b\246\006&\376\243p\234a\302\373\317\004\272\007\010\213\247#H\334J\335\222\2266\252\337e4.-7L0\254\232\260\314\334\31234\212\003\273$d\025\261h\210p2\031\000\321s}\215\370\357\306\371\243\220\245\213I\022\030IU\035\001\022\352f\274<\0339\031\027\310\262l&\354(B\240\003f20\"\016t\215\013\254C\340D\000\322d\257q\236%\206\354@\305\"s\020\301\033\326\n\351}\003\242\3462\013\"\300&\221\246)\030\302:\252t\301\006D\035\220\013=j\264S\314c\rem\232\341\t\004\334b\021ZB\320\0216R\033\007\n3\360G\216\260KI$\201\024\003\253\243g]\251X\256k\314\"c\3539\360Gi\246\010\025\r\201@\3751\034\307X@\346\2526\336\366.@1\010\201\265\037\260\036\200\324@\301\020)\330ph\341\322\257\230\377\350\206\316tx\250\032I\220\223\020L\024\332\224\200zcoX\274P\340%\014\020\363\222J<\343\275\003\270\004\330s\223\311\344\354\207\354]\344\362\302\323\306.\337\214\324\246\361\270 v\031\t\274\201\010`p\010\037l\021(\312\307\343\237F&\377\243g\002\366\336=\335FX\345\003,_\035Y\200\310\017\231 \267X\001\357 t\355\201\264\355\343A\347.B\026%\rk\237\035\325\037\016\272\313R,\332\024#\266\r\014\250\340\236\232\367\221\313\3224\321y\025\017p\225\n\244<\017K\264\033P\360 \274\030\272\373\320\260\270\r\3306]\303%\240`\237\204\210\300\313`\202\002\321Q\r\234%\204hi\034\014\0034G |\314eSP\005i\241--R\0136\034\035\013\243\334\336x\213*9\213\232=\320KZ\300&\363E\003\257_\030{\251\214d)(\242O\216{\255.\310\313Zer\207\016R4I\245\323\342\366<\023\336\273\255\327}V\350\253iR\312Q\366\356\251m\256\\\273\327P\273q\231\251V\303\303\253\273t<~5\374\006\251\302\370m\264\r\245\372\217K\321\201\031\213\341\220u\347\336w\353!\034h\316\237M\342d\3148\351\314\223\362?L\325\\\010\252\361\202i\372E\372\325,\226\347\350\200\327\021\375a\320\326\350\351\370\027\230w\3368\026\036& \343l\360\230\264\215#A\303\211\030\2462\310*#(\264g\221\322\315\250erQ\216\212UV\341\312\366\"\332\220n\343U\306\021O\010\304\3260Oy\370Ff\021=\0275\307\333\373kO,W/rJt\267\250P\255\272Q\222m\230E\231\306\371\305g\237:]i\224\037\313\222\345&(\256""\301\371\225\231\2577W\231 \350|d\324\204\274\255LLR\362x\345\211\211<\374\215\334&'\022\346\026\242\262lR\271\t\313\035#\n\366\013\371wYf2\377\007\377\027rE8P\220\n~\346\227";
|
|
11216
|
+
PyObject *data = __Pyx_DecompressString(cstring, 5737, 2);
|
|
11217
11217
|
if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error)
|
|
11218
11218
|
const char* const bytes = __Pyx_PyBytes_AsString(data);
|
|
11219
11219
|
#if !CYTHON_ASSUME_SAFE_MACROS
|
|
11220
11220
|
if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) }
|
|
11221
11221
|
#endif
|
|
11222
|
-
#elif (CYTHON_COMPRESS_STRINGS) != 0 /* compression: zlib (
|
|
11223
|
-
const char* const cstring = "x\332\355\\Os\033\307\261\007)\3312\340T\275R\305\257R\225\323\310\216\013\204\014A\004%\3322\023\351\025#\313y\262\034\333\262h\312)>\325b\261; \327\002v\241\335\005IXOU<\342\210#\217:\346\230c\216>\276#\217<\352#\350#\274\356\236\177\273\213\005\010\220\224\310\270\342J(`1\323\323\323\323\335\277\356\231\236}\276\370b\241\3026\203\230\331>\353\371|\267\313\235\230\273\354)\357\357\004\241\313\354p\263\327\341~\314\312\317\353/\312\265\377\262\243(p\026\334\025\346\004\35564\365\002?\252\331M\247\366W\273\333\365\374\315\215\007U\266\376\244\212\375W\030|\336\266\333=\276\302\326\253\254e;q\020\366G{\336\265\333m\273\331\346\033\033\320o\204l/\306\337R\324\237\260\333\314\365\234\270\302\256\335\231\252C\251T\274\033r;\346\314f>\337a\r\371kc\243\376\204\355x\361\026k\000\277\rF\223\363l\234\277xJ\3347j\320\377oA\2179(\242\210\263\006\265k\260\205\253W\257\322G\370\027{UX\034\000?\335>k\270\342W\027\177!\346\354\260O?g\030`\016\361\345\262f\277TlH\021\001#\276\213\314x\233\276\342\001\373\022\2235=\274\033\360\210\371\260r\316\226\355or\034\0249\375\316\016\355\016\217y\030\225\212\327\364\177\245\242\313VXZ*\305\342\243\240\027:\334\260S+\025a\014h\370\000~\0242\211\267\354X\017\351\371\021\017\343\210\005!\013y\267m;<\202.\304!tZ\307N\212\335d71\225\310\314\241T\224S\205^\251\345\237\264\334H]5\226\003\010\351\001\341-\234D\252/\255-\016\030\362\270\027\372$\232\357\351\243\221K\251\330\021\215\177\350\272\264\n+\271\014\300\300\337\244\026-_ep0\2430\367v\355N\267\315\023\213P*\336\271sGtXx\376\242\312\312v\271\312\352\225R\3619|Za\365\027\251\006\362\231lvC7\2731\256Y3\325\254NO\2509\316\273\305C\356;<\243\022(\242\357\372\361V\000j\226\261\243\006\353\004n\257\315a\356[q\334\215V\256_w\003'\252u\251y-\0107\257\337\270\336\366\232!(\366\365\254\rn\305\235v\251H\034Z\236?\235\267\210F\033=\342\317z\310\365\306\203'\347\326\221\244u\216\265\302\240C\326\237\364\037\0144\0255\264k\303\263\010\034\254\327\362\310\344I\207\"R\227\205\325\373l\223\373<$UBQ\307!P\254""\344\272\036\020*9\204n\010k\344 3\344u\202\326\350\320d\244\256\342\300\347\021\220/\025\333\201c\343L\331\246\267\315\375\004'\311\001\224qy>8\223\016wQ\313Gg\014.!\266\205j\331\340\2168w\321{n\001U\033\227\025~\227\264\231\0271\273\031!\226()\245\206\323\356\254\003#\304\344\316\300\317\000U\277/\371\316X R>-\227\027A\313\373@\200\324\347\001Y|\340_\343\235n\334g\221TC\224/5\025K\330\207\336\t\241\212\325\205E\301G1\300&\217\231\026\263b5\345*\327\240\241\370\216K\211\353\244\226I\367\313U\226S\366\235\334v\266r\225\031\275\0030\216\014\205<\352\265\343\323p\241\031\355i\332\021\364\t\374c\331\314#\316\331j;\n\222.\266Gl\200B\001#\253\335n\273\017j\230\2349\"\260\020:\014`\247\326\316C\225M\352\005,\241 \004\223\016=\276\315g\350Kz\215+\224\033wd\374D\340s\262\2254\230\310\301\216\004\023t\261\006\0076\340\023(\303\222F\202\245\027\271m\237\023<\324_\310.\004\027\251~\242\301\322\213\221\356\231\036\365L\017 y\346\220\303\026\332\036\310\364\323\345\345\212X\010\371}\361V\305\365\"T\005\370g\272@\366\252\300\246\007\347\032wP\252i\225B\3331f#=p\310;\3016wg\301\033!'\031\315z\307\014v\323\314\226\212&\350e:\346\255\"\313\276dQ8\2454|\320\374\022\316\310\360\226\t\204!\220Fhy\200\256\332t'\237g\207<\213A\364,\362\332\360\014\234\005\204\251A($tBP\271*Q\005#ib\005\344!'\247\207\326\336\025}*\341[ZR\347.N\376\236c\2741\253\223w\002?\266=\037\361\022\330b^\314;\221\021\002\337ux\027\235}\000\372\266C\177It\270.z\371\220\253\325\366f\020\202nw\330\027\034\350\265S\353\2429\325Z\021q4\253\2105y\274\303A\263\342\235\200\201\222\203\0346=\020\205F\036Z\001\204[\304wi!\202\003\004\363 \266\333\364\r9x\214\032\332\342;<D\261\372\340O>\326A\001\262+{W\215j\202\201\340`9\323\306\024\0175\036\024\n\030U\213cL\226\210\"0\200\221\300?zx\0323\004W\031\362#\307\356t{\2320\204#b~r%DG\037\202A\311c\340\203\376\213U\020\254\312XF\230[\225\331\333\201\347b\317\236\357s\360\353\021X99\200k@\345\232\230\004\013\272\234d\351G\343\000z\0140N\214\243\217\215\217\322\313?/\357\312\224\250O""\220F\037\010\266v\023\211\327\244\306\360g\227z\344\266\225\004\331G\354>\371\217\210u\340w%\345\3048g\205\213\202]\211\202\237\335\374\254\302}\024\367\246#B\234\205)\362/\374q\205m\365:\335\276\025\007A\373\347\032\372\032\361\351Q\257\333\r`_\340/<\206 \272\243\240\323\345-\033Tg\205}\333%Tho\254\243\217\202\310\232W\301_[\372\367&P\201\037\276\264\333\021'LLt\020\356(\035~\221v\330\254\033\304\340\265=0.\223! \233\002\216\360\023\374#&T\0014#\377\303\032jV\r\312\227fN\300\204\304(\222\364\355mo\023\225\0302\244\300\004\204\343y\000Sn\301\223`\207X)\025\223\231\205N\300\324\000`\nmO\305\347i(\024\375\344\314ib\340\367\204\351\005a\r\010\240\001\243c\257\261\373-\023Fk\234\344\273^\004\026\255\207\022\256?\002\203\023+\322\300~@\322\254\021eo\215\265\020\"\363T\277k\241\355E\322\305\200s\336\364`\321\244G\027y\017H\304v\205\347\3011\004\253z\230\t0+\3413\241\203\210\263\331T\214\320\315\345\221\023zM\311\206\316\303B{\033\250\n\020\241%\251\241\257\003O\014T\363\024\026\350\337\325\026\220\2440\335\242Hw\351\364\302\020\343\0131$\320\024\212\227\273<U\026\005J]P\301\232\240\342&\333\005\005\3549 4p\336=\030\r\262k\033\235\273\023#U\200\200F\033V\021'%\305\211i%\373_2/ie\320n]%\230B\376\"3\327b2\334\247u#%3\243\005,m\252@\236 I\351\205R\207\26464 \372\271\027\206A\210\232s\337w\371\256\372\206sX\353w\271\370\016\324\362\324\205\245\264e42\321\031\265\234z*\261Nm{\230)\323\314\304\370F\277\307\032\n\215Kj\256\206-\025\325\234\264\010rME\354\343\n=1\230 \275\227\014\251@\300F(\323\220C\253\202\366\3708\350\tP\307\250\027\350hYN\315U\014=\360\007\317\307`\001\200\033@A\246\341r\365\363A\034\0248\024\256\037\2679r\022d\020-}\210\324l\r\266\000\243Y[\020\024P=\343\344\322\331r{J\332Y\206\210\316\365\246L\262\307\345\356\265S\3354\030\037\213\2007\361#[8\227\333\220+\373\340\366 *(\257\266=\207\227\253\245b\255Vc\231\377\312]\310+\266 R\245\354\232\3022\370\264QF&9\006%\337\322\332C\032\236\333=M\313\t\242\230\272/\326\226\027!o\257--?y1f\\H\030\\\017\362\006;t\221\307e""\370\357Z}\351\306M\363\247,#!\031Al\030V\201-\301i\225-\202\213K\314\033\002(\311z\246/\311\"\247-\211f\3028\024\236\217v<\222\257\262M\\\314\336\261\2768}\237<\346@$\320e1\323\253\217\255p_\305\330\353m4Uh\272\026\302\276`\323v\236\262\205\016\254\037\370E\007\321\305\301\214\242mGqe\005\214\035V\320\270\244\025\214E\247\2144\225!\316\024bj\353\305\330\362\243\254-\353m3\021l\336\372\374FE\004\215N\237<\306u\0236v\373\340^E$\352b\327\226\327\006\277\";.\337\254W\314\303\205.*$\354\212\362I\333/q\257\213\333\267\224\014W\t\2520\n=r\213\347l7v\276\307d\326\027\351W&G\324\331\3605\341}\272\266\027\302\3663\370\351\250\005['Z&\302\245K\204\317x\301Yb[#orz\"\203\3162\225\263\325\003qm3\210E@\204\234\020\267\020\336z\035\320d\333\347A/j\367ki\372\250\301Qj\016\344\245)\260\"L\350{\274\355\312M\"\267FL,T 2\275\007-\010\201:\210\\]\200\001y\366\226\024\007\305J\tuhdFW\007\231f\270\026@\326\316\226\207\264\223\224th,\240SG\372\371{py\033[\351\221!Z\233\355\330V\363\222\332\002\312\321\364\364\266\217\010TI0f\216\342\200H\210\220\035-A\244\230\224a\225\0267\331\252\323#\227Dz'%\204rD\024'\362@\264I\373[\240\341\270\2536\325\346\031\345-\251\325\002\251\272c7Qr\345y\316\366\315\276\244\211\314\276q\226\243N\311\335\264<\237\221\320\343\t\212<.\260\003\013\226^\230B\262#\035\323\354\336\010\003\366\351\207\220A\344\314\203 1\220\375\370xN\353\022\330D\"\200;\302\221\322\326\017o\201\331\000c\236\273\200$\020\201U\010\365\024\316\251A\233\004\016\252\207\222\334S\3661[b\267o\263E\341#\331\237\330ME\022\003\302:l6\301\371\013\034\331\3039\376\n\273Ye7W\330\262\214\262\022H(\307\006`\303\375\250\2453=\342\227b^h\365|gz`\026\337\276\256\262\307O\336\036>\213\341f\300g\352\200\333\316\244@\r\234\342\250\352('\224\2572\346(\206B@0M8F\027\235g\205e\220rC\356I\010B\304\207\332\304Uv\"\316\231Y\032x\211\013H\025a\367\003=\244\310\251\025,\021]\265\253a&9\035\014KEO\203\210\2401\212\300\022=\304\317I\340\320\355H\342I\306J\305\024N\233s\022j/\007A\211\247C$\225\224\215\305\347R1\005""\320\023\320\027\271\235\000\274IM>\026\376J\025\032'\3011\010|\244\014\223 !6@v\322\301\331\314PLz\362\306p8e\234o\020\207\327\022f\270\222\313\304LP\334\r\272\275\266)\027\244\205N\257\203RY \333TNd\002\366\036\005Y\342Phz\304B\260=\212\246t\0353\341\340\330z\004\307\tz\2601\rZ\202[\034\"\177\207\223\017\330n(\3779\240z\202\305\004\242!t\204\234\366X\001\317L\347\n\203\243\024\360\207\260\344p:\360\311\243\007\367\277\003\250\253/\232\335\022\240\263\"H\2369\370\311|\365\306\362g\025\023=\211g7o-\232g\323\245\260\017~]\211\353\233\314V\265dgNV\301\215\000J\320\251n\222\014\000\344\204\244\024\375g\032\014\221\000aa\222\225\321\314\222\204!\nk\035\273\207\247%\311\001\314\326\374\tR\314R1\311\302\251d\230\017\246\313+qV\n\326\222<<\345\274\233\233^''\017\244\263i\311\014\260\224\030\355\337\t\342\364\t\242\261M\240J\n9Q\037\307\241\325[K\343f\312GO\264Q\366&\020X\202]\304\361 \3436l\331v\232\256\315vW\330\256N\007\247\315\001\r\222\010r\211\014P\265;+(\024\202;2\rD\237\362\365[M\371\326gM\371\326\307\245|j\341\217\223\361\251\372\241\031\220mB\276\347\231jY<\000\314$u\252\257\314\351\360VI*\251\033\013c4\253f\317k\273\321T\360\223\270\257R\325\2259\310\007\r\223\231\276\221\213\023\300\371x\324\r|\252%\322\247\304\362\330\260u\024X\215$dB\247\246\007\251{\351\007y\251\027\235D\273\336\266\347\366\260\302\"\225t)\274\032\235Jf\306\263BY&\301\242\225>\315\374j\375<\344W3\"\231\347\313\230A\257\242)\235\214\324\r$\241\213ES\252F\356\031-\230\214Bk?M\024hTG\256y\245\312\025\262\2128\006\373N?\253zS{\226\343r\265\246\207\261n2M\333X\302c\341e\200\036<\345\224\t\333\006&o7\340\244X\203\020zzp\\5\250c\342aU\320\311\317\330\312v>\345f\206\362\331\302\226L\326\226>\277U\351p\270\267\261p\025\255$:\337\331\327_\221\323TI\004j\205\253\362\034*:\235\244\026\343\241(\205D$\220\206(\365\3564QLXF\253\352OS\367(\203\346OTo+\363\027,ui\363\354\270\212\240L\264\264\245\343\000\242\210#YrJ\025\341\2428\003\350RU\022\334I\205`0\261\335\222\270\210T\242\352(,\242{\254\252\234\"\000""\021\261\363\325\355r;$\360$\326\251~\027+\245 m\304\373\255\325D\351\211\2564\307\275\235P\265(\305\366S`\243\213'\360.\252j\215)QA1T@(b\346\335\320\267\211\322+M\373z\304Y\000\255\272A\344\211J\307\222\276h\233(\202\302]\\\257\333\346I[\227\3150\236H`d\302f\204\366\216B\217\241\241V\n\204N\313Q\003\007\007T|\200\357m\216x7\333T\340\2407=\027\315d\255t\254,\353d\350\244\300I\311CB\023\031\314\370\374\352X\351\225\004\352T\322!\021J*\342\227X\214\345\302\216\240H\260\021\325\307h\032\354\345&uY\221\220\022\020c\n\021P\341\026\352\"\245\356J\031K%\215TZ\025hu-2\026\2307y\214\021\017a\347b\215\264vu\260\000\3245\214h\352\010\007\302ab\336R\006c*C\t\013\346#ep\022\345\027\225\222~N9\215xZ*}MV\225bd\013\n-\023\226U\312\320^\022\331\020R\277\241\262\235\233\222\276\370M=\303\345\327H\2220\212\251p\344\2700B\214J\024Q BR?2!\302\n\316\r:I\240\253F\3772\270sl-\232\005vH\204\263a\217\200<pG\333\302L\300nZm\024j\251\331\317\213\tmYDK\021\225\211\332\262\001\242\n?\311\236M0\212\246YJ\000\013\302\211bO\202\206L\031\311\224\253\351yIy\213p?1\242>\312C\376J\222?ySH\240\037|R\200\006\233\346a\020Ef\010\202L\205\2564M\031\342\342u|A\313\\\034.\031O\224\276\350ybd+\345\240\001\263[h\370\372\020$\037\276F\022\274\244\215\224\306dy\204\014z%\217XE%3\224{\303\\J3\361\213q\337:\351s8@#\345\305\372Z\260\034\017U.y\022\207\254t\004\326H\037\217\020\240\222\217\332y\202\347\314\202\374\n\261\032\252\335\303\304eB \237\271\326\204\352\202\326\"\356%$\014f\2027Pk\231\261\275\361\010\254\3017\033\256\217\256yj\363\337D\353\023\300W\000M\324\353Ti\373\260NP\213\267\226\350\333\242\370\272(\301\262.\177\206;\301Y\n-\010^\342\021\032\324Y ,\320\310I\362\022\355U\263\263\303`\021\352\010 \256\337Z\256\370\201\272\203\304,+\244\273\213\226\305\\q!\002-\031\300g\033n\321\300\257\016Dt\261e\375I\340QD\2734wt]\370\351\274\302\342\250h`\375I\346\336T\346:\307Y\037\370\235\2704~\332\375O-\367\243\336r\021O\270\351\001~o\364\265\001\311M\243|7\240|\276\274\031\252\256\363\250\252\211$o3\276 \203\215y?""\2068\274\033\363\202\014y\177\313\203;\227!\025\200\313\313$\242au\004\241\364\205\226R\3626\r\010\226\256\262\340\374\304LRB\316\177\365\006\313{\363F\251\370&^\275\221\276\345u\242Wo\3507j\210\371\231Wo\214\004\026\3532\244\230\020S\244V?\365J\ns3yd\211\200bj\221\364jNX\255\251nq\215\224\010\351\313\\c\324\303\350\321\257\374\245!#~`\334kC\350\304y\234\007\230\\\236s\212\367\215\316\377\213E\340BX\346\264\362\023V\027?\031P\024o\375X4/\035\201^\311\327Y\215\264\247\226?\313\226\342*\314s\370>\2761F\026\020V\340E\3118\324\300x\373\303\246\035~\210\235!\370\300\020\005w\005\312\360\254\374\342\014\337=b.\221\311\233/\213K\025sH.\013\202\352\237\233g\323\025\004\255\377\212\n\202\216Y\0060}\340\240e{\314\222 \271O\221$4\271(HXm\372<U\020\021\205A\t\206\306\026\006\t\032o\2604(\301\304\251\224\006\255OW\032\224:IK\211\342-\024\007%F\373wq\320\254\305AB\203OT\036\364\026.\222\274\345\342\2407TJ{j\345A\006WR\345A\211\355\3633\203F!\272\205i\362\337\307o\025\347\036\317\212sco\204\230\245?N\201\220\336\037\237\005\351\362K\204\3227A\306\024\t\251\336\343\212\204&\302\332L\205B\351\253\026U<\344\001\030\334\326uB\272\356\"\023\246\222\230<\334\005\315\212i\246\352 \241R\263\340\324\275\354\2437S!4\373-\014\265f\006\316\222oX8%<;\373[\030\017f\276\2051\271J\310\350\024\020\325\306wD\245Pv\345\246)\nz\023\3277\376%J\202\244w\247-\350I\305@\212\346\247\313\232\322\315\345\263\006%U\374s\343\363\212\224\220e}\327\337\205\377\177\001F`}\303wc`\017zY\026\010\033\376\240:\251\255\000;\352\373\216\027\324@Y\300\311\002\235\0106\222\341(?\262\344\313\020\360+<\206\246V\254^\344\200\334$8reRK\207\010\256\327\222\242\260D:)^\334%U\035M\306\216QM-K\374\025\033\t\364o\204;w\226\225z\327\202yE\227\345E\226\346\322\213M\350$5\214\224\310\302\327\272X\322HS_jz\373\334!\001[V\366\347Hq\240\032\200\256\353\030P\230\006j\377\323\0358|\002)\341[\350\340/n\332\233\235{x@\213\n\324-|#\010\374\005\361\233wb\300u+\370\037\262\252c6\313\202\227HX\016L\000;\341g)\207g\340\230\005\r\263\363?:\t""\365\200\357\342\014\332-\232\207\034\033>\311q\023\263\263rfjY\250\350\226\\1\275\r\240\3431\241h\344B\204\307\376\256\377-\035\367\260\253\013\346c\225\215\373\014Y\037\223s{\352u-P\t\330\031r\266\252\362\005Q\362\267\240\033[$\333\372\215\224\016X\237\033%\020{GWu\007:\016\244^\225\302\3312\205\333&\347\214/\263\237sl\306N\217\031\271cx\0168Id]\347\204\033\364\342\347\200\025\223\361\236\017f\316\211X\314\026\350\371`\346Db\231y@\307\222\257\336|\233C&\316\302g\032\366\270C\215\031E<\214'\021ha\004A(\317\306\010\340j\245\200\313\237\371\325\2027\351\375\314\255l\333LGB\226\202\302\227\202v\350\005\341M\013\306\225\025\244\037)h#.\010\013*h\365-\010\335)\250\025-$\345\254\276\020e\234\022FG f\025Rb\030yP\370\343?\353\257[s\205\013\037\014\353\257\346\336\335\333\034<<\234{g\357\177\206\227\207\037\r\037\016m\374\362#>+\r\256\014\352\207s\227\366\236\r\346\006\277\035\254\016~\030^\031~\272\177y\377\312\341\374;{k\203\017\006\337\017v\207\333\373?\276|x8\177qou\357\207\301\225\303\271\367\006s\007\205?\377r\345\265{\342!\3766\260a\200g\207\027\336\331{\270\2675\330\032n\355\333r\200\273\277\324_\267O8\300\273@\323\326\377\340p\315\341\205a]\014\307\261\033\r\365\373\375+\257\033s\005hp\027\250\\\032D\303\017\207_\354_\334\377\352\245\375\262\367\367\325\277\257\375\343\362\341|i\360\361\340\331p\016\273\\\202\017\227\206\317\016\n_\376b\277\376\006:^\022\354]<\270\370\237\304\333\374\177@\213\213\303\325W \264\277\014\352\203\325\303\271\013{u\374(G\374\352\340+\353\300j\274\336\206\316\357\017\312\303\017\240\233\273\377\207}{\377\331\241\232\354$j\305\301\345W \200\307\360y\036\345\360\010\030\273 Dp\371\360\302\373\203\317\206W\016/\274{\360\356\357\206\317\366\347\016/^\006\251\225\367/\277\272X\034\374n87\274\374\n\332\356\200H\240e\375p\036\373\275\017R\231\377\r\222\003y\276\232\273\270\367\337\203\273\203g\207\363\357\r.\202H\037\3022={\245\276 \207\366\336\363\241R\205\257\376\217T\341\\N$\311\351\036\020(\r>\031><(|\374\362!\261<\355\212\377f\270:\\\337""\377\354\345\225\203\302\355\203\333?\034\374\260\376zm\2760\177A\351\326\205\322\340\017(\243\303y\230\320\341{E\234\314\303\303\013\027\351\373Aa\345\237W^7O\250\313h~k\203\313\203\205ae\377\326K\245H\247E\371\307\301\217\3035\370\272\360R\311\352\365O \237\342\340=\020\363o\207_\356\177\362\362\341\313\237\3761\367\377}\241\236\266";
|
|
11224
|
-
PyObject *data = __Pyx_DecompressString(cstring,
|
|
11222
|
+
#elif (CYTHON_COMPRESS_STRINGS) != 0 /* compression: zlib (5756 bytes) */
|
|
11223
|
+
const char* const cstring = "x\332\355\\Os\033\307\261\007)\3312\340T\275R\305\257R\225\323\310\216\013\204\014A\004%\3322\023\351\025#\313y\262\034\333\262h\312)>\325b\201\035\220k\001\273\253\335\005IXOU<\342\210#\217:\346\230c\216>\276#\217<\352#\350#\274\356\236\177\273\213\005\010\220\224\310\270\342J(`1\323\323\323\323\323\277\356\236\236}\276\370b\241\3026\375\230\331\036\353y|7\340\255\230;\354)\357\357\370\241\303\354p\263\327\345^\314\312\317\353/\312\265\377\262\243\310o-8+\254\345w:\320\324\365\275\250f7[\265\277\332A\340z\233\033\017\252l\375I\025\373\2570\370\274mwz|\205\255WY\333n\305~\330\037\355y\327\356t\354f\207ol@\277\021\262\275\030\177KQ\177\302n3\307m\305\025v\355\316T\035J\245\342\335\220\3331g6\363\370\016k\310_\033\033\365'l\307\215\267X\003\370m0\232\234k\343\374\305S\342\276Q\203\376\177\363{\254\205\"\2128kP\273\006[\270z\365*}\204\177\261W\205\305>\360\023\364Y\303\021\277:\370\0131g\207}\3729\303\000k\021_\016k\366K\305\206\024\0210\3429\310\214\273\351)\036\260/1Y\323\303;>\217\230\007+\327\332\262\275M\216\203\"\247\337\331\241\335\3451\017\243R\361\232\376\257Tt\330\nKK\245X|\344\367\302\0267\354\324JE\030\003\032>\200\037\205L\342-;\326C\272^\304\3038b~\310B\036t\354\026\217\240\013q\010\235\326\261\223b7\331ML%2s(\025\345T\241Wj\371'-7RW\215\345\000Bz@x\013'\221\352Kk\213\003\206<\356\205\036\211\346{\372h\344R*vE\343\037\002\207Va%\227\001\030\370\233\324\242\345\253\014\016f\024\346\336\256\335\r:<\261\010\245\342\235;wD\207\205\347/\252\254l\227\253\254^)\025\237\303\247\025V\177\221j \237\311f7t\263\033\343\2325S\315\352\364\204\232\343\274\333<\344^\213gT\002E\364]?\336\362A\3152\373\250\301\272\276\323\353p\230\373V\034\007\321\312\365\353\216\337\212j\0015\257\371\341\346\365\033\327;n3\004\305\276\236\335\203[q\267S*\022\207\226\353Mg-\242\321F\217\370\263\036r\275\361\340\311\2715$i\235c\355\320\357\322\356O\332\017\006\232\212\032\032\330\360,\002\003\353\266]\332\362\244C\021\251\313\302\352}\266\311=\036\222*\241\250\343\020(VrM\017\010\225\014B""\020\302\032\265\220\031\262:~{th\332\244\216\342\300\343\021\220/\025;~\313\306\231\262Mw\233{\tN\222\003\250\315\345z`L\272\334A-\037\2351\230\204\330\026\252e\2039\342\334A\353\271\005Tm\\V\370]\322fn\304\354f\204X\242\244\224\032N\233\263.\214\020\2239\003;\003T\275\276\344;\263\003\221\362i\231\274\010Z\336\007\002\244>\017h\307\373\3365\336\r\342>\213\244\032\242|\251\251X\302>\364N\010U\254.,\n>\212\0016y\314\264\230\025\253)S\271\006\r\305w\\J\\'\265L\272_\256\262\234\262\355\344vk+W\231\321:\000\343\310P\310\243^'>\r\023\232\321\236\246\035A\037\337;\326\236y\3049[\355D~\322\304\366\210\rP(`d5\010:}P\303\344\314\021\201\205\320a\000;\265v.\252lR/`\t\005!\230t\350\362m>C_\322k\\\241\\\277#c'|\217\323^I\203\211\034\354H0A\023kp`\003>\2012,i$Xz\221\333\3669\301C\375\205\354Bp\221\352'\032,\275\030\351\236\351Q\317\364\000\222g\0169l\241\343\202L?]^\256\210\205\220\337\027oU\0347BU\200\177\246sd\257\nlzp\256q\007\245\232V)\334;f\333H\013\034\362\256\277\315\235Y\360F\310Iz\263\3561\235\3354\263\245\242qz\231\366y\253\310\262'Y\024F)\r\0374\277\20412\274e\034ap\244\021Z\036\240\2516\335\311\346\331!\317b\020=\213\334\016<\003c\001n\252\037\n\t\235\020T\256JTAO\232X\001y\310\311\351\241\265uE\233J\370\226\226\324\271\363\223\277\347\350o\314j\344[\276\027\333\256\207x\tl17\346\335\310\010\201\357\266x\200\306\336\007}\333\241\277$:\\\027\275|\310\325jg\323\017A\267\273\354\013\016\364:\251u\321\234j\255\2108n\253\2105y\274\303A\263\342\035\237\201\222\203\0346]\020\205F\036Z\001\204[\304w\271C\004\007\010\346~lw\350\033r\360\0305\264\315wx\210b\365\300\236|\254\235\002dW\366\256\032\325\204\r\202\203\345L\033C<\324xP(`T-\216\331\262D\024\201\0016\t\374\243\207\2471C0\225!?r\354n\320\323\204\301\035\021\363\223+!:z\340\014J\036}\017\364_\254\202`U\3722b\273U\231\275\355\273\016\366\354y\036\007\273\036\301.'\003p\r\250\\\023\223`~\300I\226^4\016\240\307\000\343D?\372\330\370(\255\374\363\362\256\014\211\372\004i\364\201`k7\021xMj\014\177v\251Gn[I\220}\304\356\223""\375\210X\027~WRN\214sV\270(\330\225(\370\331\315\317*\334Cqo\266\204\213\2630E\374\205?\256\260\255^7\350[\261\357w~\256\241\255\021\237\036\365\202\300\207\274\300_x\014NtWA\247\303\3336\250\316\n\3736 T\350l\254\243\215\002\317\232W\301^[\372\367&P\201\037\276\264;\021'LLt\020\346(\355~\221v\330,\360c\260\332.l.\023! \233\002\216\360\023\374#&T\0014#\373\303\032jV\r\212\227\264uI\241\236\020\013\271\213\236\275\355n\242\246B\030\344\033\257o\374@\260_\333\360\304\337\241\361\300 \345\rh\206\000\215\357\270\312\rO#\236\010<\344\004\211\177\240&v\230\037\326\200\000\356S\264\337\310\377\3756\355V\207Gn(\314\207\301E\276\353F\260\203\365\230;.\330\243Fh\273\021:\3320\336=\262\301\300>\206\\\032\n`\003\212\025j\240\221\n\270G\333_\232\314@\301#k\230\245\204\211\001\037\311\007\030\3655ha\001\341w\266\\\230\244\033IN\251E\025\346\224\341+;z>\321\265\260\2074\307M\n\310\232YM\302s\211\323\teG\000M-\232@\003\004R\020o+t\233\322\250\352\220/\264\267\201\256\300+R\214\032\232U\340\007\350\346\355\r\030Amv\277\371\023hN#I&\241\035\240\2150\325\2745\257\262\310O\206\237\202\016z<\310\276\320N\324\347\246i\3010\224\216\373\001\027s\201\374\356\323H\006]##\000\371\036\254\025\204\3646\"\nr\210\301x\261\321\001U\302\351\311\265\300X\226\375/\355i\271\265\241\321\272\212j\305R\212t\200\026\230Q\360\264\202\246\244gV\233\245\355\003\220'\034\324\353/W\274\001N\326\2750\364C|v\337s\370\256\372\206\032\275\006\263\026\337)a\301mG\240!\262\207Jmt-\327\375\321a\273\234j*zO\345V\314\024i&bt\243\267m#\206\364\344i\\\234\211\036\266TT3\322S\316\335\002\"Y,L\207\001\036i\"\245\337\006\0025\"\231\206\034\246,\240=>\366{\302s@\327\032\350hIN\315\025i\234\213\232\211\036\tx\007\200<R\355\344j\347{\n\240\207\241\300\027\314\245\344D\341 Z\372\020\251\331\032\000\003F\263*-(\240:\306\311\245\263e\016L\232\336\014\021\035PN\031\311\217K\020\324N531\336\341\001\023\342E6q\017\033\346y\331\003\223\007\256Gy\265\343\266x\031lm\255Vc\231\377\312\001\004/[\340\016S\010O\276\037|\332(#\223\034=""\237oi\355!\326\317\355\236\246\325\362\243\230\272/\326\226\027!9P[Z~\362b\314\270\020\2258.\004'v\350 \217\313\360\337\265\372\322\215\233\346OY\272[\322M\3310\254\002[\202\323*[\004[\230\2307xi\222\365L_\222EN[\022\315\204q(\006\030\355x$_e\233\270\230\275c}q\372>y\314\201H\240\313b\246W\037[a\362\306\354\327\333\270U\241\351Z\010\311\307\246\335z\312\026\272\260~`\027[\030\"\2670l\351\330Q\\Y\201\315\016+hL\322\n:\274S\272\263j#\316\344\307\352\335\213\016\354G\331\275\254ss\302\243\275\365\371\215\212\360L[}\262\030\327\215o\032\364\301\274\nw\327\301\256m\267\203N\213\350\270|\263^1\017\027\002THH\275\362I9\236\270\027`\216\230\"\356*A\023\272\272G\346\221\3166{\364=F\314\236\210\3612\201\250\016\271\257\t\353\023\330n\0109n\260\323Q\033\3623Z&\302\244KD\317X\301Y2JF\336d\364D\230\236e*'\237\004~u\323\217\205\217\214\234\020\267\245b\344vA\223m\217\373\275\250\323\257\245\351\243\006G\2519\220\225&_\2330\241\357\362\216#3QN\215\230X\250\200\303y\017Z\020\002u\021\271\002\200\001y\300\227\024\007\371F\tuhdFW\247\245f\2706@\0269\301\340\235&(\t\241j\350\324\221F~\242//{\226\036\031\274\263\331\316\2065/\251<S\216\246\247sK\"v!\301\2309\212S(!Bv\264\004\221bR\206UZ\334d\253n\217L\022\351\235\224\020\312\021Q\234\310\003\321&%\321@\3031u7U\206\016\243\246\364j\201T\235\261\231\232\\y\236\263\344\334\2274\221\331\263s9\352\224L\331\345\331\214\204\036OP\344q\216\035\354`i\205\311%;\3220\315n\215\320a\237~\010\351D\316<\010\022\003\331\217\367\347\264.\301\236H8pG\030R\312/\3616l\033`\314u\026\220\004\"\260r\241\236\302a8h\223\300A\365P\222{\312>fK\354\366m\266(l$\373\023\273\251H\242CX\207\214\026\034\362@]\000\024\013\254\260\233Uvs\205-K/+\201\204rl\0006Lz-\235i\035\201\024\363B\273\347\265\246\007f\361\355\353*{\374\344\355\341\263\030n\006|\246\016\230\333&\005j\340\024GUG\031\241|\2251\347=\344\002\302\326\204\263z\321yVX\006)\253D\204 D|\250L\261\332'\3420\233\245\201\227\270\200P\021\362\036h!EL\255`\211\350\252D\227\231\344t0,\025=\r\"\202\306(\002K\364""\020?'\201C\267#\211'\031\003\322I\2346\2071\324^\016\202\022O\273H*(\033\213\317\245b\n\240'\240/r;\001x\223\232|,\374\225*4N\202c\020\370H\031&AB$@v\322\316\331\314PLz\362\306p8\2659\337 \016\257%\266\341J.\0233Aq\340\007\275\216\251I\244\205N\257\203RY \333TFd\002\366\036\005Y\342\344iz\304B\260=\212\2464\0353\341\340\330\242\207V\313\357AZ\034\264\004S\034\"~\207\343\025H7\224\377\354S\321\302b\002\321\020:BN\211U\3003\323\271\302\340\274\006\354!,9\034A|\362\350\301\375\357\000\352\352\213&[\002tV\004\3113\007?\031\257\336X\376\254b\274'\361\354\346\255E\363l\272\020\366\301\257+p}\223\321\252\226\354\314\301*\230\021@\t::N\222\001\200\234\020\224\242\375L\203!\022 ,L\2622\032Y\2220D\365n\313\026\247\006\211\001L*\376\004!f\251\230d\341T\"\314\007\323\305\2258+\005kI\036\236r\036\344\206\327\311\311\003\351lX2\003,%F\373w\2008}\200h\366&P%\205\234\250\217\343\320\352\255\205q3\305\243'J\224\275\t\004\226`\027q<\310\270\r)\333n\323\261\331\356\n\333\325\341\340\2641\240A\022A.\021\001\252vg\005\205BpG\206\201hS\276~\253!\337\372\254!\337\372\270\220O-\374q\">U\2444\003\262M\210\367\\S\222\213\007\200\231\240N\365\2251\035^]I\005uca\214f\325\354\271\035'\232\n~\022\227b\252\272\374\007\371\240a2\3237ri\371!T\341\004\276\254X\010]\340\335\356\250c\303\366Q`5\022\220\t\235\232\036\244\356\245\037\344\205^@\014\216X\335m\327\351a}G*\350Rx5:\225\314\214g\205\262L\200E+}\232\361\325\372y\210\257fD2\327\223>\203^ES\237\031\251kNB\027\213\246\036\216\3143\356`\332\024Z\373i\242@\243:r\227\014\273\216U\3041\330w\372Q\325\233\312Y\216\213\325\232.\372\272\3110mc\t\217\205\227\001z\360\224S\006l\033\030\274\335\200\223b\rBh\351\301p\325\240\216\212\207UA'?b+\333\371\224\233\031\312g\013[2X[\372\374V\245\313\341r\310\302U\334%\321\371\216\276\376\212\234\246J\"P+\034\025\347Pe\353$\265\030\017E)$\"\2014D=y\267\211b\302Z]U\344\232\272\254i\252\234(~\301R\227\016\317\216\253\010\312@K\357t\034@\024q$\353Z\251\354\\\024g\000]\252B\202\213\257\340\014&\322-\211\333N%\252\206""\302\022\276\307\252\252)\002\020\021\231\257 \340vH\340I\254S\2210VFA\330\210\227h\253\211\322\023]\316\216\271\235P\265(\305\366S`#\300\023x\007U\265\306\224\250\240\370\311'\0241\363n\350+K\351\225\246\274\036q\346C\253\300\217\\QNY\322\267y\023EP\230\305u\203\016O\356u\331\014\375\211\004F&\366\214\320\336Q\35014\324J\201\320i9j`\340\200\212\007\360\275\315\021\357f\233\n\034\364\246\347\242\231\254\225\216\025e\235\014\235\0248)yHh\242\r3>\276:Vx%\201:\025tH\204\222\212\370%\026c9\220\021\024\0016\242\372\030M\203\\nR\227\025\t)\0011\246\020\001\025n\241.R\350\256\224\261T\322H\245U\201V\327\242\315\002\363&\2131b!\354\\\254\221\273]\035,\000u\r#\232:\302\2010\230\030\267\224a3\225\241\204\005\343\2212\030\211\362\213JI?\247\230F<-\225\276\246]\225bd\013\252+\023;\253\224\241\275$\242!\244~CE;7%}\361\233z\206\313\257\221$\261)\246\302\221\343\302\0101*QD\201\010I\375\310\200\010+67\350$\201\3563\375\313\340\316\261\265h\026\330!\021\316\206=\002\362\300\034m\213m\002\373\246\335A\241\226\232\375<\237\020\030\246\242Y\362\250\214\327\226u\020\225\373I\373\3318\243\2705K\t`A8Q\354I\320\220!#m\345jz^R\336\302\335O\214\250\217\362\220\277\222\344O^G\022\350\007\237\024\240A\322<\364\301X\353!\0102\025\272\3224\245\213\213w\376\005-s;\271d,Q\3726\351\211\221\255\224\203\006\314nSM\272:\004\311\207\257\221\000/\271GJc\242<B\006\275\222G\254\242\222\031\312\275an\276\031\377\305\230o\035\364\2658@#\305\305\372\356\261\034\017U.y\022\207\254t\005\326H\033\217\020\240\202\217\332y\202\347\314\202\374\n\261\032\252\333\303\304\215E \237\271;\205\352\202\273E\\\340Hl\230\t\326@\255ef\357\215G`\r\276Yw}t\315S\311\177\343\255O\000_\0014Q\257[\245\364a\235\240\026\257F\321\267E\361uQ\202e]\376\014\027\217\263\024\332\340\274\304#4\250\263@X\240\221\023\344%\332\253fg\207\301\302\325\021@\\\277\265\\\361|u\225\205YVH\027$-\2139\342\002\004\356d\000\237m\270\303\003\277\266\300\243\213-\353O\002\217\"\312\322\334\321u\341\247\363\236\214\243\274\201\365'\231\313Y\231\353\033g}""\340w\342\322\370i\363\237Z\356G\275J#\236p\323\003\354\336\350\273\t\222I\243|3\240l\276\274K\325\352A\216\017L\245\252\232H\3626\343[8\330\230\227p\210\303\2731o\341\220w\307\\\270\330\031R\001\270\274L\"\032VG\020*q/,\021H\202`\351*\013\316O\314$%\344\374\367{\260\274\327{\224\212o\342\375\036\351\033^'z\277\207~m\207\230\237y\277\307\210c\261.]\212\t>Ej\365S\357\2750\327\237G\226\010(\246\026I\257\346\204\325\232\352\326\326H\211\220\276\2745F=\214\036\375\312\337L2b\007\306\275\233\204N\234\307Y\200\311\3459\247x\337\350\374\277\275\004.\204eN+?au\361\223\001E\361j\221E\363f\023\350\225|g\326H{j\371\263l)\256\302<\207\357\343\033\243g\001n\005\336\250\214C\r\214\267?l\332\341\207\330\031\234\017tQ0+P\206g\345\027g\370\202\023s\211L\336|Y\\\252\230CrY\020T\377\334<\233\256 h\375WT\020t\3142\200\351\035\007-\333c\226\004\311<E\222\320\344\242 \261k\323\347\251\202\210(\014J04\2660H\320x\203\245A\t&N\2454h}\272\322\240\324IZJ\024o\2418(1\332\277\213\203f-\016\022\032|\242\362\240\267p\221\344-\027\007\275\241R\332S+\0172\270\222*\017J\244\317\317\014\032\205\350\026\246\211\177\037\277U\234{<+\316\215\275\021b\226\3768\005B:?>\013\322\345\227\010\245o\202\214)\022R\275\307\025\tM\204\265\231\n\205\322W-\252x\310\0030\270\255\353\204t\335E\306M%1\271\230\005\315\212i\246\352 \241R\263\340\324\275\354\2437S!4\373-\014\265f\006\316\222oX8%<;\373[\030\017f\276\2051\271J\310\350\024\020\325\233\357\210J\241\354\312MS\024\364&\256o\374K\224\004I\353N)\350I\305@\212\346\247\313\232\322\315\345\263\006%U\374s\343\363\212\224\220e}\327\337\205\377\177\001\233\300\372\206\357\306\300\036\364\262,\0206\374AuR\251\000;\352{-\327\257\201\262\200\221\005:\021$\222\341(?\262\344\313\020\360+<\206\246V\254^\344\200\334$8rdPK\207\010\216\333\226\242\260D8)\336\016&U\035\267\214\035\243\232Z\226\370+\022\t\364o\204\231;\313J\275k\301\274\007\314r#Ks\351\306\306u\222\032FJd\341k],\271IS_j:}\336\"\001[V\366\347Hq\240\032\200\256k\037Pl\r\324\376\247;p\370\004R\302W\335\301_L\332\233""\314=<\240E\005\352\026\276\021\004\376\202\370\315;1\340\272\025\374\017Y\325>\233e\301K$\254\026L\000;\341g)\207g`\230\005\r\223\371\037\235\204z\300wq\006\2356\315C\216\r\237\344\270\211\331Y93\265,TtK\256\230N\003h\177L(\032\231\020a\261\277\353\177K\307=\354\352\202\371Xe\343>C\324\307\344\334\236\272\201\005*\001\231\241\326\026\345Dz-\365\233\037\304\026\311\266~#\245\003\326\347F\tD\356\350\252\356@\307\201\324\253R8[\2460mr\316\3702\371\234c3vz\314\310\214\3419\340$\021u\235\023n\320\212\237\003VL\304{>\2309'b1)\320\363\301\314\211\3042\363\200-K\276\337\363m\016\2318\013\237i\330\343\0165f\024\3610\236D\240\215\036\004\241<\033#\200\253\225\002.\177\346W\013\336\244\3673\267\262m3\035\tY\n\n_\n\332\240\027\2045-\030SV\220v\244\2407qA\354\240\202V\337\202\320\235\202Z\321BR\316\352\013Q\306)\241w\004bV.%\272\221\007\205?\376\263\376\272=W\270\360\301\260\376j\356\335\275\315\301\303\303\271w\366\376gxy\370\321\360\341\320\306/?\342\263\322\340\312\240~8wi\357\331`n\360\333\301\352\340\207\341\225\341\247\373\227\367\257\034\316\277\263\2676\370`\360\375`w\270\275\377\343\313\207\207\363\027\367V\367~\030\\9\234{o0wP\370\363/W^;'\036\342o\003\033\006xvx\341\235\275\207{[\203\255\341\326\276-\007\270\373K\375u\347\204\003\274\0134m\375\017\016\327\034^\030\326\305p\034\273\321P\277\337\277\362\2721W\200\006w\201\312\245A4\374p\370\305\376\305\375\257^\332/{\177_\375\373\332?.\037\316\227\006\037\017\236\r\347\260\313%\370pi\370\354\240\360\345/\366\353o\240\343%\301\336\305\203\213\377I\274\315\377\007\264\2708\\}\005B\373\313\240>X=\234\273\260W\307\217r\304\257\016\276\262\016\254\306\353m\350\374\376\240<\374\000\2729\373\177\330\267\367\237\035\252\311N\242V\034\\~\005\002x\014\237\347Q\016\217\200\261\013B\004\227\017/\274?\370lx\345\360\302\273\007\357\376n\370l\177\356\360\342e\220Zy\377\362\253\213\305\301\357\206s\303\313\257\240\355\016\210\004Z\326\017\347\261\337\373 \225\371\337 9\220\347\253\271\213{\377=\270;xv8\377\336\340\"\210\364!,\323\263W""\352\013rh\357=\037*U\370\352\377H\025\316\345D\222\234\356\001\201\322\340\223\341\303\203\302\307/\037\022\313\323\256\370o\206\253\303\365\375\317^^9(\334>\270\375\303\301\017\353\257\327\346\013\363\027\224n](\r\376\2002:\234\207\t\035\276W\304\311<<\274p\221\276\037\024V\376y\345u\363\204\272\214\333ompy\2600\254\354\337z\251\024\351\264(\3778\370q\270\006_\027^*Y\275\376\t\344S\034\274\007b\376\355\360\313\375O^>|\371\323?\346\376\037\024\331\303U";
|
|
11224
|
+
PyObject *data = __Pyx_DecompressString(cstring, 5756, 1);
|
|
11225
11225
|
if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error)
|
|
11226
11226
|
const char* const bytes = __Pyx_PyBytes_AsString(data);
|
|
11227
11227
|
#if !CYTHON_ASSUME_SAFE_MACROS
|
|
11228
11228
|
if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) }
|
|
11229
11229
|
#endif
|
|
11230
|
-
#else /* compression: none (
|
|
11231
|
-
const char* const bytes = "{0}() got an unexpected keyword argument '{1}'.?assoc(d: collections.abc.Mapping[K, V], key: K, value: V, factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tCreate a new `Mapping`[1] with `key` associated with `value`.\n\n\tYou can use `assoc` (***assoc***iate) to copy `d` (***d***ictionary) to a new `Mapping` created by\n\t`factory` and assign `value` to `key`. `assoc` does not change `d`.\n\n\tParameters\n\t----------\n\td : Mapping[K, V]\n\t\tSource `Mapping`.\n\tkey : K\n\t\t`key` that `assoc` inserts or replaces.\n\tvalue : V\n\t\t`value` that `assoc` assigns to `key`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingUpdated : MutableMapping[K, V]\n\t\tNew `Mapping` with `key` associated to `value`.\n\n\tExamples\n\t--------\n\t>>> assoc({}, 'a', 1)\n\t{'a': 1}\n\t>>> assoc({'a': 1}, 'a', 3)\n\t{'a': 3}\n\t>>> assoc({'a': 1}, 'b', 3)\n\t{'a': 1, 'b': 3}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tassoc_in(d: collections.abc.Mapping[K, V], keys: collections.abc.Sequence[K], value: V, factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tCreate a new `MutableMapping` from `d` with `value` at the path specified by `keys`.\n\n\t(AI generated docstring)\n\n\tYou can use `assoc_in` to produce a copy of `d` with `value` placed at the nested\n\tlocation given by `keys`. `assoc_in` creates intermediate `MutableMapping` instances\n\tas needed when a key in `keys` is absent from `d`. `assoc_in` does not mutate `d` or\n\tany nested `Mapping` within `d`.\n\n\tParameters\n\t----------\n\td : Mapping[K, V]\n\t\tSource `Mapping`.\n\tkeys : Iterable[K]\n\t\tNon-empty sequence of keys specifying the nested path to the target location in `""d`.\n\tvalue : V\n\t\tThe value to place at the location specified by `keys`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates each new `MutableMapping`[1] in the result.\n\n\tReturns\n\t-------\n\tmappingUpdated : MutableMapping[K, V]\n\t\tNew `MutableMapping` based on `d` with `value` at the path specified by `keys`.\n\n\tSee Also\n\t--------\n\tupdate_in : Apply a `Callable` to a value at a nested path in a `Mapping`.\n\tget_in : Retrieve a value at a nested path in a `Mapping`.\n\tassoc : Create a new `Mapping` from `d` with one key associated to a value.\n\n\tExamples\n\t--------\n\t>>> assoc_in({'a': 1}, ['a'], 2)\n\t{'a': 2}\n\t>>> assoc_in({'a': {'b': 1}}, ['a', 'b'], 2)\n\t{'a': {'b': 2}}\n\t>>> assoc_in({}, ['a', 'b'], 1)\n\t{'a': {'b': 1}}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tassoc_in (line 655)assoc (line 608)disabledissoc(d: collections.abc.Mapping[K, V], *keys: K, factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tCreate a new `MutableMapping`[1] from `d` with the specified `keys` removed.\n\n\t(AI generated docstring)\n\n\tYou can use `dissoc` (***dissoc***iate) to copy `d` (***d***ictionary) to a new `MutableMapping`\n\tcreated by `factory`, then remove each key in `keys` from the result. `dissoc` does not change\n\t`d`. Keys in `keys` that are absent from `d` are silently ignored.\n\n\tParameters\n\t----------\n\td : Mapping[K, V]\n\t\tSource `Mapping`.\n\t*keys : K\n\t\tKeys to remove from `d` in the returned `MutableMapping`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingReduced : MutableMapping[K, V]\n\t\tNew `MutableMapping` containing all items from `d` except those whose keys are in `keys`.\n\n\tAlgorithm Details\n\t----------------""-\n\t`dissoc` selects between two strategies based on the ratio of removed keys to total keys.\n\n\tWhen fewer than 60% of keys are removed, `dissoc` copies all items from `d` and then\n\tdeletes the specified keys one by one.\n\n\tWhen 60% or more of keys are removed, `dissoc` computes the set of remaining keys and\n\tcopies only those items to the result, avoiding unnecessary copy-and-delete operations.\n\n\tSee Also\n\t--------\n\tassoc : Create a new `MutableMapping` from `d` with one key associated to a value.\n\n\tExamples\n\t--------\n\t>>> dissoc({'x': 1, 'y': 2}, 'y')\n\t{'x': 1}\n\t>>> dissoc({'x': 1, 'y': 2}, 'y', 'x')\n\t{}\n\t>>> dissoc({'x': 1}, 'y') # Ignores missing keys\n\t{'x': 1}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tdissoc (line 747)enablegcget_in(keys: collections.abc.Sequence[K], coll: humpy_toolz.dicttoolz.SupportsGetItem[K, V], default: Optional[V] = None, no_default: bool = False) -> Optional[V]\n\n\tRetrieve a value from a potentially nested `coll` (***coll***ection) using a `Sequence` of `keys`.\n\n\t(AI generated docstring)\n\n\tYou can use `get_in` to navigate into a nested `coll` (***coll***ection) by following a\n\tsequence of `keys`. `get_in` applies each key in `keys` sequentially using\n\t`operator.getitem`[1]. If the path does not exist, `get_in` returns `default`. If\n\t`no_default` is `True`, `get_in` re-raises the original exception instead of returning\n\t`default`.\n\n\tParameters\n\t----------\n\tkeys : Sequence[K]\n\t\tSequence of keys that describes the path to traverse in `coll`.\n\tcoll : SupportsGetItem[K, V]\n\t\tCollection to traverse. `get_in` applies each key in `keys` to the current `coll`\n\t\tusing `operator.getitem`[1], so `coll` can be any nested structure such as a `dict`\n\t\tor `list`.\n\tdefault : V | None = None\n\t\tValue to return when the path in `keys` does not exist in `coll`.\n\tno_default : bool = False\n""\t\tWhen `True`, re-raise the original `KeyError`, `IndexError`, or `TypeError`\n\t\tinstead of returning `default`.\n\n\tReturns\n\t-------\n\tvalue : V | None\n\t\tThe value at the nested path in `coll`, or `default` if the path does not exist.\n\n\tRaises\n\t------\n\tKeyError\n\t\tWhen `no_default` is `True` and a key is missing from a mapping.\n\tIndexError\n\t\tWhen `no_default` is `True` and an index is out of range.\n\tTypeError\n\t\tWhen `no_default` is `True` and a key type is incompatible with `coll`.\n\n\tSee Also\n\t--------\n\titertoolz.get : Retrieve a value or values from a collection.\n\toperator.getitem : Return the value at a given key in a collection.\n\tassoc_in : Create a new `Mapping` from `d` with a value at a nested path.\n\tupdate_in : Apply a `Callable` to a value at a nested path in a `Mapping`.\n\n\tExamples\n\t--------\n\t>>> transaction = {'name': 'Alice',\n\t... 'purchase': {'items': ['Apple', 'Orange'],\n\t... 'costs': [0.50, 1.25]},\n\t... 'credit card': '5555-1234-1234-1234'}\n\t>>> get_in(['purchase', 'items', 0], transaction)\n\t'Apple'\n\t>>> get_in(['name'], transaction)\n\t'Alice'\n\t>>> get_in(['purchase', 'total'], transaction)\n\t>>> get_in(['purchase', 'items', 'apple'], transaction)\n\t>>> get_in(['purchase', 'items', 10], transaction)\n\t>>> get_in(['purchase', 'total'], transaction, 0)\n\t0\n\t>>> get_in(['y'], {}, no_default=True)\n\tTraceback (most recent call last):\n\t\t...\n\tKeyError: 'y'\n\n\tReferences\n\t----------\n\t[1] Python `operator` module\n\t\thttps://docs.python.org/3/library/operator.html#operator.getitem\n\tget_in (line 893)humpy_cytoolz/dicttoolz.pyxisenableditemfilter (line 541)itemfilter(predicate: collections.abc.Callable[[tuple[K, V]], bool], d: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tRetain only items from `d` whose key""-value pairs satisfy `predicate` and return a new `Mapping`.\n\n\t(AI generated docstring)\n\n\tYou can use `itemfilter` to select items from `d` (***d***ictionary) by both key and value\n\tsimultaneously. `itemfilter` calls `predicate` with each item yielded by `d.items()`. Each\n\titem is passed to `predicate` as a `tuple[K, V]`. `itemfilter` inserts each item for which\n\t`predicate` returns `True` into a new `MutableMapping`[1] created by `factory`. `itemfilter`\n\tdoes not change `d`.\n\n\tParameters\n\t----------\n\tpredicate : Callable[[tuple[K, V]], bool]\n\t\t`Callable` applied to each item of `d`. Each item is passed to `predicate` as a\n\t\t`tuple[K, V]`, and `predicate` must return `True` for the item to be retained.\n\td : Mapping[K, V]\n\t\tSource `Mapping`[1]. `itemfilter` reads all items from `d` and does not change `d`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingFiltered : MutableMapping[K, V]\n\t\tNew `MutableMapping` created by `factory` containing only items from `d` for which\n\t\t`predicate` returns `True`.\n\n\tSee Also\n\t--------\n\tkeyfilter : Retain only items from `d` whose keys satisfy `predicate` and return a new `Mapping`.\n\tvalfilter : Retain only items from `d` whose values satisfy `predicate` and return a new `Mapping`.\n\titemmap : Apply a `Callable` to all items of a `Mapping` and return a new `Mapping`.\n\n\t>>> def isvalid(item):\n\t... k, v = item\n\t... return k % 2 == 0 and v < 4\n\n\t>>> d = {1: 2, 2: 3, 3: 4, 4: 5}\n\t>>> itemfilter(isvalid, d)\n\t{2: 3}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\titemmap(func: collections.abc.Callable[[tuple[K, V]], tuple[L, W]], d: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[L, W]] = dict) -> collections.abc.MutableMapping[L, W]""\n\n\tApply `func` to all items of `d` and return a new `Mapping` with the transformed items.\n\n\t(AI generated docstring)\n\n\tYou can use `itemmap` to transform all keys and values in `d` simultaneously without\n\tchanging `d`. `itemmap` applies `func` to each item yielded by `d.items()`. Each item\n\tis passed to `func` as a `tuple[K, V]`, and `func` must return a `tuple[L, W]`. `itemmap`\n\tinserts each returned `tuple` as a new key-value pair in a `MutableMapping`[1] created\n\tby `factory`.\n\n\tParameters\n\t----------\n\tfunc : Callable[[tuple[K, V]], tuple[L, W]]\n\t\t`Callable` applied to each item of `d`. Each item of `d` is passed to `func` as a\n\t\t`tuple[K, V]`, and `func` must return a `tuple[L, W]` containing the new key and value.\n\td : Mapping[K, V]\n\t\tSource `Mapping`[1]. `itemmap` reads all items from `d` and does not change `d`.\n\tfactory : Callable[[], MutableMapping[L, W]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingTransformed : MutableMapping[L, W]\n\t\tNew `MutableMapping` created by `factory` populated with each `tuple[L, W]` returned\n\t\tby `func`.\n\n\tSee Also\n\t--------\n\tkeymap : Apply a `Callable` to all keys of a `Mapping` and return a new `Mapping`.\n\tvalmap : Apply a `Callable` to all values of a `Mapping` and return a new `Mapping`.\n\n\tExamples\n\t--------\n\t>>> accountids = {'Alice': 10, 'Bob': 20}\n\t>>> itemmap(reversed, accountids) # doctest: +SKIP\n\t{10: 'Alice', 20: 'Bob'}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\titemmap (line 357)keyfilter (line 480)keyfilter(predicate: collections.abc.Callable[[K], bool], d: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tRetain only items from `d` whose keys satisfy `predicate` and return a new `Mapping`.\n\n""\t(AI generated docstring)\n\n\tYou can use `keyfilter` to select items from `d` (***d***ictionary) by their keys. `keyfilter`\n\tcalls `predicate` with each key yielded by `d.keys()`. `keyfilter` inserts each item whose\n\tkey causes `predicate` to return `True` into a new `MutableMapping`[1] created by `factory`.\n\t`keyfilter` does not change `d`.\n\n\tParameters\n\t----------\n\tpredicate : Callable[[K], bool]\n\t\t`Callable` applied to each key of `d`. `keyfilter` keeps each item for which `predicate`\n\t\treturns `True`.\n\td : Mapping[K, V]\n\t\tSource `Mapping`[1]. `keyfilter` reads all items from `d` and does not change `d`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingFiltered : MutableMapping[K, V]\n\t\tNew `MutableMapping` created by `factory` containing only items from `d` whose keys\n\t\tcause `predicate` to return `True`.\n\n\tSee Also\n\t--------\n\tvalfilter : Retain only items from `d` whose values satisfy `predicate` and return a new `Mapping`.\n\titemfilter : Retain only items from `d` whose key-value pairs satisfy `predicate` and return a new `Mapping`.\n\tkeymap : Apply a `Callable` to all keys of a `Mapping` and return a new `Mapping`.\n\n\t>>> iseven = lambda x: x % 2 == 0\n\t>>> d = {1: 2, 2: 3, 3: 4, 4: 5}\n\t>>> keyfilter(iseven, d)\n\t{2: 3, 4: 5}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tkeymap(func: collections.abc.Callable[[K], L], d: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[L, V]] = dict) -> collections.abc.MutableMapping[L, V]\n\n\tApply `func` to all keys of `d` and return a new `Mapping` with the transformed keys.\n\n\t(AI generated docstring)\n\n\tYou can use `keymap` to transform all keys in `d` without changing `d`. `keymap` applies\n\t`func` to each key yielded by `d.keys()""` and builds a new `MutableMapping`[1] created by\n\t`factory`, associating each transformed key with the corresponding original value of `d`.\n\n\tParameters\n\t----------\n\tfunc : Callable[[K], L]\n\t\t`Callable` applied to each key of `d`. Each key of `d` is passed to `func`\n\t\tindividually, and `func` returns the corresponding transformed key.\n\td : Mapping[K, V]\n\t\tSource `Mapping`[1]. `keymap` reads all keys from `d` and does not change `d`.\n\tfactory : Callable[[], MutableMapping[L, V]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingTransformed : MutableMapping[L, V]\n\t\tNew `MutableMapping` created by `factory` in which each key from `d` is replaced by\n\t\tthe result of applying `func` to that key, associated with the original value of `d`.\n\n\tSee Also\n\t--------\n\tvalmap : Apply a `Callable` to all values of a `Mapping` and return a new `Mapping`.\n\titemmap : Apply a `Callable` to all items of a `Mapping` and return a new `Mapping`.\n\n\tExamples\n\t--------\n\t>>> bills = {'Alice': [20, 15, 30], 'Bob': [10, 35]}\n\t>>> keymap(str.lower, bills) # doctest: +SKIP\n\t{'alice': [20, 15, 30], 'bob': [10, 35]}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tkeymap (line 298)merge(*dicts: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\nMerge a collection of dictionaries and return a new `Mapping`.\n\n(AI generated docstring)\n\nYou can use `merge` to combine two or more `Mapping`[1] objects into a single new `Mapping`.\n`merge` calls `factory` to create the result, then updates it in order with each `Mapping` in\n`dicts`. When the same key appears in more than one element, the value from the later element\ntakes precedence. You can also pass a single `Iterable[Mapping[K, V]]` as the sole positional""\nargument instead of multiple `Mapping` arguments.\n\nParameters\n----------\n*dicts : Mapping[K, V]\n\t`Mapping` objects to merge. Alternatively, pass a single `Iterable[Mapping[K, V]]` as the\n\tsole positional argument.\nfactory : Callable[[], MutableMapping[K, V]] = dict\n\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\nReturns\n-------\nmappingMerged : MutableMapping[K, V]\n\tNew `MutableMapping` created by `factory` containing all key-value pairs from `dicts`. For\n\tduplicate keys, the value from the last `Mapping` in `dicts` that contains the key takes\n\tprecedence.\n\nSee Also\n--------\nmerge_with : Merge dictionaries and apply a `Callable` to combined values.\n\nExamples\n--------\n>>> merge({1: 'one'}, {2: 'two'})\n{1: 'one', 2: 'two'}\n\nLater dictionaries have precedence\n\n>>> merge({1: 2, 3: 4}, {3: 3, 4: 4})\n{1: 2, 3: 3, 4: 4}\n\nReferences\n----------\n[1] Python `collections.abc` module\n\thttps://docs.python.org/3/library/collections.abc.html\n\tmerge (line 98)merge_with(func: collections.abc.Callable[[list[V]], V], *dicts: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\nMerge dictionaries and apply a `Callable` to combined values.\n\n(AI generated docstring)\n\nYou can use `merge_with` to combine two or more `Mapping`[1] objects and resolve key conflicts\nby applying `func` to a `list` of all values associated with each key. For each key that\nappears in one or more elements of `dicts`, `merge_with` collects all associated values into a\n`list` in the order they appear across `dicts`, then calls `func` with that `list` to produce\nthe value in the result. You can also pass a single `Iterable[Mapping[K, V]]` as the sole\npositional argument after `func`.\n\nParameters\n----------\nfunc : Callable[[list[V]], V]\n\t`Callable` applied to the `list` of values associated with each key across all `Mapping`\n\tobjects in `dic""ts`. `func` receives a non-empty `list` and must return the merged value for\n\tthat key.\n*dicts : Mapping[K, V]\n\t`Mapping` objects to merge. Alternatively, pass a single `Iterable[Mapping[K, V]]` as the\n\tsole positional argument after `func`.\nfactory : Callable[[], MutableMapping[K, V]] = dict\n\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\nReturns\n-------\nmappingMerged : MutableMapping[K, V]\n\tNew `MutableMapping` created by `factory` where each key maps to the result of calling\n\t`func` with all values associated with that key across `dicts`.\n\nSee Also\n--------\nmerge : Merge a collection of `Mapping` objects into a new `Mapping`.\n\nExamples\n--------\n>>> merge_with(sum, {1: 1, 2: 2}, {1: 10, 2: 20})\n{1: 11, 2: 22}\n\n>>> merge_with(first, {1: 1, 2: 2}, {2: 20, 3: 30}) # doctest: +SKIP\n{1: 1, 2: 2, 3: 30}\n\nReferences\n----------\n[1] Python `collections.abc` module\n\thttps://docs.python.org/3/library/collections.abc.html\n\tmerge_with (line 185)no default __reduce__ due to non-trivial __cinit__<stringsource>update_in(d: collections.abc.Mapping[K, V], keys: collections.abc.Sequence[K], func: collections.abc.Callable[[V], V], default: V | None = None, factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tApply a `Callable` to a value at a nested path in a `Mapping`.\n\n\t(AI generated docstring)\n\n\tYou can use `update_in` to produce a copy of `d` with the value at the nested path\n\tspecified by `keys` replaced by the result of calling `func` on the current value.\n\t`update_in` creates intermediate `MutableMapping` instances as needed when a key in\n\t`keys` is absent from `d`. If the innermost key is absent, `func` receives `default`\n\tinstead of an existing value. `update_in` does not mutate `d` or any nested `Mapping`\n\twithin `d`.\n\n\tParameters\n\t----------\n\td : Mapping[K, V]\n\t\tSource `Mapping`.\n\tkeys : Sequence[K]\n\t\tNon-empty seq""uence of keys specifying the nested path to the value to update in `d`.\n\tfunc : Callable[[V], V]\n\t\t`Callable` applied to the current value at the path in `keys`. If the innermost\n\t\tkey is absent from `d`, `func` receives `default`.\n\tdefault : V | None = None\n\t\tValue passed to `func` when the innermost key is absent from `d`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates each new `MutableMapping`[1] in the result.\n\n\tReturns\n\t-------\n\tmappingUpdated : MutableMapping[K, V]\n\t\tNew `MutableMapping` based on `d` with the value at the path specified by `keys`\n\t\treplaced by the result of `func`.\n\n\tSee Also\n\t--------\n\tassoc_in : Create a new `Mapping` from `d` with a value at a nested path.\n\tget_in : Retrieve a value at a nested path in a `Mapping`.\n\tassoc : Create a new `Mapping` from `d` with one key associated to a value.\n\n\tExamples\n\t--------\n\t>>> inc = lambda x: x + 1\n\t>>> update_in({'a': 0}, ['a'], inc)\n\t{'a': 1}\n\n\t>>> update_in({}, ['z'], inc, 0)\n\t{'z': 1}\n\n\t>>> update_in({}, [1, 2, 3], str, default=\"bar\")\n\t{1: {2: {3: 'bar'}}}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tupdate_in (line 802)valfilter (line 419)valfilter(predicate: collections.abc.Callable[[V], bool], d: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tRetain only items from `d` whose values satisfy `predicate` and return a new `Mapping`.\n\n\t(AI generated docstring)\n\n\tYou can use `valfilter` to select items from `d` (***d***ictionary) by their values. `valfilter`\n\tcalls `predicate` with each value yielded by `d.values()`. `valfilter` inserts each item whose\n\tvalue causes `predicate` to return `True` into a new `MutableMapping`[1] created by `factory`.\n\t`valfilter` does not change `d`.\n\n\tParameters""\n\t----------\n\tpredicate : Callable[[V], bool]\n\t\t`Callable` applied to each value of `d`. `valfilter` keeps each item for which `predicate`\n\t\treturns `True`.\n\td : Mapping[K, V]\n\t\tSource `Mapping`[1]. `valfilter` reads all items from `d` and does not change `d`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingFiltered : MutableMapping[K, V]\n\t\tNew `MutableMapping` created by `factory` containing only items from `d` whose values\n\t\tcause `predicate` to return `True`.\n\n\tSee Also\n\t--------\n\tkeyfilter : Retain only items from `d` whose keys satisfy `predicate` and return a new `Mapping`.\n\titemfilter : Retain only items from `d` whose key-value pairs satisfy `predicate` and return a new `Mapping`.\n\tvalmap : Apply a `Callable` to all values of a `Mapping` and return a new `Mapping`.\n\n\t>>> iseven = lambda x: x % 2 == 0\n\t>>> d = {1: 2, 2: 3, 3: 4, 4: 5}\n\t>>> valfilter(iseven, d)\n\t{1: 2, 3: 4}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tvalmap(func: collections.abc.Callable[[V], W], d: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, W]] = dict) -> collections.abc.MutableMapping[K, W]\n\n\tApply `func` to all values of `d` and return a new `Mapping` with the transformed values.\n\n\t(AI generated docstring)\n\n\tYou can use `valmap` to transform all values in `d` without changing `d`. `valmap` applies\n\t`func` to each value yielded by `d.values()` and builds a new `MutableMapping`[1] created\n\tby `factory`, preserving each original key associated with its transformed value.\n\n\tParameters\n\t----------\n\tfunc : Callable[[V], W]\n\t\t`Callable` applied to each value of `d`. Each value of `d` is passed to `func`\n\t\tindividually, and `func` returns the corresponding transformed value.\n\td :"" Mapping[K, V]\n\t\tSource `Mapping`[1]. `valmap` reads all values from `d` and does not change `d`.\n\tfactory : Callable[[], MutableMapping[K, W]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingTransformed : MutableMapping[K, W]\n\t\tNew `MutableMapping` created by `factory` in which each key from `d` is associated\n\t\twith the result of applying `func` to the corresponding value of `d`.\n\n\tSee Also\n\t--------\n\tkeymap : Apply a `Callable` to all keys of a `Mapping` and return a new `Mapping`.\n\titemmap : Apply a `Callable` to all items of a `Mapping` and return a new `Mapping`.\n\n\tExamples\n\t--------\n\t>>> bills = {'Alice': [20, 15, 30], 'Bob': [10, 35]}\n\t>>> valmap(sum, bills) # doctest: +SKIP\n\t{'Alice': 65, 'Bob': 45}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tvalmap (line 239)Mapping__Pyx_PyDict_NextRefabc__all__assocassoc_inasyncio.coroutines__class_getitem__cline_in_tracebackcollcollectionsddefaultdictsdifference_updatedissocfactoryformatfunc__func__get_in__getstate__humpy_cytoolz.dicttoolz_is_coroutineititemfilteritemmapitems_iter_mapping_iter_mapping.__reduce_cython___iter_mapping.__setstate_cython__keykeyfilterkeymapkeyskwargs__main__mergemerge_with__module____name__nextno_defaultpoppopitempredicate__pyx_capi____pyx_state__qualname____reduce____reduce_cython____reduce_ex__self__set_name__setdefault__setstate____setstate_cython____test__updateupdate_invalfiltervalmapvaluevaluesPyObject *(PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_assoc *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_assoc_in *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttool""z_update_in *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_get_in *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_itemfilter *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_itemmap *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_keyfilter *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_keymap *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_valfilter *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_valmap *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_c_dissoc *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_c_merge_with *__pyx_optional_args)\000PyObject *(PyObject *, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_c_merge *__pyx_optional_args)\000__pyx_t_13humpy_cytoolz_9dicttoolz_f_map_next (PyObject *, PyObject **)\000int (PyObject *, Py_ssize_t *, PyObject **, PyObject **)\000assoc\000assoc_in\000update_in\000get_in\000itemfilter\000itemmap\000keyfilter\000keymap\000valfilter\000valmap\000c_dissoc\000c_merge_with\000c_merge\000get_map_iter\000PyMapping_Next\320\000;\2701\360f\001\000\003\024\2201\340\001\006\200g\210Q\330\001\005\200\\\220\021\220#\220Q\220a\330\001\005\200X\210Q\330\001\n\210!\2101\330\001\007\200q\210\001\210\023\210A\210U\220!\2206\230\021\230!\330\002\005\200T\210\024\210R\210x\220v\230X\240Q\330\002\004\200A\200U\210!\330\001\010""\210\001\320\000B\300!\360d\001\000\003\024\2201\340\001\006\200g\210Q\330\001\005\200\\\220\021\220#\220Q\220a\330\001\005\200X\210Q\330\001\n\210!\2101\330\001\007\200q\210\001\210\023\210A\210U\220!\2206\230\021\230!\330\002\005\200Y\210a\210x\220q\330\003\005\200Q\200h\210h\220h\230a\330\001\010\210\001\320\000C\3001\360l\001\000\003\024\2201\340\001\006\200g\210Q\330\001\005\200\\\220\021\220#\220Q\220a\330\001\005\200X\210Q\330\001\n\210!\2101\330\001\007\200q\210\001\210\023\210A\210U\220!\2206\230\021\230!\330\002\006\200h\210a\330\002\006\200h\210a\330\002\005\200Y\210b\220\003\2201\330\003\005\200Q\200e\2101\330\001\010\210\001\320\000\032\230!\360`\001\000\002\005\200C\200q\210\007\210s\220\"\220D\230\004\230J\240a\240u\250A\250T\260\021\330\002\n\210%\210q\220\001\330\001\010\210\007\210q\220\007\220q\320\000F\300a\360N\001\000\002\007\200g\210Q\330\001\004\320\004\025\220Q\220a\330\002\017\210q\220\004\220A\340\002\004\200G\2101\210A\330\001\003\2001\200G\2101\330\001\010\210\001\320\000J\320J_\320_`\360v\001\000\002\013\210'\220\024\220Q\220d\230$\230a\230q\330\001\006\200g\210Q\330\001\004\320\004\025\220Q\220a\330\002\017\210q\220\004\220A\340\002\004\200G\2101\210A\330\001\t\210\021\340\001\005\200W\210A\330\002\005\200X\210S\220\001\330\003\007\200q\210\001\210\021\330\003\013\2107\220!\330\003\006\320\006\027\220q\230\001\330\004\021\220\021\220'\230\021\340\004\t\210\027\220\001\220\021\340\003\007\200w\210a\330\003\013\2101\330\002\007\200q\210\013\2201\330\002\014\210A\330\002\n\210!\340\001\004\200H\210C\210q\330\002\010\210\004\210A\210Q\210a\210q\340\002\010\210\004\210A\210Q\330\001\006\200a\200{\220!\330\001\010\210\001\320\000J\310!\360d\001\000\002\013\210'\220\024\220Q\220d\230$\230a\230q\330\001\006\200g\210Q\330\001\004\320\004\025\220Q\220a\330\002\017\210q\220\004\220A\340\002\004\200G\2101\210A\330\001\t\210\021\340\001\005\200W\210A\330\002\005\200X\210S\220\001\330\003\007\200q\210\001\210\021\330\003\013\2107\220!\330\003\006""\320\006\027\220q\230\001\330\004\021\220\021\220'\230\021\340\004\t\210\027\220\001\220\021\340\003\007\200w\210a\330\003\013\2101\330\002\007\200q\210\013\2201\330\002\014\210A\330\002\n\210!\340\001\006\200a\200{\220!\330\001\010\210\001\200\001\330\004\n\210+\220Q\320\000%\240Q\360d\001\000\002\005\200C\200q\210\007\210s\220\"\220D\230\004\230J\240a\240u\250A\250T\260\021\330\002\n\210%\210q\220\001\330\001\010\210\014\220A\220V\2307\240!\320\000=\320=U\320UV\360T\002\000\002\003\330\002\006\200h\210a\330\003\n\210$\210a\210q\330\002\t\210\021\330\010\t\330\002\005\200Q\330\003\004\330\002\t\210\021\320\000:\270!\360b\001\000\003\024\2201\340\001\006\200g\210Q\330\001\005\200\\\220\021\220#\220Q\220a\330\001\005\200X\210Q\330\001\n\210!\2101\330\001\007\200q\210\001\210\023\210A\210U\220!\2206\230\021\230!\330\002\004\200A\200T\210\021\210(\220)\2308\2401\330\001\010\210\001\320\000:\270!\360b\001\000\003\024\2201\340\001\006\200g\210Q\330\001\005\200\\\220\021\220#\220Q\220a\330\001\005\200X\210Q\330\001\n\210!\2101\330\001\007\200q\210\001\210\023\210A\210U\220!\2206\230\021\230!\330\002\004\200A\200X\210X\220T\230\021\230(\240!\330\001\010\210\001\200\001\360j\001\000\002\t\210\010\220\001\220\023\220F\230+\240Q\240j\260\001";
|
|
11230
|
+
#else /* compression: none (27691 bytes) */
|
|
11231
|
+
const char* const bytes = "{0}() got an unexpected keyword argument '{1}'.?assoc(d: collections.abc.Mapping[K, V], key: K, value: V, factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tCreate a new `Mapping`[1] with `key` associated with `value`.\n\n\tYou can use `assoc` (***assoc***iate) to copy `d` (***d***ictionary) to a new `Mapping` created by\n\t`factory` and assign `value` to `key`. `assoc` does not change `d`.\n\n\tParameters\n\t----------\n\td : Mapping[K, V]\n\t\tSource `Mapping`.\n\tkey : K\n\t\t`key` that `assoc` inserts or replaces.\n\tvalue : V\n\t\t`value` that `assoc` assigns to `key`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingUpdated : MutableMapping[K, V]\n\t\tNew `Mapping` with `key` associated to `value`.\n\n\tExamples\n\t--------\n\t>>> assoc({}, 'a', 1)\n\t{'a': 1}\n\t>>> assoc({'a': 1}, 'a', 3)\n\t{'a': 3}\n\t>>> assoc({'a': 1}, 'b', 3)\n\t{'a': 1, 'b': 3}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tassoc_in(d: collections.abc.Mapping[K, V], keys: collections.abc.Sequence[K], value: V, factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tCreate a new `MutableMapping` from `d` with `value` at the path specified by `keys`.\n\n\t(AI generated docstring)\n\n\tYou can use `assoc_in` to produce a copy of `d` with `value` placed at the nested\n\tlocation given by `keys`. `assoc_in` creates intermediate `MutableMapping` instances\n\tas needed when a key in `keys` is absent from `d`. `assoc_in` does not mutate `d` or\n\tany nested `Mapping` within `d`.\n\n\tParameters\n\t----------\n\td : Mapping[K, V]\n\t\tSource `Mapping`.\n\tkeys : Iterable[K]\n\t\tNon-empty sequence of keys specifying the nested path to the target location in `""d`.\n\tvalue : V\n\t\tThe value to place at the location specified by `keys`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates each new `MutableMapping`[1] in the result.\n\n\tReturns\n\t-------\n\tmappingUpdated : MutableMapping[K, V]\n\t\tNew `MutableMapping` based on `d` with `value` at the path specified by `keys`.\n\n\tSee Also\n\t--------\n\tupdate_in : Apply a `Callable` to a value at a nested path in a `Mapping`.\n\tget_in : Retrieve a value at a nested path in a `Mapping`.\n\tassoc : Create a new `Mapping` from `d` with one key associated to a value.\n\n\tExamples\n\t--------\n\t>>> assoc_in({'a': 1}, ['a'], 2)\n\t{'a': 2}\n\t>>> assoc_in({'a': {'b': 1}}, ['a', 'b'], 2)\n\t{'a': {'b': 2}}\n\t>>> assoc_in({}, ['a', 'b'], 1)\n\t{'a': {'b': 1}}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tassoc_in (line 655)assoc (line 608)disabledissoc(d: collections.abc.Mapping[K, V], *keys: K, factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tCreate a new `MutableMapping`[1] from `d` with the specified `keys` removed.\n\n\t(AI generated docstring)\n\n\tYou can use `dissoc` (***dissoc***iate) to copy `d` (***d***ictionary) to a new `MutableMapping`\n\tcreated by `factory`, then remove each key in `keys` from the result. `dissoc` does not change\n\t`d`. Keys in `keys` that are absent from `d` are silently ignored.\n\n\tParameters\n\t----------\n\td : Mapping[K, V]\n\t\tSource `Mapping`.\n\t*keys : K\n\t\tKeys to remove from `d` in the returned `MutableMapping`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingReduced : MutableMapping[K, V]\n\t\tNew `MutableMapping` containing all items from `d` except those whose keys are in `keys`.\n\n\tAlgorithm Details\n\t----------------""-\n\t`dissoc` selects between two strategies based on the ratio of removed keys to total keys.\n\n\tWhen fewer than 60% of keys are removed, `dissoc` copies all items from `d` and then\n\tdeletes the specified keys one by one.\n\n\tWhen 60% or more of keys are removed, `dissoc` computes the set of remaining keys and\n\tcopies only those items to the result, avoiding unnecessary copy-and-delete operations.\n\n\tSee Also\n\t--------\n\tassoc : Create a new `MutableMapping` from `d` with one key associated to a value.\n\n\tExamples\n\t--------\n\t>>> dissoc({'x': 1, 'y': 2}, 'y')\n\t{'x': 1}\n\t>>> dissoc({'x': 1, 'y': 2}, 'y', 'x')\n\t{}\n\t>>> dissoc({'x': 1}, 'y') # Ignores missing keys\n\t{'x': 1}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tdissoc (line 747)enablegcget_in(keys: collections.abc.Sequence[K], coll: humpy_toolz.dicttoolz.SupportsGetItem[K, V], default: Optional[V] = None, no_default: bool = False) -> Optional[V]\n\n\tRetrieve a value from a potentially nested `coll` (***coll***ection) using a `Sequence` of `keys`.\n\n\tYou can use `get_in` to navigate into a nested `coll` (***coll***ection) by following a\n\t`Sequence` of `keys`. `get_in` applies each key in `keys` sequentially using\n\t`operator.getitem`[1].\n\n\tIf the desired key does not exist, `get_in` will `raise` an `Exception` or `return` `default`\n\tdepending on the parameter `no_default`. If `no_default` is `False`, which is the default,\n\t`get_in` will `return` `default`. If `no_default` is `True`, `get_in` will `raise` an\n\t`Exception`.\n\n\tParameters\n\t----------\n\tkeys : Sequence[K]\n\t\t`Sequence` of keys that describes the path to traverse in `coll`.\n\tcoll : SupportsGetItem[K, V]\n\t\tPython `object` to traverse. `get_in` uses `operator.getitem`[1], so the nested objects in\n\t\t`coll` can be nested o any type that works with `operator.getitem`, such as a `dict` or\n\t\t`list`.\n\tdefault : V"" | None = None\n\t\tValue to return when the path in `keys` does not exist in `coll`.\n\tno_default : bool = False\n\t\tWhen `True`, `raise` `KeyError`, `IndexError`, or `TypeError` instead of returning `default`.\n\n\tReturns\n\t-------\n\tvalue : V | None\n\t\tThe value at the nested path in `coll`, or `default` if the path does not exist.\n\n\tRaises\n\t------\n\tKeyError\n\t\tWhen `no_default` is `True` and a key is missing from a mapping.\n\tIndexError\n\t\tWhen `no_default` is `True` and an index is out of range.\n\tTypeError\n\t\tWhen `no_default` is `True` and a key type is incompatible with `coll`.\n\n\tSee Also\n\t--------\n\titertoolz.get : Retrieve a value or values from a collection.\n\toperator.getitem : Return the value at a given key in a collection.\n\tassoc_in : Create a new `Mapping` from `d` with a value at a nested path.\n\tupdate_in : Apply a `Callable` to a value at a nested path in a `Mapping`.\n\n\tExamples\n\t--------\n\t>>> transaction = {'name': 'Alice',\n\t... 'purchase': {'items': ['Apple', 'Orange'],\n\t... 'costs': [0.50, 1.25]},\n\t... 'credit card': '5555-1234-1234-1234'}\n\t>>> get_in(['purchase', 'items', 0], transaction)\n\t'Apple'\n\t>>> get_in(['name'], transaction)\n\t'Alice'\n\t>>> get_in(['purchase', 'total'], transaction)\n\t>>> get_in(['purchase', 'items', 'apple'], transaction)\n\t>>> get_in(['purchase', 'items', 10], transaction)\n\t>>> get_in(['purchase', 'total'], transaction, 0)\n\t0\n\t>>> get_in(['y'], {}, no_default=True)\n\tTraceback (most recent call last):\n\t\t...\n\tKeyError: 'y'\n\n\tReferences\n\t----------\n\t[1] Python `operator` module\n\t\thttps://docs.python.org/3/library/operator.html#operator.getitem\n\tget_in (line 893)humpy_cytoolz/dicttoolz.pyxisenableditemfilter (line 541)itemfilter(predicate: collections.abc.Callable[[tuple[K, V]], bool], d: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping""[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tRetain only items from `d` whose key-value pairs satisfy `predicate` and return a new `Mapping`.\n\n\t(AI generated docstring)\n\n\tYou can use `itemfilter` to select items from `d` (***d***ictionary) by both key and value\n\tsimultaneously. `itemfilter` calls `predicate` with each item yielded by `d.items()`. Each\n\titem is passed to `predicate` as a `tuple[K, V]`. `itemfilter` inserts each item for which\n\t`predicate` returns `True` into a new `MutableMapping`[1] created by `factory`. `itemfilter`\n\tdoes not change `d`.\n\n\tParameters\n\t----------\n\tpredicate : Callable[[tuple[K, V]], bool]\n\t\t`Callable` applied to each item of `d`. Each item is passed to `predicate` as a\n\t\t`tuple[K, V]`, and `predicate` must return `True` for the item to be retained.\n\td : Mapping[K, V]\n\t\tSource `Mapping`[1]. `itemfilter` reads all items from `d` and does not change `d`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingFiltered : MutableMapping[K, V]\n\t\tNew `MutableMapping` created by `factory` containing only items from `d` for which\n\t\t`predicate` returns `True`.\n\n\tSee Also\n\t--------\n\tkeyfilter : Retain only items from `d` whose keys satisfy `predicate` and return a new `Mapping`.\n\tvalfilter : Retain only items from `d` whose values satisfy `predicate` and return a new `Mapping`.\n\titemmap : Apply a `Callable` to all items of a `Mapping` and return a new `Mapping`.\n\n\t>>> def isvalid(item):\n\t... k, v = item\n\t... return k % 2 == 0 and v < 4\n\n\t>>> d = {1: 2, 2: 3, 3: 4, 4: 5}\n\t>>> itemfilter(isvalid, d)\n\t{2: 3}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\titemmap(func: collections.abc.Callable[[tuple[K, V]], tuple[L, W]], d: collections.abc.Mapping[K, V], factory: collections.abc.C""allable[[], collections.abc.MutableMapping[L, W]] = dict) -> collections.abc.MutableMapping[L, W]\n\n\tApply `func` to all items of `d` and return a new `Mapping` with the transformed items.\n\n\t(AI generated docstring)\n\n\tYou can use `itemmap` to transform all keys and values in `d` simultaneously without\n\tchanging `d`. `itemmap` applies `func` to each item yielded by `d.items()`. Each item\n\tis passed to `func` as a `tuple[K, V]`, and `func` must return a `tuple[L, W]`. `itemmap`\n\tinserts each returned `tuple` as a new key-value pair in a `MutableMapping`[1] created\n\tby `factory`.\n\n\tParameters\n\t----------\n\tfunc : Callable[[tuple[K, V]], tuple[L, W]]\n\t\t`Callable` applied to each item of `d`. Each item of `d` is passed to `func` as a\n\t\t`tuple[K, V]`, and `func` must return a `tuple[L, W]` containing the new key and value.\n\td : Mapping[K, V]\n\t\tSource `Mapping`[1]. `itemmap` reads all items from `d` and does not change `d`.\n\tfactory : Callable[[], MutableMapping[L, W]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingTransformed : MutableMapping[L, W]\n\t\tNew `MutableMapping` created by `factory` populated with each `tuple[L, W]` returned\n\t\tby `func`.\n\n\tSee Also\n\t--------\n\tkeymap : Apply a `Callable` to all keys of a `Mapping` and return a new `Mapping`.\n\tvalmap : Apply a `Callable` to all values of a `Mapping` and return a new `Mapping`.\n\n\tExamples\n\t--------\n\t>>> accountids = {'Alice': 10, 'Bob': 20}\n\t>>> itemmap(reversed, accountids) # doctest: +SKIP\n\t{10: 'Alice', 20: 'Bob'}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\titemmap (line 357)keyfilter (line 480)keyfilter(predicate: collections.abc.Callable[[K], bool], d: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]""\n\n\tRetain only items from `d` whose keys satisfy `predicate` and return a new `Mapping`.\n\n\t(AI generated docstring)\n\n\tYou can use `keyfilter` to select items from `d` (***d***ictionary) by their keys. `keyfilter`\n\tcalls `predicate` with each key yielded by `d.keys()`. `keyfilter` inserts each item whose\n\tkey causes `predicate` to return `True` into a new `MutableMapping`[1] created by `factory`.\n\t`keyfilter` does not change `d`.\n\n\tParameters\n\t----------\n\tpredicate : Callable[[K], bool]\n\t\t`Callable` applied to each key of `d`. `keyfilter` keeps each item for which `predicate`\n\t\treturns `True`.\n\td : Mapping[K, V]\n\t\tSource `Mapping`[1]. `keyfilter` reads all items from `d` and does not change `d`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingFiltered : MutableMapping[K, V]\n\t\tNew `MutableMapping` created by `factory` containing only items from `d` whose keys\n\t\tcause `predicate` to return `True`.\n\n\tSee Also\n\t--------\n\tvalfilter : Retain only items from `d` whose values satisfy `predicate` and return a new `Mapping`.\n\titemfilter : Retain only items from `d` whose key-value pairs satisfy `predicate` and return a new `Mapping`.\n\tkeymap : Apply a `Callable` to all keys of a `Mapping` and return a new `Mapping`.\n\n\t>>> iseven = lambda x: x % 2 == 0\n\t>>> d = {1: 2, 2: 3, 3: 4, 4: 5}\n\t>>> keyfilter(iseven, d)\n\t{2: 3, 4: 5}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tkeymap(func: collections.abc.Callable[[K], L], d: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[L, V]] = dict) -> collections.abc.MutableMapping[L, V]\n\n\tApply `func` to all keys of `d` and return a new `Mapping` with the transformed keys.\n\n\t(AI generated docstring)\n\n\tYou can use `keymap` to transform al""l keys in `d` without changing `d`. `keymap` applies\n\t`func` to each key yielded by `d.keys()` and builds a new `MutableMapping`[1] created by\n\t`factory`, associating each transformed key with the corresponding original value of `d`.\n\n\tParameters\n\t----------\n\tfunc : Callable[[K], L]\n\t\t`Callable` applied to each key of `d`. Each key of `d` is passed to `func`\n\t\tindividually, and `func` returns the corresponding transformed key.\n\td : Mapping[K, V]\n\t\tSource `Mapping`[1]. `keymap` reads all keys from `d` and does not change `d`.\n\tfactory : Callable[[], MutableMapping[L, V]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingTransformed : MutableMapping[L, V]\n\t\tNew `MutableMapping` created by `factory` in which each key from `d` is replaced by\n\t\tthe result of applying `func` to that key, associated with the original value of `d`.\n\n\tSee Also\n\t--------\n\tvalmap : Apply a `Callable` to all values of a `Mapping` and return a new `Mapping`.\n\titemmap : Apply a `Callable` to all items of a `Mapping` and return a new `Mapping`.\n\n\tExamples\n\t--------\n\t>>> bills = {'Alice': [20, 15, 30], 'Bob': [10, 35]}\n\t>>> keymap(str.lower, bills) # doctest: +SKIP\n\t{'alice': [20, 15, 30], 'bob': [10, 35]}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tkeymap (line 298)merge(*dicts: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\nMerge a collection of dictionaries and return a new `Mapping`.\n\n(AI generated docstring)\n\nYou can use `merge` to combine two or more `Mapping`[1] objects into a single new `Mapping`.\n`merge` calls `factory` to create the result, then updates it in order with each `Mapping` in\n`dicts`. When the same key appears in more than one element, the value from the later element""\ntakes precedence. You can also pass a single `Iterable[Mapping[K, V]]` as the sole positional\nargument instead of multiple `Mapping` arguments.\n\nParameters\n----------\n*dicts : Mapping[K, V]\n\t`Mapping` objects to merge. Alternatively, pass a single `Iterable[Mapping[K, V]]` as the\n\tsole positional argument.\nfactory : Callable[[], MutableMapping[K, V]] = dict\n\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\nReturns\n-------\nmappingMerged : MutableMapping[K, V]\n\tNew `MutableMapping` created by `factory` containing all key-value pairs from `dicts`. For\n\tduplicate keys, the value from the last `Mapping` in `dicts` that contains the key takes\n\tprecedence.\n\nSee Also\n--------\nmerge_with : Merge dictionaries and apply a `Callable` to combined values.\n\nExamples\n--------\n>>> merge({1: 'one'}, {2: 'two'})\n{1: 'one', 2: 'two'}\n\nLater dictionaries have precedence\n\n>>> merge({1: 2, 3: 4}, {3: 3, 4: 4})\n{1: 2, 3: 3, 4: 4}\n\nReferences\n----------\n[1] Python `collections.abc` module\n\thttps://docs.python.org/3/library/collections.abc.html\n\tmerge (line 98)merge_with(func: collections.abc.Callable[[list[V]], V], *dicts: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\nMerge dictionaries and apply a `Callable` to combined values.\n\n(AI generated docstring)\n\nYou can use `merge_with` to combine two or more `Mapping`[1] objects and resolve key conflicts\nby applying `func` to a `list` of all values associated with each key. For each key that\nappears in one or more elements of `dicts`, `merge_with` collects all associated values into a\n`list` in the order they appear across `dicts`, then calls `func` with that `list` to produce\nthe value in the result. You can also pass a single `Iterable[Mapping[K, V]]` as the sole\npositional argument after `func`.\n\nParameters\n----------\nfunc : Callable[[list[V]], V]\n\t`Callable` a""pplied to the `list` of values associated with each key across all `Mapping`\n\tobjects in `dicts`. `func` receives a non-empty `list` and must return the merged value for\n\tthat key.\n*dicts : Mapping[K, V]\n\t`Mapping` objects to merge. Alternatively, pass a single `Iterable[Mapping[K, V]]` as the\n\tsole positional argument after `func`.\nfactory : Callable[[], MutableMapping[K, V]] = dict\n\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\nReturns\n-------\nmappingMerged : MutableMapping[K, V]\n\tNew `MutableMapping` created by `factory` where each key maps to the result of calling\n\t`func` with all values associated with that key across `dicts`.\n\nSee Also\n--------\nmerge : Merge a collection of `Mapping` objects into a new `Mapping`.\n\nExamples\n--------\n>>> merge_with(sum, {1: 1, 2: 2}, {1: 10, 2: 20})\n{1: 11, 2: 22}\n\n>>> merge_with(first, {1: 1, 2: 2}, {2: 20, 3: 30}) # doctest: +SKIP\n{1: 1, 2: 2, 3: 30}\n\nReferences\n----------\n[1] Python `collections.abc` module\n\thttps://docs.python.org/3/library/collections.abc.html\n\tmerge_with (line 185)no default __reduce__ due to non-trivial __cinit__<stringsource>update_in(d: collections.abc.Mapping[K, V], keys: collections.abc.Sequence[K], func: collections.abc.Callable[[V], V], default: V | None = None, factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tApply a `Callable` to a value at a nested path in a `Mapping`.\n\n\t(AI generated docstring)\n\n\tYou can use `update_in` to produce a copy of `d` with the value at the nested path\n\tspecified by `keys` replaced by the result of calling `func` on the current value.\n\t`update_in` creates intermediate `MutableMapping` instances as needed when a key in\n\t`keys` is absent from `d`. If the innermost key is absent, `func` receives `default`\n\tinstead of an existing value. `update_in` does not mutate `d` or any nested `Mapping`\n\twithin `d`.\n\n\tParameters""\n\t----------\n\td : Mapping[K, V]\n\t\tSource `Mapping`.\n\tkeys : Sequence[K]\n\t\tNon-empty sequence of keys specifying the nested path to the value to update in `d`.\n\tfunc : Callable[[V], V]\n\t\t`Callable` applied to the current value at the path in `keys`. If the innermost\n\t\tkey is absent from `d`, `func` receives `default`.\n\tdefault : V | None = None\n\t\tValue passed to `func` when the innermost key is absent from `d`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates each new `MutableMapping`[1] in the result.\n\n\tReturns\n\t-------\n\tmappingUpdated : MutableMapping[K, V]\n\t\tNew `MutableMapping` based on `d` with the value at the path specified by `keys`\n\t\treplaced by the result of `func`.\n\n\tSee Also\n\t--------\n\tassoc_in : Create a new `Mapping` from `d` with a value at a nested path.\n\tget_in : Retrieve a value at a nested path in a `Mapping`.\n\tassoc : Create a new `Mapping` from `d` with one key associated to a value.\n\n\tExamples\n\t--------\n\t>>> inc = lambda x: x + 1\n\t>>> update_in({'a': 0}, ['a'], inc)\n\t{'a': 1}\n\n\t>>> update_in({}, ['z'], inc, 0)\n\t{'z': 1}\n\n\t>>> update_in({}, [1, 2, 3], str, default=\"bar\")\n\t{1: {2: {3: 'bar'}}}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tupdate_in (line 802)valfilter (line 419)valfilter(predicate: collections.abc.Callable[[V], bool], d: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, V]] = dict) -> collections.abc.MutableMapping[K, V]\n\n\tRetain only items from `d` whose values satisfy `predicate` and return a new `Mapping`.\n\n\t(AI generated docstring)\n\n\tYou can use `valfilter` to select items from `d` (***d***ictionary) by their values. `valfilter`\n\tcalls `predicate` with each value yielded by `d.values()`. `valfilter` inserts each item whose\n\tvalue causes `predicate` to return `True` into a ""new `MutableMapping`[1] created by `factory`.\n\t`valfilter` does not change `d`.\n\n\tParameters\n\t----------\n\tpredicate : Callable[[V], bool]\n\t\t`Callable` applied to each value of `d`. `valfilter` keeps each item for which `predicate`\n\t\treturns `True`.\n\td : Mapping[K, V]\n\t\tSource `Mapping`[1]. `valfilter` reads all items from `d` and does not change `d`.\n\tfactory : Callable[[], MutableMapping[K, V]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingFiltered : MutableMapping[K, V]\n\t\tNew `MutableMapping` created by `factory` containing only items from `d` whose values\n\t\tcause `predicate` to return `True`.\n\n\tSee Also\n\t--------\n\tkeyfilter : Retain only items from `d` whose keys satisfy `predicate` and return a new `Mapping`.\n\titemfilter : Retain only items from `d` whose key-value pairs satisfy `predicate` and return a new `Mapping`.\n\tvalmap : Apply a `Callable` to all values of a `Mapping` and return a new `Mapping`.\n\n\t>>> iseven = lambda x: x % 2 == 0\n\t>>> d = {1: 2, 2: 3, 3: 4, 4: 5}\n\t>>> valfilter(iseven, d)\n\t{1: 2, 3: 4}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tvalmap(func: collections.abc.Callable[[V], W], d: collections.abc.Mapping[K, V], factory: collections.abc.Callable[[], collections.abc.MutableMapping[K, W]] = dict) -> collections.abc.MutableMapping[K, W]\n\n\tApply `func` to all values of `d` and return a new `Mapping` with the transformed values.\n\n\t(AI generated docstring)\n\n\tYou can use `valmap` to transform all values in `d` without changing `d`. `valmap` applies\n\t`func` to each value yielded by `d.values()` and builds a new `MutableMapping`[1] created\n\tby `factory`, preserving each original key associated with its transformed value.\n\n\tParameters\n\t----------\n\tfunc : Callable[[V], W]\n\t\t`Callable` applied to each value of `d`. Each value of `d` is p""assed to `func`\n\t\tindividually, and `func` returns the corresponding transformed value.\n\td : Mapping[K, V]\n\t\tSource `Mapping`[1]. `valmap` reads all values from `d` and does not change `d`.\n\tfactory : Callable[[], MutableMapping[K, W]] = dict\n\t\t`Callable` that creates the `MutableMapping`[1] to `return`.\n\n\tReturns\n\t-------\n\tmappingTransformed : MutableMapping[K, W]\n\t\tNew `MutableMapping` created by `factory` in which each key from `d` is associated\n\t\twith the result of applying `func` to the corresponding value of `d`.\n\n\tSee Also\n\t--------\n\tkeymap : Apply a `Callable` to all keys of a `Mapping` and return a new `Mapping`.\n\titemmap : Apply a `Callable` to all items of a `Mapping` and return a new `Mapping`.\n\n\tExamples\n\t--------\n\t>>> bills = {'Alice': [20, 15, 30], 'Bob': [10, 35]}\n\t>>> valmap(sum, bills) # doctest: +SKIP\n\t{'Alice': 65, 'Bob': 45}\n\n\tReferences\n\t----------\n\t[1] Python `collections.abc` module\n\t\thttps://docs.python.org/3/library/collections.abc.html\n\tvalmap (line 239)Mapping__Pyx_PyDict_NextRefabc__all__assocassoc_inasyncio.coroutines__class_getitem__cline_in_tracebackcollcollectionsddefaultdictsdifference_updatedissocfactoryformatfunc__func__get_in__getstate__humpy_cytoolz.dicttoolz_is_coroutineititemfilteritemmapitems_iter_mapping_iter_mapping.__reduce_cython___iter_mapping.__setstate_cython__keykeyfilterkeymapkeyskwargs__main__mergemerge_with__module____name__nextno_defaultpoppopitempredicate__pyx_capi____pyx_state__qualname____reduce____reduce_cython____reduce_ex__self__set_name__setdefault__setstate____setstate_cython____test__updateupdate_invalfiltervalmapvaluevaluesPyObject *(PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_assoc *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_assoc_in *__pyx_optional_args)\000PyObject *(PyObject *,"" PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_update_in *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_get_in *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_itemfilter *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_itemmap *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_keyfilter *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_keymap *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_valfilter *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_valmap *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_c_dissoc *__pyx_optional_args)\000PyObject *(PyObject *, PyObject *, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_c_merge_with *__pyx_optional_args)\000PyObject *(PyObject *, struct __pyx_opt_args_13humpy_cytoolz_9dicttoolz_c_merge *__pyx_optional_args)\000__pyx_t_13humpy_cytoolz_9dicttoolz_f_map_next (PyObject *, PyObject **)\000int (PyObject *, Py_ssize_t *, PyObject **, PyObject **)\000assoc\000assoc_in\000update_in\000get_in\000itemfilter\000itemmap\000keyfilter\000keymap\000valfilter\000valmap\000c_dissoc\000c_merge_with\000c_merge\000get_map_iter\000PyMapping_Next\320\000;\2701\360f\001\000\003\024\2201\340\001\006\200g\210Q\330\001\005\200\\\220\021\220#\220Q\220a\330\001\005\200X\210Q\330\001\n\210!\2101\330\001\007\200q\210\001\210\023\210A\210U\220!\2206\230""\021\230!\330\002\005\200T\210\024\210R\210x\220v\230X\240Q\330\002\004\200A\200U\210!\330\001\010\210\001\320\000B\300!\360d\001\000\003\024\2201\340\001\006\200g\210Q\330\001\005\200\\\220\021\220#\220Q\220a\330\001\005\200X\210Q\330\001\n\210!\2101\330\001\007\200q\210\001\210\023\210A\210U\220!\2206\230\021\230!\330\002\005\200Y\210a\210x\220q\330\003\005\200Q\200h\210h\220h\230a\330\001\010\210\001\320\000C\3001\360l\001\000\003\024\2201\340\001\006\200g\210Q\330\001\005\200\\\220\021\220#\220Q\220a\330\001\005\200X\210Q\330\001\n\210!\2101\330\001\007\200q\210\001\210\023\210A\210U\220!\2206\230\021\230!\330\002\006\200h\210a\330\002\006\200h\210a\330\002\005\200Y\210b\220\003\2201\330\003\005\200Q\200e\2101\330\001\010\210\001\320\000\032\230!\360`\001\000\002\005\200C\200q\210\007\210s\220\"\220D\230\004\230J\240a\240u\250A\250T\260\021\330\002\n\210%\210q\220\001\330\001\010\210\007\210q\220\007\220q\320\000F\300a\360N\001\000\002\007\200g\210Q\330\001\004\320\004\025\220Q\220a\330\002\017\210q\220\004\220A\340\002\004\200G\2101\210A\330\001\003\2001\200G\2101\330\001\010\210\001\320\000J\320J_\320_`\360v\001\000\002\013\210'\220\024\220Q\220d\230$\230a\230q\330\001\006\200g\210Q\330\001\004\320\004\025\220Q\220a\330\002\017\210q\220\004\220A\340\002\004\200G\2101\210A\330\001\t\210\021\340\001\005\200W\210A\330\002\005\200X\210S\220\001\330\003\007\200q\210\001\210\021\330\003\013\2107\220!\330\003\006\320\006\027\220q\230\001\330\004\021\220\021\220'\230\021\340\004\t\210\027\220\001\220\021\340\003\007\200w\210a\330\003\013\2101\330\002\007\200q\210\013\2201\330\002\014\210A\330\002\n\210!\340\001\004\200H\210C\210q\330\002\010\210\004\210A\210Q\210a\210q\340\002\010\210\004\210A\210Q\330\001\006\200a\200{\220!\330\001\010\210\001\320\000J\310!\360d\001\000\002\013\210'\220\024\220Q\220d\230$\230a\230q\330\001\006\200g\210Q\330\001\004\320\004\025\220Q\220a\330\002\017\210q\220\004\220A\340\002\004\200G\2101\210A\330\001\t\210\021\340\001\005\200W\210A""\330\002\005\200X\210S\220\001\330\003\007\200q\210\001\210\021\330\003\013\2107\220!\330\003\006\320\006\027\220q\230\001\330\004\021\220\021\220'\230\021\340\004\t\210\027\220\001\220\021\340\003\007\200w\210a\330\003\013\2101\330\002\007\200q\210\013\2201\330\002\014\210A\330\002\n\210!\340\001\006\200a\200{\220!\330\001\010\210\001\200\001\330\004\n\210+\220Q\320\000%\240Q\360d\001\000\002\005\200C\200q\210\007\210s\220\"\220D\230\004\230J\240a\240u\250A\250T\260\021\330\002\n\210%\210q\220\001\330\001\010\210\014\220A\220V\2307\240!\320\000=\320=U\320UV\360T\002\000\002\003\330\002\006\200h\210a\330\003\n\210$\210a\210q\330\002\t\210\021\330\010\t\330\002\005\200Q\330\003\004\330\002\t\210\021\320\000:\270!\360b\001\000\003\024\2201\340\001\006\200g\210Q\330\001\005\200\\\220\021\220#\220Q\220a\330\001\005\200X\210Q\330\001\n\210!\2101\330\001\007\200q\210\001\210\023\210A\210U\220!\2206\230\021\230!\330\002\004\200A\200T\210\021\210(\220)\2308\2401\330\001\010\210\001\320\000:\270!\360b\001\000\003\024\2201\340\001\006\200g\210Q\330\001\005\200\\\220\021\220#\220Q\220a\330\001\005\200X\210Q\330\001\n\210!\2101\330\001\007\200q\210\001\210\023\210A\210U\220!\2206\230\021\230!\330\002\004\200A\200X\210X\220T\230\021\230(\240!\330\001\010\210\001\200\001\360j\001\000\002\t\210\010\220\001\220\023\220F\230+\240Q\240j\260\001";
|
|
11232
11232
|
PyObject *data = NULL;
|
|
11233
11233
|
CYTHON_UNUSED_VAR(__Pyx_DecompressString);
|
|
11234
11234
|
#endif
|
|
@@ -895,27 +895,27 @@ cpdef object get_in(object keys, object coll, object default=None, object no_def
|
|
|
895
895
|
|
|
896
896
|
Retrieve a value from a potentially nested `coll` (***coll***ection) using a `Sequence` of `keys`.
|
|
897
897
|
|
|
898
|
-
(AI generated docstring)
|
|
899
|
-
|
|
900
898
|
You can use `get_in` to navigate into a nested `coll` (***coll***ection) by following a
|
|
901
|
-
|
|
902
|
-
`operator.getitem`[1].
|
|
903
|
-
|
|
904
|
-
`default
|
|
899
|
+
`Sequence` of `keys`. `get_in` applies each key in `keys` sequentially using
|
|
900
|
+
`operator.getitem`[1].
|
|
901
|
+
|
|
902
|
+
If the desired key does not exist, `get_in` will `raise` an `Exception` or `return` `default`
|
|
903
|
+
depending on the parameter `no_default`. If `no_default` is `False`, which is the default,
|
|
904
|
+
`get_in` will `return` `default`. If `no_default` is `True`, `get_in` will `raise` an
|
|
905
|
+
`Exception`.
|
|
905
906
|
|
|
906
907
|
Parameters
|
|
907
908
|
----------
|
|
908
909
|
keys : Sequence[K]
|
|
909
|
-
Sequence of keys that describes the path to traverse in `coll`.
|
|
910
|
+
`Sequence` of keys that describes the path to traverse in `coll`.
|
|
910
911
|
coll : SupportsGetItem[K, V]
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
912
|
+
Python `object` to traverse. `get_in` uses `operator.getitem`[1], so the nested objects in
|
|
913
|
+
`coll` can be nested o any type that works with `operator.getitem`, such as a `dict` or
|
|
914
|
+
`list`.
|
|
914
915
|
default : V | None = None
|
|
915
916
|
Value to return when the path in `keys` does not exist in `coll`.
|
|
916
917
|
no_default : bool = False
|
|
917
|
-
When `True`,
|
|
918
|
-
instead of returning `default`.
|
|
918
|
+
When `True`, `raise` `KeyError`, `IndexError`, or `TypeError` instead of returning `default`.
|
|
919
919
|
|
|
920
920
|
Returns
|
|
921
921
|
-------
|
|
@@ -10,6 +10,26 @@ def countby[V](key: Any, seq: Iterable[Sequence[V] | Mapping[Any, V]]) -> dict[V
|
|
|
10
10
|
def countby[T, K, V]( key: Callable[[T], K] | Any, seq: Iterable[T] | Iterable[Sequence[V] | Mapping[Any, V]] ) -> dict[K, int] | dict[V, int]: ...
|
|
11
11
|
|
|
12
12
|
class partitionby[T](Iterator[tuple[T, ...]]):
|
|
13
|
+
"""Partition a sequence according to a function
|
|
14
|
+
|
|
15
|
+
Partition `s` into a sequence of lists such that, when traversing
|
|
16
|
+
`s`, every time the output of `func` changes a new list is started
|
|
17
|
+
and that and subsequent items are collected into that list.
|
|
18
|
+
|
|
19
|
+
>>> is_space = lambda c: c == " "
|
|
20
|
+
>>> list(partitionby(is_space, "I have space"))
|
|
21
|
+
[('I',), (' ',), ('h', 'a', 'v', 'e'), (' ',), ('s', 'p', 'a', 'c', 'e')]
|
|
22
|
+
|
|
23
|
+
>>> is_large = lambda x: x > 10
|
|
24
|
+
>>> list(partitionby(is_large, [1, 2, 1, 99, 88, 33, 99, -1, 5]))
|
|
25
|
+
[(1, 2, 1), (99, 88, 33, 99), (-1, 5)]
|
|
26
|
+
|
|
27
|
+
See Also
|
|
28
|
+
--------
|
|
29
|
+
partition
|
|
30
|
+
groupby
|
|
31
|
+
itertools.groupby
|
|
32
|
+
"""
|
|
13
33
|
def __init__(self, func: Callable[[T], Any], seq: Iterable[T]) -> None: ...
|
|
14
34
|
def __iter__(self) -> partitionby[T]: ...
|
|
15
35
|
def __next__(self) -> tuple[T, ...]: ...
|