astToolkit 0.3.0__tar.gz → 0.3.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 (36) hide show
  1. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/PKG-INFO +1 -1
  2. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/astToolkit/__init__.py +3 -4
  3. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/astToolkit/_astTypes.py +4 -1
  4. asttoolkit-0.3.0/astToolkit/theSSOT.py → asttoolkit-0.3.1/astToolkit/_theSSOT.py +0 -2
  5. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/astToolkit/_toolGrab.py +45 -45
  6. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/astToolkit/_toolMake.py +75 -74
  7. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/astToolkit/_toolThen.py +3 -3
  8. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/astToolkit/_toolkitAST.py +25 -36
  9. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/astToolkit/_toolkitNodeVisitor.py +4 -4
  10. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/astToolkit/_types.py +1 -6
  11. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/astToolkit/transformationTools.py +6 -8
  12. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/astToolkit.egg-info/PKG-INFO +1 -1
  13. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/astToolkit.egg-info/SOURCES.txt +1 -1
  14. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/pyproject.toml +1 -1
  15. asttoolkit-0.3.1/toolFactory/Z0Z_hardcoded.py +135 -0
  16. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/toolFactory/__init__.py +1 -1
  17. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/toolFactory/datacenter.py +62 -74
  18. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/toolFactory/factory3.py +35 -25
  19. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/toolFactory/factory_annex.py +15 -17
  20. asttoolkit-0.3.0/toolFactory/Z0Z_hardcoded.py +0 -113
  21. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/LICENSE +0 -0
  22. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/README.md +0 -0
  23. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/astToolkit/_toolBe.py +0 -0
  24. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/astToolkit/_toolClassIsAndAttribute.py +0 -0
  25. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/astToolkit/_toolDOT.py +0 -0
  26. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/astToolkit/_toolIfThis.py +0 -0
  27. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/astToolkit/_toolkitContainers.py +0 -0
  28. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/astToolkit/py.typed +0 -0
  29. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/astToolkit.egg-info/dependency_links.txt +0 -0
  30. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/astToolkit.egg-info/requires.txt +0 -0
  31. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/astToolkit.egg-info/top_level.txt +0 -0
  32. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/setup.cfg +0 -0
  33. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/tests/test_basic.py +0 -0
  34. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/toolFactory/_snippets.py +0 -0
  35. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/toolFactory/docstrings.py +0 -0
  36. {asttoolkit-0.3.0 → asttoolkit-0.3.1}/toolFactory/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: astToolkit
3
- Version: 0.3.0
3
+ Version: 0.3.1
4
4
  Summary: A powerfully composable, type-safe toolkit for Python abstract syntax tree (AST) manipulation, analysis, transformation, and code generation with a layered architecture designed for building sophisticated code processing assembly-lines.
5
5
  Author-email: Hunter Hogan <HunterHogan@pm.me>
6
6
  License: CC-BY-NC-4.0
@@ -1,12 +1,11 @@
1
+ # import astToolkit._extendPython_ast
2
+
1
3
  from astToolkit._astTypes import * # noqa: F403
2
4
 
3
- from astToolkit.theSSOT import FREAKOUT as FREAKOUT, The as The
5
+ from astToolkit._theSSOT import The as The
4
6
 
5
7
  from astToolkit._types import (
6
- NodeORattribute as NodeORattribute,
7
8
  str_nameDOTname as str_nameDOTname,
8
- 个 as 个,
9
- 个return as 个return,
10
9
  )
11
10
 
12
11
  from astToolkit._toolkitNodeVisitor import (
@@ -1,10 +1,13 @@
1
1
  """This file is generated automatically, so changes to this file will be lost."""
2
- from typing import Any, TypeAlias as typing_TypeAlias
2
+ from typing import Any, TypeAlias as typing_TypeAlias, TypeVar as typing_TypeVar
3
3
  import ast
4
4
  import sys
5
5
  intORstr: typing_TypeAlias = Any
6
6
  intORstrORtype_params: typing_TypeAlias = Any
7
7
  intORtype_params: typing_TypeAlias = Any
8
+ 木 = typing_TypeVar('木', bound=ast.AST, covariant=True)
9
+ 个 = typing_TypeVar('个', covariant=True)
10
+ 个return = typing_TypeVar('个return', covariant=True)
8
11
  hasDOTannotation_expr: typing_TypeAlias = ast.AnnAssign
9
12
  hasDOTannotation_exprOrNone: typing_TypeAlias = ast.arg
10
13
  hasDOTannotation: typing_TypeAlias = hasDOTannotation_expr | hasDOTannotation_exprOrNone
@@ -29,5 +29,3 @@ class PackageSettings:
29
29
  """Absolute path to the installed package directory."""
30
30
 
31
31
  The = PackageSettings()
32
-
33
- class FREAKOUT(Exception): pass
@@ -1,6 +1,6 @@
1
1
  # ruff: noqa: F403, F405
2
2
  """This file is generated automatically, so changes to this file will be lost."""
3
- from astToolkit import NodeORattribute
3
+ from astToolkit import
4
4
  from astToolkit._astTypes import *
5
5
  from collections.abc import Callable, Sequence
6
6
  from typing import Any, Literal
@@ -20,9 +20,9 @@ class Grab:
20
20
  """
21
21
 
22
22
  @staticmethod
23
- def andDoAllOf(listOfActions: list[Callable[[NodeORattribute], NodeORattribute]]) -> Callable[[NodeORattribute], NodeORattribute]:
23
+ def andDoAllOf(listOfActions: list[Callable[[], ]]) -> Callable[[], ]:
24
24
 
25
- def workhorse(node: NodeORattribute) -> NodeORattribute:
25
+ def workhorse(node: ) -> 个:
26
26
  for action in listOfActions:
27
27
  node = action(node)
28
28
  return node
@@ -45,7 +45,7 @@ class Grab:
45
45
  return workhorse
46
46
 
47
47
  @staticmethod
48
- def argsAttribute(action: Callable[[ast.arguments], ast.arguments] | Callable[[list[ast.arg]], list[ast.arg]] | Callable[[list[ast.expr]], list[ast.expr]]) -> Callable[[hasDOTargs], hasDOTargs]:
48
+ def argsAttribute(action: Callable[[ast.arguments], ast.arguments] | Callable[[list[ast.arg]], list[ast.arg]] | Callable[[Sequence[ast.expr]], Sequence[ast.expr]]) -> Callable[[hasDOTargs], hasDOTargs]:
49
49
 
50
50
  def workhorse(node: hasDOTargs) -> hasDOTargs:
51
51
  node.args = action(node.args) # pyright: ignore[reportArgumentType, reportAttributeAccessIssue]
@@ -53,10 +53,10 @@ class Grab:
53
53
  return workhorse
54
54
 
55
55
  @staticmethod
56
- def argtypesAttribute(action: Callable[[list[ast.expr]], list[ast.expr]]) -> Callable[[hasDOTargtypes], hasDOTargtypes]:
56
+ def argtypesAttribute(action: Callable[[Sequence[ast.expr]], Sequence[ast.expr]]) -> Callable[[hasDOTargtypes], hasDOTargtypes]:
57
57
 
58
58
  def workhorse(node: hasDOTargtypes) -> hasDOTargtypes:
59
- node.argtypes = action(node.argtypes)
59
+ node.argtypes = action(node.argtypes) # pyright: ignore[reportArgumentType, reportAttributeAccessIssue]
60
60
  return node
61
61
  return workhorse
62
62
 
@@ -77,15 +77,15 @@ class Grab:
77
77
  return workhorse
78
78
 
79
79
  @staticmethod
80
- def basesAttribute(action: Callable[[list[ast.expr]], list[ast.expr]]) -> Callable[[hasDOTbases], hasDOTbases]:
80
+ def basesAttribute(action: Callable[[Sequence[ast.expr]], Sequence[ast.expr]]) -> Callable[[hasDOTbases], hasDOTbases]:
81
81
 
82
82
  def workhorse(node: hasDOTbases) -> hasDOTbases:
83
- node.bases = action(node.bases)
83
+ node.bases = action(node.bases) # pyright: ignore[reportArgumentType, reportAttributeAccessIssue]
84
84
  return node
85
85
  return workhorse
86
86
 
87
87
  @staticmethod
88
- def bodyAttribute(action: Callable[[ast.expr], ast.expr] | Callable[[list[ast.stmt]], list[ast.stmt]]) -> Callable[[hasDOTbody], hasDOTbody]:
88
+ def bodyAttribute(action: Callable[[ast.expr], ast.expr] | Callable[[Sequence[ast.stmt]], Sequence[ast.stmt]]) -> Callable[[hasDOTbody], hasDOTbody]:
89
89
 
90
90
  def workhorse(node: hasDOTbody) -> hasDOTbody:
91
91
  node.body = action(node.body) # pyright: ignore[reportArgumentType, reportAttributeAccessIssue]
@@ -101,10 +101,10 @@ class Grab:
101
101
  return workhorse
102
102
 
103
103
  @staticmethod
104
- def casesAttribute(action: Callable[[list[ast.match_case]], list[ast.match_case]]) -> Callable[[hasDOTcases], hasDOTcases]:
104
+ def casesAttribute(action: Callable[[Sequence[ast.match_case]], Sequence[ast.match_case]]) -> Callable[[hasDOTcases], hasDOTcases]:
105
105
 
106
106
  def workhorse(node: hasDOTcases) -> hasDOTcases:
107
- node.cases = action(node.cases)
107
+ node.cases = action(node.cases) # pyright: ignore[reportArgumentType, reportAttributeAccessIssue]
108
108
  return node
109
109
  return workhorse
110
110
 
@@ -125,10 +125,10 @@ class Grab:
125
125
  return workhorse
126
126
 
127
127
  @staticmethod
128
- def comparatorsAttribute(action: Callable[[list[ast.expr]], list[ast.expr]]) -> Callable[[hasDOTcomparators], hasDOTcomparators]:
128
+ def comparatorsAttribute(action: Callable[[Sequence[ast.expr]], Sequence[ast.expr]]) -> Callable[[hasDOTcomparators], hasDOTcomparators]:
129
129
 
130
130
  def workhorse(node: hasDOTcomparators) -> hasDOTcomparators:
131
- node.comparators = action(node.comparators)
131
+ node.comparators = action(node.comparators) # pyright: ignore[reportArgumentType, reportAttributeAccessIssue]
132
132
  return node
133
133
  return workhorse
134
134
 
@@ -157,10 +157,10 @@ class Grab:
157
157
  return workhorse
158
158
 
159
159
  @staticmethod
160
- def decorator_listAttribute(action: Callable[[list[ast.expr]], list[ast.expr]]) -> Callable[[hasDOTdecorator_list], hasDOTdecorator_list]:
160
+ def decorator_listAttribute(action: Callable[[Sequence[ast.expr]], Sequence[ast.expr]]) -> Callable[[hasDOTdecorator_list], hasDOTdecorator_list]:
161
161
 
162
162
  def workhorse(node: hasDOTdecorator_list) -> hasDOTdecorator_list:
163
- node.decorator_list = action(node.decorator_list)
163
+ node.decorator_list = action(node.decorator_list) # pyright: ignore[reportArgumentType, reportAttributeAccessIssue]
164
164
  return node
165
165
  return workhorse
166
166
  if sys.version_info >= (3, 13):
@@ -174,10 +174,10 @@ class Grab:
174
174
  return workhorse
175
175
 
176
176
  @staticmethod
177
- def defaultsAttribute(action: Callable[[list[ast.expr]], list[ast.expr]]) -> Callable[[hasDOTdefaults], hasDOTdefaults]:
177
+ def defaultsAttribute(action: Callable[[Sequence[ast.expr]], Sequence[ast.expr]]) -> Callable[[hasDOTdefaults], hasDOTdefaults]:
178
178
 
179
179
  def workhorse(node: hasDOTdefaults) -> hasDOTdefaults:
180
- node.defaults = action(node.defaults)
180
+ node.defaults = action(node.defaults) # pyright: ignore[reportArgumentType, reportAttributeAccessIssue]
181
181
  return node
182
182
  return workhorse
183
183
 
@@ -190,10 +190,10 @@ class Grab:
190
190
  return workhorse
191
191
 
192
192
  @staticmethod
193
- def eltsAttribute(action: Callable[[list[ast.expr]], list[ast.expr]]) -> Callable[[hasDOTelts], hasDOTelts]:
193
+ def eltsAttribute(action: Callable[[Sequence[ast.expr]], Sequence[ast.expr]]) -> Callable[[hasDOTelts], hasDOTelts]:
194
194
 
195
195
  def workhorse(node: hasDOTelts) -> hasDOTelts:
196
- node.elts = action(node.elts)
196
+ node.elts = action(node.elts) # pyright: ignore[reportArgumentType, reportAttributeAccessIssue]
197
197
  return node
198
198
  return workhorse
199
199
 
@@ -206,10 +206,10 @@ class Grab:
206
206
  return workhorse
207
207
 
208
208
  @staticmethod
209
- def finalbodyAttribute(action: Callable[[list[ast.stmt]], list[ast.stmt]]) -> Callable[[hasDOTfinalbody], hasDOTfinalbody]:
209
+ def finalbodyAttribute(action: Callable[[Sequence[ast.stmt]], Sequence[ast.stmt]]) -> Callable[[hasDOTfinalbody], hasDOTfinalbody]:
210
210
 
211
211
  def workhorse(node: hasDOTfinalbody) -> hasDOTfinalbody:
212
- node.finalbody = action(node.finalbody)
212
+ node.finalbody = action(node.finalbody) # pyright: ignore[reportArgumentType, reportAttributeAccessIssue]
213
213
  return node
214
214
  return workhorse
215
215
 
@@ -230,10 +230,10 @@ class Grab:
230
230
  return workhorse
231
231
 
232
232
  @staticmethod
233
- def generatorsAttribute(action: Callable[[list[ast.comprehension]], list[ast.comprehension]]) -> Callable[[hasDOTgenerators], hasDOTgenerators]:
233
+ def generatorsAttribute(action: Callable[[Sequence[ast.comprehension]], Sequence[ast.comprehension]]) -> Callable[[hasDOTgenerators], hasDOTgenerators]:
234
234
 
235
235
  def workhorse(node: hasDOTgenerators) -> hasDOTgenerators:
236
- node.generators = action(node.generators)
236
+ node.generators = action(node.generators) # pyright: ignore[reportArgumentType, reportAttributeAccessIssue]
237
237
  return node
238
238
  return workhorse
239
239
 
@@ -262,10 +262,10 @@ class Grab:
262
262
  return workhorse
263
263
 
264
264
  @staticmethod
265
- def ifsAttribute(action: Callable[[list[ast.expr]], list[ast.expr]]) -> Callable[[hasDOTifs], hasDOTifs]:
265
+ def ifsAttribute(action: Callable[[Sequence[ast.expr]], Sequence[ast.expr]]) -> Callable[[hasDOTifs], hasDOTifs]:
266
266
 
267
267
  def workhorse(node: hasDOTifs) -> hasDOTifs:
268
- node.ifs = action(node.ifs)
268
+ node.ifs = action(node.ifs) # pyright: ignore[reportArgumentType, reportAttributeAccessIssue]
269
269
  return node
270
270
  return workhorse
271
271
 
@@ -278,10 +278,10 @@ class Grab:
278
278
  return workhorse
279
279
 
280
280
  @staticmethod
281
- def itemsAttribute(action: Callable[[list[ast.withitem]], list[ast.withitem]]) -> Callable[[hasDOTitems], hasDOTitems]:
281
+ def itemsAttribute(action: Callable[[Sequence[ast.withitem]], Sequence[ast.withitem]]) -> Callable[[hasDOTitems], hasDOTitems]:
282
282
 
283
283
  def workhorse(node: hasDOTitems) -> hasDOTitems:
284
- node.items = action(node.items)
284
+ node.items = action(node.items) # pyright: ignore[reportArgumentType, reportAttributeAccessIssue]
285
285
  return node
286
286
  return workhorse
287
287
 
@@ -302,7 +302,7 @@ class Grab:
302
302
  return workhorse
303
303
 
304
304
  @staticmethod
305
- def keysAttribute(action: Callable[[list[ast.expr]], list[ast.expr]] | Callable[[list[ast.expr | None]], list[ast.expr | None]]) -> Callable[[hasDOTkeys], hasDOTkeys]:
305
+ def keysAttribute(action: Callable[[Sequence[ast.expr]], Sequence[ast.expr]] | Callable[[Sequence[ast.expr | None]], Sequence[ast.expr | None]]) -> Callable[[hasDOTkeys], hasDOTkeys]:
306
306
 
307
307
  def workhorse(node: hasDOTkeys) -> hasDOTkeys:
308
308
  node.keys = action(node.keys) # pyright: ignore[reportArgumentType, reportAttributeAccessIssue]
@@ -310,10 +310,10 @@ class Grab:
310
310
  return workhorse
311
311
 
312
312
  @staticmethod
313
- def keywordsAttribute(action: Callable[[list[ast.keyword]], list[ast.keyword]]) -> Callable[[hasDOTkeywords], hasDOTkeywords]:
313
+ def keywordsAttribute(action: Callable[[Sequence[ast.keyword]], Sequence[ast.keyword]]) -> Callable[[hasDOTkeywords], hasDOTkeywords]:
314
314
 
315
315
  def workhorse(node: hasDOTkeywords) -> hasDOTkeywords:
316
- node.keywords = action(node.keywords)
316
+ node.keywords = action(node.keywords) # pyright: ignore[reportArgumentType, reportAttributeAccessIssue]
317
317
  return node
318
318
  return workhorse
319
319
 
@@ -326,10 +326,10 @@ class Grab:
326
326
  return workhorse
327
327
 
328
328
  @staticmethod
329
- def kw_defaultsAttribute(action: Callable[[list[ast.expr | None]], list[ast.expr | None]]) -> Callable[[hasDOTkw_defaults], hasDOTkw_defaults]:
329
+ def kw_defaultsAttribute(action: Callable[[Sequence[ast.expr | None]], Sequence[ast.expr | None]]) -> Callable[[hasDOTkw_defaults], hasDOTkw_defaults]:
330
330
 
331
331
  def workhorse(node: hasDOTkw_defaults) -> hasDOTkw_defaults:
332
- node.kw_defaults = action(node.kw_defaults)
332
+ node.kw_defaults = action(node.kw_defaults) # pyright: ignore[reportArgumentType, reportAttributeAccessIssue]
333
333
  return node
334
334
  return workhorse
335
335
 
@@ -350,10 +350,10 @@ class Grab:
350
350
  return workhorse
351
351
 
352
352
  @staticmethod
353
- def kwd_patternsAttribute(action: Callable[[list[ast.pattern]], list[ast.pattern]]) -> Callable[[hasDOTkwd_patterns], hasDOTkwd_patterns]:
353
+ def kwd_patternsAttribute(action: Callable[[Sequence[ast.pattern]], Sequence[ast.pattern]]) -> Callable[[hasDOTkwd_patterns], hasDOTkwd_patterns]:
354
354
 
355
355
  def workhorse(node: hasDOTkwd_patterns) -> hasDOTkwd_patterns:
356
- node.kwd_patterns = action(node.kwd_patterns)
356
+ node.kwd_patterns = action(node.kwd_patterns) # pyright: ignore[reportArgumentType, reportAttributeAccessIssue]
357
357
  return node
358
358
  return workhorse
359
359
 
@@ -446,10 +446,10 @@ class Grab:
446
446
  return workhorse
447
447
 
448
448
  @staticmethod
449
- def opsAttribute(action: Callable[[list[ast.cmpop]], list[ast.cmpop]]) -> Callable[[hasDOTops], hasDOTops]:
449
+ def opsAttribute(action: Callable[[Sequence[ast.cmpop]], Sequence[ast.cmpop]]) -> Callable[[hasDOTops], hasDOTops]:
450
450
 
451
451
  def workhorse(node: hasDOTops) -> hasDOTops:
452
- node.ops = action(node.ops)
452
+ node.ops = action(node.ops) # pyright: ignore[reportArgumentType, reportAttributeAccessIssue]
453
453
  return node
454
454
  return workhorse
455
455
 
@@ -462,7 +462,7 @@ class Grab:
462
462
  return workhorse
463
463
 
464
464
  @staticmethod
465
- def orelseAttribute(action: Callable[[ast.expr], ast.expr] | Callable[[list[ast.stmt]], list[ast.stmt]]) -> Callable[[hasDOTorelse], hasDOTorelse]:
465
+ def orelseAttribute(action: Callable[[ast.expr], ast.expr] | Callable[[Sequence[ast.stmt]], Sequence[ast.stmt]]) -> Callable[[hasDOTorelse], hasDOTorelse]:
466
466
 
467
467
  def workhorse(node: hasDOTorelse) -> hasDOTorelse:
468
468
  node.orelse = action(node.orelse) # pyright: ignore[reportArgumentType, reportAttributeAccessIssue]
@@ -478,10 +478,10 @@ class Grab:
478
478
  return workhorse
479
479
 
480
480
  @staticmethod
481
- def patternsAttribute(action: Callable[[list[ast.pattern]], list[ast.pattern]]) -> Callable[[hasDOTpatterns], hasDOTpatterns]:
481
+ def patternsAttribute(action: Callable[[Sequence[ast.pattern]], Sequence[ast.pattern]]) -> Callable[[hasDOTpatterns], hasDOTpatterns]:
482
482
 
483
483
  def workhorse(node: hasDOTpatterns) -> hasDOTpatterns:
484
- node.patterns = action(node.patterns)
484
+ node.patterns = action(node.patterns) # pyright: ignore[reportArgumentType, reportAttributeAccessIssue]
485
485
  return node
486
486
  return workhorse
487
487
 
@@ -566,10 +566,10 @@ class Grab:
566
566
  return workhorse
567
567
 
568
568
  @staticmethod
569
- def targetsAttribute(action: Callable[[list[ast.expr]], list[ast.expr]]) -> Callable[[hasDOTtargets], hasDOTtargets]:
569
+ def targetsAttribute(action: Callable[[Sequence[ast.expr]], Sequence[ast.expr]]) -> Callable[[hasDOTtargets], hasDOTtargets]:
570
570
 
571
571
  def workhorse(node: hasDOTtargets) -> hasDOTtargets:
572
- node.targets = action(node.targets)
572
+ node.targets = action(node.targets) # pyright: ignore[reportArgumentType, reportAttributeAccessIssue]
573
573
  return node
574
574
  return workhorse
575
575
 
@@ -606,10 +606,10 @@ class Grab:
606
606
  return workhorse
607
607
 
608
608
  @staticmethod
609
- def type_paramsAttribute(action: Callable[[list[ast.type_param]], list[ast.type_param]]) -> Callable[[hasDOTtype_params], hasDOTtype_params]:
609
+ def type_paramsAttribute(action: Callable[[Sequence[ast.type_param]], Sequence[ast.type_param]]) -> Callable[[hasDOTtype_params], hasDOTtype_params]:
610
610
 
611
611
  def workhorse(node: hasDOTtype_params) -> hasDOTtype_params:
612
- node.type_params = action(node.type_params)
612
+ node.type_params = action(node.type_params) # pyright: ignore[reportArgumentType, reportAttributeAccessIssue]
613
613
  return node
614
614
  return workhorse
615
615
 
@@ -630,10 +630,10 @@ class Grab:
630
630
  return workhorse
631
631
 
632
632
  @staticmethod
633
- def valuesAttribute(action: Callable[[list[ast.expr]], list[ast.expr]]) -> Callable[[hasDOTvalues], hasDOTvalues]:
633
+ def valuesAttribute(action: Callable[[Sequence[ast.expr]], Sequence[ast.expr]]) -> Callable[[hasDOTvalues], hasDOTvalues]:
634
634
 
635
635
  def workhorse(node: hasDOTvalues) -> hasDOTvalues:
636
- node.values = action(node.values)
636
+ node.values = action(node.values) # pyright: ignore[reportArgumentType, reportAttributeAccessIssue]
637
637
  return node
638
638
  return workhorse
639
639