Skip to content

Commit e6fcbcd

Browse files
committed
progress on Be
1 parent 37ee652 commit e6fcbcd

8 files changed

Lines changed: 2723 additions & 3043 deletions

File tree

toolFactory/Z0Z_hardcoded.py

Lines changed: 2 additions & 136 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,11 @@
55
ast_Identifier: typing_TypeAlias = str
66
str_nameDOTname: typing_TypeAlias = str
77

8+
pythonVersionMinorMinimum: int = 10
89
sys_version_infoMinimum: tuple[int, int] = (3, 10)
910
sys_version_infoTarget: tuple[int, int] = (3, 13)
1011

11-
listASTClassesPostPythonVersionMinimumHARDCODED: list[ast_Identifier] = ['astDOTParamSpec', 'astDOTTryStar', 'astDOTTypeAlias', 'astDOTTypeVar', 'astDOTTypeVarTuple', 'astDOTtype_param']
12-
listASTClassesPostPythonVersionMinimum = listASTClassesPostPythonVersionMinimumHARDCODED
13-
14-
listASTSubclassesHARDCODED: list[str] = ['_Slice', 'AST', 'binaryop', 'boolop', 'cmpop', 'excepthandler', 'expr_context', 'expr', 'mod', 'operator', 'pattern', 'stmt', 'type_ignore', 'type_param', 'unaryop',]
15-
listASTSubclasses = listASTSubclassesHARDCODED
16-
17-
class FREAKOUT(Exception):
18-
pass
12+
class FREAKOUT(Exception): pass
1913

2014
# filesystem and namespace ===============================================
2115
packageName: ast_Identifier = 'astToolkit'
@@ -30,131 +24,3 @@ class FREAKOUT(Exception):
3024
pathFilenameDatabaseAST = pathToolFactory / 'databaseAST.csv'
3125

3226
fileExtension: str = '.py'
33-
34-
# AST class and subclasses ==================================================
35-
listASTClasses = [ast.Add,
36-
ast.alias,
37-
ast.And,
38-
ast.AnnAssign,
39-
ast.arg,
40-
ast.arguments,
41-
ast.Assert,
42-
ast.Assign,
43-
ast.AST,
44-
ast.AsyncFor,
45-
ast.AsyncFunctionDef,
46-
ast.AsyncWith,
47-
ast.Attribute,
48-
ast.AugAssign,
49-
ast.Await,
50-
ast.BinOp,
51-
ast.BitAnd,
52-
ast.BitOr,
53-
ast.BitXor,
54-
ast.BoolOp,
55-
ast.boolop,
56-
ast.Break,
57-
ast.Call,
58-
ast.ClassDef,
59-
ast.cmpop,
60-
ast.Compare,
61-
ast.comprehension,
62-
ast.Constant,
63-
ast.Continue,
64-
ast.Del,
65-
ast.Delete,
66-
ast.Dict,
67-
ast.DictComp,
68-
ast.Div,
69-
ast.Eq,
70-
ast.ExceptHandler,
71-
ast.excepthandler,
72-
ast.expr_context,
73-
ast.Expr,
74-
ast.expr,
75-
ast.Expression,
76-
ast.FloorDiv,
77-
ast.For,
78-
ast.FormattedValue,
79-
ast.FunctionDef,
80-
ast.FunctionType,
81-
ast.GeneratorExp,
82-
ast.Global,
83-
ast.Gt,
84-
ast.GtE,
85-
ast.If,
86-
ast.IfExp,
87-
ast.Import,
88-
ast.ImportFrom,
89-
ast.In,
90-
ast.Interactive,
91-
ast.Invert,
92-
ast.Is,
93-
ast.IsNot,
94-
ast.JoinedStr,
95-
ast.keyword,
96-
ast.Lambda,
97-
ast.List,
98-
ast.ListComp,
99-
ast.Load,
100-
ast.LShift,
101-
ast.Lt,
102-
ast.LtE,
103-
ast.match_case,
104-
ast.Match,
105-
ast.MatchAs,
106-
ast.MatchClass,
107-
ast.MatchMapping,
108-
ast.MatchOr,
109-
ast.MatchSequence,
110-
ast.MatchSingleton,
111-
ast.MatchStar,
112-
ast.MatchValue,
113-
ast.MatMult,
114-
ast.Mod,
115-
ast.mod,
116-
ast.Module,
117-
ast.Mult,
118-
ast.Name,
119-
ast.NamedExpr,
120-
ast.Nonlocal,
121-
ast.Not,
122-
ast.NotEq,
123-
ast.NotIn,
124-
ast.operator,
125-
ast.Or,
126-
ast.ParamSpec,
127-
ast.Pass,
128-
ast.pattern,
129-
ast.Pow,
130-
ast.Raise,
131-
ast.Return,
132-
ast.RShift,
133-
ast.Set,
134-
ast.SetComp,
135-
ast.Slice,
136-
ast.Starred,
137-
ast.stmt,
138-
ast.Store,
139-
ast.Sub,
140-
ast.Subscript,
141-
ast.Try,
142-
ast.TryStar,
143-
ast.Tuple,
144-
ast.type_ignore,
145-
ast.type_param,
146-
ast.TypeAlias,
147-
ast.TypeIgnore,
148-
ast.TypeVar,
149-
ast.TypeVarTuple,
150-
ast.UAdd,
151-
ast.UnaryOp,
152-
ast.unaryop,
153-
ast.USub,
154-
ast.While,
155-
ast.With,
156-
ast.withitem,
157-
ast.Yield,
158-
ast.YieldFrom,
159-
]
160-
"""Python 3.13, not deprecated"""

toolFactory/__init__.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,23 @@
22
ast_Identifier as ast_Identifier,
33
fileExtension as fileExtension,
44
FREAKOUT as FREAKOUT,
5-
listASTClasses as listASTClasses,
6-
listASTClassesPostPythonVersionMinimum as listASTClassesPostPythonVersionMinimum,
7-
listASTSubclassesHARDCODED as listASTSubclassesHARDCODED,
5+
keywordArgumentsIdentifier as keywordArgumentsIdentifier,
86
packageName as packageName,
97
pathFilenameDatabaseAST as pathFilenameDatabaseAST,
108
pathPackage as pathPackage,
119
pathTypeshed as pathTypeshed,
10+
pythonVersionMinorMinimum as pythonVersionMinorMinimum,
1211
str_nameDOTname as str_nameDOTname,
1312
sys_version_infoMinimum as sys_version_infoMinimum,
1413
sys_version_infoTarget as sys_version_infoTarget,
1514
)
1615

16+
from toolFactory._snippets import (
17+
astName_overload as astName_overload,
18+
astName_staticmethod as astName_staticmethod,
19+
astName_typing_TypeAlias as astName_typing_TypeAlias,
20+
)
21+
1722
from toolFactory.astFactory import makeTools as makeTools
1823

1924
# from toolFactory.databaseAST import getDataframe as getDataframe

toolFactory/_snippets.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
import ast
21
from typing import cast
2+
import ast
33

4-
5-
overloadName = ast.Name('overload')
6-
staticmethodName = ast.Name('staticmethod')
7-
typing_TypeAliasName: ast.expr = cast(ast.expr, ast.Name('typing_TypeAlias'))
4+
astName_overload = ast.Name('overload')
5+
astName_staticmethod = ast.Name('staticmethod')
6+
astName_typing_TypeAlias: ast.expr = cast(ast.expr, ast.Name('typing_TypeAlias'))

toolFactory/astFactory.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from string import ascii_letters
33
from toolFactory import ast_Identifier, fileExtension, listASTSubclassesHARDCODED, pathPackage, str_nameDOTname, sys_version_infoTarget
44
from toolFactory.Z0Z_hardcoded import keywordArgumentsIdentifier, listASTClassesPostPythonVersionMinimum, moduleIdentifierPrefix
5-
from toolFactory._snippets import overloadName, staticmethodName, typing_TypeAliasName
5+
from toolFactory._snippets import astName_overload, astName_staticmethod, astName_typing_TypeAlias
66
from toolFactory.astFactory_annex import (
77
astImportFromClassNewInPythonVersion,
88
FunctionDefMake_Attribute,
@@ -152,7 +152,7 @@ def writeModule(astModule: ast.Module, moduleIdentifier: ast_Identifier) -> None
152152
ClassDefBe.body.append(ast.FunctionDef(name=ClassDefIdentifier
153153
, args=ast.arguments(posonlyargs=[], args=[ast.arg(arg='node', annotation=ast.Name('ast.AST'))], vararg=None, kwonlyargs=[], kw_defaults=[], kwarg=None, defaults=[])
154154
, body=[ast.Return(value=ast.Call(func=ast.Name('isinstance'), args=[ast.Name('node'), ClassDef_astNameOrAttribute], keywords=[]))]
155-
, decorator_list=[staticmethodName]
155+
, decorator_list=[astName_staticmethod]
156156
, returns=ast.Subscript(value=ast.Name('TypeGuard'), slice=ClassDef_astNameOrAttribute)))
157157

158158
# Start: cope with different arguments for Python versions. ==============================================================
@@ -210,7 +210,7 @@ def writeModule(astModule: ast.Module, moduleIdentifier: ast_Identifier) -> None
210210
ClassDefMake.body.append(ast.FunctionDef(name=ClassDefIdentifier
211211
, args=ast.arguments(posonlyargs=[], args=[], vararg=None, kwonlyargs=[], kw_defaults=[], kwarg=keywordArguments_ast_arg, defaults=[])
212212
, body=[ast.Return(value=ast.Call(ClassDef_astNameOrAttribute, args=[], keywords=[keywordArguments_ast_keyword] if keywordArguments_ast_keyword else []))]
213-
, decorator_list=[staticmethodName]
213+
, decorator_list=[astName_staticmethod]
214214
, returns=ClassDef_astNameOrAttribute))
215215

216216
for attributeIdentifier in list_astDOTClassDefAttributeIdentifier:
@@ -401,10 +401,10 @@ def list2Sequence():
401401
for ClassDefIdentifier in listClassDefIdentifier[1:]:
402402
astAnnAssignValue = ast.BinOp(left=astAnnAssignValue, op=ast.BitOr(), right=dictionaryOf_astDOTclass[ClassDefIdentifier])
403403
if len(attributeIdentifier2Str4TypeAlias2astAnnotationAndListClassDefIdentifier[attributeIdentifier]) == 1:
404-
astTypesModule.body.append(ast.AnnAssign(hasDOTName_Store, typing_TypeAliasName, astAnnAssignValue, 1))
404+
astTypesModule.body.append(ast.AnnAssign(hasDOTName_Store, astName_typing_TypeAlias, astAnnAssignValue, 1))
405405
else:
406406
list_hasDOTNameTypeAliasAnnotations.append(ast.Name(hasDOTIdentifier + '_' + attributeAnnotationAsStr4TypeAliasIdentifier.replace('list', 'list_'), ast.Store()))
407-
astTypesModule.body.append(ast.AnnAssign(list_hasDOTNameTypeAliasAnnotations[-1], typing_TypeAliasName, astAnnAssignValue, 1))
407+
astTypesModule.body.append(ast.AnnAssign(list_hasDOTNameTypeAliasAnnotations[-1], astName_typing_TypeAlias, astAnnAssignValue, 1))
408408
# overload definitions for `ClassIsAndAttribute` class
409409
potentiallySuperComplicatedAnnotationORbool = ast.Name('bool')
410410
buffaloBuffalo_workhorse_returnsAnnotation = ast.BinOp(ast.Subscript(ast.Name('TypeGuard'), list_hasDOTNameTypeAliasAnnotations[-1]), ast.BitOr(), ast.Name('bool'))
@@ -414,14 +414,14 @@ def list2Sequence():
414414
, ast.arg('attributeCondition', annotation=ast.Subscript(ast.Name('Callable'), ast.Tuple([ast.List([attributeAnnotationAsAST]), potentiallySuperComplicatedAnnotationORbool])))
415415
], vararg=None, kwonlyargs=[], kw_defaults=[], kwarg=None, defaults=[])
416416
, body=[ast.Expr(value=ast.Constant(value=Ellipsis))]
417-
, decorator_list=[staticmethodName, overloadName]
417+
, decorator_list=[astName_staticmethod, astName_overload]
418418
, returns=ast.Subscript(ast.Name('Callable'), ast.Tuple([ast.List([ast.Attribute(ast.Name('ast'), attr='AST')]), buffaloBuffalo_workhorse_returnsAnnotation]))
419419
))
420420
# overload definitions for `DOT` class
421421
ClassDefDOT.body.append(ast.FunctionDef(name=attributeIdentifier
422422
, args=ast.arguments(posonlyargs=[], args=[ast.arg(arg='node', annotation=ast.Name(list_hasDOTNameTypeAliasAnnotations[-1].id))], vararg=None, kwonlyargs=[], kw_defaults=[], kwarg=None, defaults=[])
423423
, body=[ast.Expr(value=ast.Constant(value=Ellipsis))]
424-
, decorator_list=[staticmethodName, overloadName]
424+
, decorator_list=[astName_staticmethod, astName_overload]
425425
, returns=attributeAnnotationAsAST
426426
))
427427

@@ -455,14 +455,14 @@ def list2Sequence():
455455
, body=[ast.Return(workhorseReturnValue)]
456456
, returns=buffaloBuffalo_workhorse_returnsAnnotation)
457457
, ast.Return(ast.Name('workhorse'))]
458-
, decorator_list=[staticmethodName]
458+
, decorator_list=[astName_staticmethod]
459459
, returns=ast.Subscript(ast.Name('Callable'), ast.Tuple([ast.List([ast.Attribute(ast.Name('ast'), attr='AST')]), buffaloBuffalo_workhorse_returnsAnnotation]))
460460
))
461461

462462
ClassDefDOT.body.append(ast.FunctionDef(name=attributeIdentifier
463463
, args=ast.arguments(posonlyargs=[], args=[ast.arg(arg='node', annotation=hasDOTName_Load)], vararg=None, kwonlyargs=[], kw_defaults=[], kwarg=None, defaults=[])
464464
, body=[ast.Return(value=ast.Attribute(value=ast.Name('node'), attr=attributeIdentifier))]
465-
, decorator_list=[staticmethodName]
465+
, decorator_list=[astName_staticmethod]
466466
, returns=attributeAnnotationUnifiedAsAST
467467
))
468468

@@ -471,7 +471,7 @@ def list2Sequence():
471471
astAnnAssignValue = list_hasDOTNameTypeAliasAnnotations[0]
472472
for index in range(1, len(list_hasDOTNameTypeAliasAnnotations)):
473473
astAnnAssignValue = ast.BinOp(left=astAnnAssignValue, op=ast.BitOr(), right=list_hasDOTNameTypeAliasAnnotations[index])
474-
astTypesModule.body.append(ast.AnnAssign(hasDOTName_Store, typing_TypeAliasName, astAnnAssignValue, 1))
474+
astTypesModule.body.append(ast.AnnAssign(hasDOTName_Store, astName_typing_TypeAlias, astAnnAssignValue, 1))
475475
astAssignValue = ast.Call(ast.Name('action'), args=[ast.Attribute(ast.Name('node'), attr=attributeIdentifier)])
476476
if (isinstance(attributeAnnotationUnifiedAsAST, ast.Subscript) and isinstance(attributeAnnotationUnifiedAsAST.value, ast.Name) and attributeAnnotationUnifiedAsAST.value.id == 'Sequence'
477477
or isinstance(attributeAnnotationUnifiedAsAST, ast.BinOp) and isinstance(attributeAnnotationUnifiedAsAST.right, ast.Subscript) and isinstance(attributeAnnotationUnifiedAsAST.right.value, ast.Name) and attributeAnnotationUnifiedAsAST.right.value.id == 'Sequence'):
@@ -492,7 +492,7 @@ def list2Sequence():
492492
, ast.Return(ast.Name('node'))],
493493
returns=hasDOTName_Load),
494494
ast.Return(ast.Name('workhorse'))]
495-
, decorator_list=[staticmethodName], type_comment=None
495+
, decorator_list=[astName_staticmethod], type_comment=None
496496
, returns=ast.Subscript(ast.Name('Callable'), ast.Tuple([ast.List([hasDOTName_Load]), hasDOTName_Load]))))
497497

498498
del attributeAnnotationUnifiedAsAST

toolFactory/astFactory_annex.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ def workhorse(node: NodeORattribute) -> NodeORattribute:
8181
listPylanceErrors: list[str] = ['annotation', 'arg', 'args', 'body', 'keys', 'name', 'names', 'op', 'orelse', 'pattern', 'returns', 'target', 'value',]
8282

8383
# ww='''
84-
# TypeGuard[ast.AnnAssign] | bool
84+
# if sys.version_info >= (3, 12):
85+
# "ImaBody"
8586
# '''
8687

8788
# print(ast.dump(ast.parse(ww, type_comments=True), indent=4))

0 commit comments

Comments
 (0)