pythonwrench 0.4.10__tar.gz → 0.5.1__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.
Files changed (78) hide show
  1. {pythonwrench-0.4.10/src/pythonwrench.egg-info → pythonwrench-0.5.1}/PKG-INFO +4 -1
  2. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/pyproject.toml +5 -1
  3. pythonwrench-0.5.1/src/pythonwrench/__init__.py +442 -0
  4. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/_core.py +1 -1
  5. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/checksum.py +98 -35
  6. pythonwrench-0.5.1/src/pythonwrench/collections/__init__.py +104 -0
  7. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/collections/collections.py +57 -1
  8. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/csv.py +14 -7
  9. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/disk_cache.py +63 -31
  10. pythonwrench-0.5.1/src/pythonwrench/time.py +31 -0
  11. pythonwrench-0.5.1/src/pythonwrench/typing/__init__.py +121 -0
  12. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/typing/checks.py +97 -0
  13. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/typing/classes.py +2 -0
  14. {pythonwrench-0.4.10 → pythonwrench-0.5.1/src/pythonwrench.egg-info}/PKG-INFO +4 -1
  15. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench.egg-info/SOURCES.txt +1 -0
  16. pythonwrench-0.5.1/src/pythonwrench.egg-info/requires.txt +7 -0
  17. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/tests/test_checksum.py +20 -0
  18. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/tests/test_collections.py +14 -0
  19. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/tests/test_disk_cache.py +1 -1
  20. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/tests/test_typing.py +23 -0
  21. pythonwrench-0.4.10/src/pythonwrench/__init__.py +0 -208
  22. pythonwrench-0.4.10/src/pythonwrench/collections/__init__.py +0 -43
  23. pythonwrench-0.4.10/src/pythonwrench/typing/__init__.py +0 -48
  24. pythonwrench-0.4.10/src/pythonwrench.egg-info/requires.txt +0 -3
  25. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/LICENSE +0 -0
  26. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/README.md +0 -0
  27. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/docs/requirements.txt +0 -0
  28. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/setup.cfg +0 -0
  29. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/setup.py +0 -0
  30. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/__main__.py +0 -0
  31. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/abc.py +0 -0
  32. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/argparse.py +0 -0
  33. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/cast.py +0 -0
  34. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/collections/prop.py +0 -0
  35. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/collections/reducers.py +0 -0
  36. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/concurrent.py +0 -0
  37. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/dataclasses.py +0 -0
  38. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/datetime.py +0 -0
  39. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/difflib.py +0 -0
  40. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/entries.py +0 -0
  41. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/enum.py +0 -0
  42. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/functools.py +0 -0
  43. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/hashlib.py +0 -0
  44. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/importlib.py +0 -0
  45. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/inspect.py +0 -0
  46. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/json.py +0 -0
  47. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/jsonl.py +0 -0
  48. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/logging.py +0 -0
  49. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/math.py +0 -0
  50. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/os.py +0 -0
  51. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/pickle.py +0 -0
  52. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/random.py +0 -0
  53. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/re.py +0 -0
  54. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/semver.py +0 -0
  55. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench/warnings.py +0 -0
  56. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench.egg-info/dependency_links.txt +0 -0
  57. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench.egg-info/entry_points.txt +0 -0
  58. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/src/pythonwrench.egg-info/top_level.txt +0 -0
  59. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/tests/test_abc.py +0 -0
  60. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/tests/test_argparse.py +0 -0
  61. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/tests/test_cast.py +0 -0
  62. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/tests/test_csv.py +0 -0
  63. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/tests/test_dataclasses.py +0 -0
  64. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/tests/test_difflib.py +0 -0
  65. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/tests/test_entries.py +0 -0
  66. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/tests/test_enum.py +0 -0
  67. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/tests/test_functools.py +0 -0
  68. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/tests/test_hashlib.py +0 -0
  69. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/tests/test_importlib.py +0 -0
  70. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/tests/test_inspect.py +0 -0
  71. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/tests/test_json.py +0 -0
  72. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/tests/test_jsonl.py +0 -0
  73. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/tests/test_logging.py +0 -0
  74. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/tests/test_math.py +0 -0
  75. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/tests/test_os.py +0 -0
  76. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/tests/test_random.py +0 -0
  77. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/tests/test_readme.py +0 -0
  78. {pythonwrench-0.4.10 → pythonwrench-0.5.1}/tests/test_semver.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pythonwrench
3
- Version: 0.4.10
3
+ Version: 0.5.1
4
4
  Summary: Python library with tools for typing, manipulating collections, and more!
5
5
  Author-email: "Étienne Labbé (Labbeti)" <labbeti.pub@gmail.com>
6
6
  Maintainer-email: "Étienne Labbé (Labbeti)" <labbeti.pub@gmail.com>
@@ -50,8 +50,11 @@ Classifier: Operating System :: POSIX
50
50
  Requires-Python: <3.15,>=3.8
51
51
  Description-Content-Type: text/markdown
52
52
  License-File: LICENSE
53
+ Requires-Dist: lazy-loader>=0.4
53
54
  Requires-Dist: typing-extensions>=4.10.0
54
55
  Provides-Extra: dev
56
+ Provides-Extra: lazy
57
+ Requires-Dist: lazy-loader>=0.4; extra == "lazy"
55
58
 
56
59
  # pythonwrench
57
60
 
@@ -31,6 +31,7 @@ maintainers = [
31
31
  ]
32
32
  dynamic = ["version"]
33
33
  dependencies = [
34
+ "lazy-loader>=0.4",
34
35
  "typing-extensions>=4.10.0",
35
36
  ]
36
37
 
@@ -51,6 +52,9 @@ pyw-safe-rmdir = "pythonwrench.entries:main_safe_rmdir"
51
52
 
52
53
  [project.optional-dependencies]
53
54
  dev = []
55
+ lazy = [
56
+ "lazy-loader>=0.4",
57
+ ]
54
58
 
55
59
  [build-system]
56
60
  requires = ["setuptools >= 61.0"]
@@ -67,7 +71,7 @@ version = {attr = "pythonwrench.__version__"}
67
71
 
68
72
  [tool.pyright]
69
73
  include = ["src"]
70
- exclude = ["**/__pycache__"]
74
+ exclude = ["**/__pycache__", '**/node_modules', '**/.*', '.venv']
71
75
  pythonVersion = "3.8"
72
76
 
73
77
  [tool.pytest.ini_options]
@@ -0,0 +1,442 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+
4
+ """Python library with tools for typing, manipulating collections, and more!"""
5
+
6
+ __name__ = "pythonwrench"
7
+ __author__ = "Étienne Labbé (Labbeti)"
8
+ __author_email__ = "labbeti.pub@gmail.com"
9
+ __license__ = "MIT"
10
+ __maintainer__ = "Étienne Labbé (Labbeti)"
11
+ __status__ = "Development"
12
+ __version__ = "0.5.1"
13
+
14
+
15
+ from typing import TYPE_CHECKING
16
+
17
+ try:
18
+ import lazy_loader as lazy # type: ignore
19
+ except ImportError:
20
+ lazy = None
21
+
22
+
23
+ if TYPE_CHECKING or lazy is None:
24
+ # Re-import for language servers
25
+ from . import abc as abc
26
+ from . import argparse as argparse
27
+ from . import cast as cast
28
+ from . import checksum as checksum
29
+ from . import collections as collections
30
+ from . import concurrent as concurrent
31
+ from . import csv as csv
32
+ from . import dataclasses as dataclasses
33
+ from . import datetime as datetime
34
+ from . import difflib as difflib
35
+ from . import disk_cache as disk_cache
36
+ from . import entries as entries
37
+ from . import enum as enum
38
+ from . import functools as functools
39
+ from . import hashlib as hashlib
40
+ from . import importlib as importlib
41
+ from . import inspect as inspect
42
+ from . import json as json
43
+ from . import jsonl as jsonl
44
+ from . import logging as logging
45
+ from . import math as math
46
+ from . import os as os
47
+ from . import pickle as pickle
48
+ from . import random as random
49
+ from . import re as re
50
+ from . import semver as semver
51
+ from . import warnings as warnings
52
+
53
+ # Global library imports
54
+ from .abc import Singleton
55
+ from .argparse import (
56
+ parse_to,
57
+ str_to_bool,
58
+ str_to_none,
59
+ str_to_optional_bool,
60
+ str_to_optional_float,
61
+ str_to_optional_int,
62
+ str_to_optional_str,
63
+ str_to_type,
64
+ )
65
+ from .cast import as_builtin, register_as_builtin_fn
66
+ from .checksum import checksum_any, checksum_object, register_checksum_fn
67
+ from .collections import (
68
+ all_eq,
69
+ all_ne,
70
+ contained,
71
+ dict_list_to_list_dict,
72
+ dump_dict,
73
+ duplicate_list,
74
+ filter_iterable,
75
+ find,
76
+ flat_dict_of_dict,
77
+ flat_list_of_list,
78
+ flatten,
79
+ intersect,
80
+ intersect_lists,
81
+ is_full,
82
+ is_sorted,
83
+ is_unique,
84
+ list_dict_to_dict_list,
85
+ prod,
86
+ recursive_generator,
87
+ reduce_add,
88
+ reduce_and,
89
+ reduce_mul,
90
+ reduce_or,
91
+ shuffled,
92
+ sorted_dict,
93
+ sum,
94
+ unflat_dict_of_dict,
95
+ unflat_list_of_list,
96
+ union,
97
+ union_dicts,
98
+ union_lists,
99
+ unzip,
100
+ )
101
+ from .csv import dump_csv, dumps_csv, load_csv, loads_csv, read_csv, save_csv
102
+ from .dataclasses import get_defaults_values
103
+ from .datetime import get_now, get_now_iso8601
104
+ from .difflib import find_closest_in_list, sequence_matcher_ratio
105
+ from .disk_cache import disk_cache_call, disk_cache_decorator
106
+ from .enum import StrEnum
107
+ from .functools import (
108
+ Compose,
109
+ compose,
110
+ filter_and_call,
111
+ function_alias,
112
+ identity,
113
+ repeat_fn,
114
+ )
115
+ from .hashlib import hash_file
116
+ from .importlib import (
117
+ is_available_package,
118
+ is_editable_package,
119
+ reload_editable_packages,
120
+ reload_submodules,
121
+ search_submodules,
122
+ )
123
+ from .inspect import get_argnames, get_current_fn_name, get_fullname
124
+ from .json import dump_json, dumps_json, load_json, loads_json, read_json, save_json
125
+ from .jsonl import (
126
+ dump_jsonl,
127
+ dumps_jsonl,
128
+ load_jsonl,
129
+ loads_jsonl,
130
+ read_jsonl,
131
+ save_jsonl,
132
+ )
133
+ from .logging import (
134
+ VERBOSE_DEBUG,
135
+ VERBOSE_ERROR,
136
+ VERBOSE_INFO,
137
+ VERBOSE_WARNING,
138
+ MkdirFileHandler,
139
+ get_current_file_logger,
140
+ get_ipython_name,
141
+ get_null_logger,
142
+ log_once,
143
+ running_on_interpreter,
144
+ running_on_notebook,
145
+ running_on_terminal,
146
+ setup_logging_level,
147
+ setup_logging_verbose,
148
+ )
149
+ from .math import argmax, argmin, argsort, clamp, clip
150
+ from .os import get_num_cpus_available, safe_rmdir, tree_iter
151
+ from .pickle import (
152
+ dump_pickle,
153
+ dumps_pickle,
154
+ load_pickle,
155
+ loads_pickle,
156
+ read_pickle,
157
+ save_pickle,
158
+ )
159
+ from .random import randstr
160
+ from .re import (
161
+ PatternLike,
162
+ PatternListLike,
163
+ compile_patterns,
164
+ filter_with_patterns,
165
+ find_patterns,
166
+ get_key_fn,
167
+ match_patterns,
168
+ sort_with_patterns,
169
+ )
170
+ from .semver import Version
171
+ from .typing import (
172
+ BuiltinCollection,
173
+ BuiltinNumber,
174
+ BuiltinScalar,
175
+ DataclassInstance,
176
+ EllipsisType,
177
+ ListOrTuple,
178
+ NamedTupleInstance,
179
+ NoneType,
180
+ SupportsAdd,
181
+ SupportsAnd,
182
+ SupportsBool,
183
+ SupportsDiv,
184
+ SupportsGetitem,
185
+ SupportsGetitem2,
186
+ SupportsGetitemIterLen,
187
+ SupportsGetitemIterLen2,
188
+ SupportsGetitemLen,
189
+ SupportsGetitemLen2,
190
+ SupportsIter,
191
+ SupportsIterLen,
192
+ SupportsLen,
193
+ SupportsMatmul,
194
+ SupportsMul,
195
+ SupportsOr,
196
+ T_BuiltinNumber,
197
+ T_BuiltinScalar,
198
+ check_args_types,
199
+ is_builtin_collection,
200
+ is_builtin_number,
201
+ is_builtin_obj,
202
+ is_builtin_scalar,
203
+ is_collection_alias,
204
+ is_dataclass_instance,
205
+ is_iterable_bool,
206
+ is_iterable_bytes_or_list,
207
+ is_iterable_float,
208
+ is_iterable_int,
209
+ is_iterable_integral,
210
+ is_iterable_str,
211
+ is_namedtuple_instance,
212
+ is_parameterized,
213
+ is_sequence_str,
214
+ is_special_form,
215
+ is_typed_dict,
216
+ isinstance_generic,
217
+ )
218
+ from .warnings import deprecated_alias, deprecated_function, warn_once
219
+
220
+ else:
221
+ __getattr__, __dir__, __all__ = lazy.attach(
222
+ __name__,
223
+ submodules=[
224
+ "abc",
225
+ "argparse",
226
+ "cast",
227
+ "checksum",
228
+ "collections",
229
+ "concurrent",
230
+ "csv",
231
+ "dataclasses",
232
+ "datetime",
233
+ "difflib",
234
+ "disk_cache",
235
+ "entries",
236
+ "enum",
237
+ "functools",
238
+ "hashlib",
239
+ "importlib",
240
+ "inspect",
241
+ "json",
242
+ "jsonl",
243
+ "logging",
244
+ "math",
245
+ "os",
246
+ "pickle",
247
+ "random",
248
+ "re",
249
+ "semver",
250
+ "typing",
251
+ "warnings",
252
+ ],
253
+ submod_attrs={
254
+ "argparse": [
255
+ "parse_to",
256
+ "str_to_bool",
257
+ "str_to_none",
258
+ "str_to_optional_bool",
259
+ "str_to_optional_float",
260
+ "str_to_optional_int",
261
+ "str_to_optional_str",
262
+ "str_to_type",
263
+ ],
264
+ "abc": ["Singleton"],
265
+ "cast": ["as_builtin", "register_as_builtin_fn"],
266
+ "checksum": ["checksum_any", "checksum_object", "register_checksum_fn"],
267
+ "collections": [
268
+ "all_eq",
269
+ "all_ne",
270
+ "contained",
271
+ "dict_list_to_list_dict",
272
+ "dump_dict",
273
+ "duplicate_list",
274
+ "filter_iterable",
275
+ "find",
276
+ "flat_dict_of_dict",
277
+ "flat_list_of_list",
278
+ "flatten",
279
+ "intersect",
280
+ "intersect_lists",
281
+ "is_full",
282
+ "is_sorted",
283
+ "is_unique",
284
+ "list_dict_to_dict_list",
285
+ "prod",
286
+ "recursive_generator",
287
+ "reduce_add",
288
+ "reduce_and",
289
+ "reduce_mul",
290
+ "reduce_or",
291
+ "shuffled",
292
+ "sorted_dict",
293
+ "sum",
294
+ "unflat_dict_of_dict",
295
+ "unflat_list_of_list",
296
+ "union",
297
+ "union_dicts",
298
+ "union_lists",
299
+ "unzip",
300
+ ],
301
+ "csv": [
302
+ "dump_csv",
303
+ "dumps_csv",
304
+ "load_csv",
305
+ "loads_csv",
306
+ "read_csv",
307
+ "save_csv",
308
+ ],
309
+ "dataclasses": ["get_defaults_values"],
310
+ "datetime": ["get_now", "get_now_iso8601"],
311
+ "difflib": ["find_closest_in_list", "sequence_matcher_ratio"],
312
+ "disk_cache": ["disk_cache_call", "disk_cache_decorator"],
313
+ "enum": ["StrEnum"],
314
+ "functools": [
315
+ "Compose",
316
+ "compose",
317
+ "filter_and_call",
318
+ "function_alias",
319
+ "identity",
320
+ "repeat_fn",
321
+ ],
322
+ "hashlib": ["hash_file"],
323
+ "importlib": [
324
+ "is_available_package",
325
+ "is_editable_package",
326
+ "reload_editable_packages",
327
+ "reload_submodules",
328
+ "search_submodules",
329
+ ],
330
+ "inspect": ["get_argnames", "get_current_fn_name", "get_fullname"],
331
+ "json": [
332
+ "dump_json",
333
+ "dumps_json",
334
+ "load_json",
335
+ "loads_json",
336
+ "read_json",
337
+ "save_json",
338
+ ],
339
+ "jsonl": [
340
+ "dump_jsonl",
341
+ "dumps_jsonl",
342
+ "load_jsonl",
343
+ "loads_jsonl",
344
+ "read_jsonl",
345
+ "save_jsonl",
346
+ ],
347
+ "logging": [
348
+ "VERBOSE_DEBUG",
349
+ "VERBOSE_ERROR",
350
+ "VERBOSE_INFO",
351
+ "VERBOSE_WARNING",
352
+ "MkdirFileHandler",
353
+ "get_current_file_logger",
354
+ "get_ipython_name",
355
+ "get_null_logger",
356
+ "log_once",
357
+ "running_on_interpreter",
358
+ "running_on_notebook",
359
+ "running_on_terminal",
360
+ "setup_logging_level",
361
+ "setup_logging_verbose",
362
+ ],
363
+ "math": ["argmax", "argmin", "argsort", "clamp", "clip"],
364
+ "os": ["get_num_cpus_available", "safe_rmdir", "tree_iter"],
365
+ "pickle": [
366
+ "dump_pickle",
367
+ "dumps_pickle",
368
+ "load_pickle",
369
+ "loads_pickle",
370
+ "read_pickle",
371
+ "save_pickle",
372
+ ],
373
+ "random": ["randstr"],
374
+ "re": [
375
+ "PatternLike",
376
+ "PatternListLike",
377
+ "compile_patterns",
378
+ "filter_with_patterns",
379
+ "find_patterns",
380
+ "get_key_fn",
381
+ "match_patterns",
382
+ "sort_with_patterns",
383
+ ],
384
+ "semver": ["Version"],
385
+ "typing": [
386
+ "BuiltinCollection",
387
+ "BuiltinNumber",
388
+ "BuiltinScalar",
389
+ "DataclassInstance",
390
+ "EllipsisType",
391
+ "ListOrTuple",
392
+ "NamedTupleInstance",
393
+ "NoneType",
394
+ "SupportsAdd",
395
+ "SupportsAnd",
396
+ "SupportsBool",
397
+ "SupportsDiv",
398
+ "SupportsGetitem",
399
+ "SupportsGetitem2",
400
+ "SupportsGetitemIterLen",
401
+ "SupportsGetitemIterLen2",
402
+ "SupportsGetitemLen",
403
+ "SupportsGetitemLen2",
404
+ "SupportsIter",
405
+ "SupportsIterLen",
406
+ "SupportsLen",
407
+ "SupportsMatmul",
408
+ "SupportsMul",
409
+ "SupportsOr",
410
+ "T_BuiltinNumber",
411
+ "T_BuiltinScalar",
412
+ "check_args_types",
413
+ "is_builtin_collection",
414
+ "is_builtin_number",
415
+ "is_builtin_obj",
416
+ "is_builtin_scalar",
417
+ "is_collection_alias",
418
+ "is_dataclass_instance",
419
+ "is_iterable_bool",
420
+ "is_iterable_bytes_or_list",
421
+ "is_iterable_float",
422
+ "is_iterable_int",
423
+ "is_iterable_integral",
424
+ "is_iterable_str",
425
+ "is_namedtuple_instance",
426
+ "is_parameterized",
427
+ "is_sequence_str",
428
+ "is_special_form",
429
+ "is_typed_dict",
430
+ "isinstance_generic",
431
+ ],
432
+ "warnings": ["deprecated_alias", "deprecated_function", "warn_once"],
433
+ },
434
+ )
435
+
436
+ Version = __getattr__("Version")
437
+
438
+
439
+ version = __version__
440
+ version_info = Version(__version__)
441
+
442
+ del Version, TYPE_CHECKING
@@ -32,7 +32,7 @@ ClassOrTuple = Union[type, Tuple[type, ...]]
32
32
 
33
33
 
34
34
  class Predicate(Protocol[T_Any]):
35
- def __call__(self, x: T_Any) -> bool: ...
35
+ def __call__(self, /, x: T_Any) -> bool: ...
36
36
 
37
37
 
38
38
  def return_none(*args, **kwargs) -> None: