From 9173d8257125aafb17f4b0158ec9475dbd68a5af Mon Sep 17 00:00:00 2001 From: Jos Verlinde Date: Sun, 18 Feb 2024 15:26:23 +0100 Subject: [PATCH] Exclude memory adresses from type info. Signed-off-by: Jos Verlinde (cherry picked from commit 05cafdbad5eb650145d33a5deae8e136cd0d782f) Signed-off-by: Jos Verlinde --- mip/full.json | 2 +- mip/minified.json | 2 +- mip/mpy_v5.json | 2 +- mip/mpy_v6.json | 2 +- package.json | 2 +- pyproject.toml | 2 +- repos/micropython | 2 +- repos/micropython-lib | 2 +- repos/micropython-stubs | 2 +- src/stubber/__init__.py | 2 +- src/stubber/board/createstubs.py | 4 +++- src/stubber/board/createstubs_db.py | 6 ++++-- src/stubber/board/createstubs_db_min.py | 17 ++++++++++------- src/stubber/board/createstubs_db_mpy.mpy | Bin 9427 -> 9472 bytes src/stubber/board/createstubs_mem.py | 6 ++++-- src/stubber/board/createstubs_mem_min.py | 17 ++++++++++------- src/stubber/board/createstubs_mem_mpy.mpy | Bin 9009 -> 9054 bytes src/stubber/board/createstubs_min.py | 17 ++++++++++------- src/stubber/board/createstubs_mpy.mpy | Bin 12111 -> 12156 bytes 19 files changed, 51 insertions(+), 36 deletions(-) diff --git a/mip/full.json b/mip/full.json index 241fd1f8..01bbe210 100644 --- a/mip/full.json +++ b/mip/full.json @@ -18,5 +18,5 @@ ] ], "deps": [], - "version": "1.17.2" + "version": "1.17.3" } \ No newline at end of file diff --git a/mip/minified.json b/mip/minified.json index f55d2ac1..25f0c9bb 100644 --- a/mip/minified.json +++ b/mip/minified.json @@ -18,5 +18,5 @@ ] ], "deps": [], - "version": "1.17.2" + "version": "1.17.3" } \ No newline at end of file diff --git a/mip/mpy_v5.json b/mip/mpy_v5.json index a62e42cf..a94aacab 100644 --- a/mip/mpy_v5.json +++ b/mip/mpy_v5.json @@ -18,5 +18,5 @@ ] ], "deps": [], - "version": "1.17.2" + "version": "1.17.3" } \ No newline at end of file diff --git a/mip/mpy_v6.json b/mip/mpy_v6.json index 4820f602..816c8bd2 100644 --- a/mip/mpy_v6.json +++ b/mip/mpy_v6.json @@ -18,5 +18,5 @@ ] ], "deps": [], - "version": "1.17.2" + "version": "1.17.3" } \ No newline at end of file diff --git a/package.json b/package.json index d67fe0c1..6bd941e2 100644 --- a/package.json +++ b/package.json @@ -18,5 +18,5 @@ ] ], "deps": [], - "version": "1.17.2" + "version": "1.17.3" } diff --git a/pyproject.toml b/pyproject.toml index ba889e86..a7ea00b6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ repo-path = "./repos" [tool.poetry] name = "micropython-stubber" -version = "1.17.2" +version = "1.17.3" description = "Tooling to create and maintain stubs for MicroPython" authors = ["Jos Verlinde "] license = "MIT" diff --git a/repos/micropython b/repos/micropython index 0285cb2b..9feb0689 160000 --- a/repos/micropython +++ b/repos/micropython @@ -1 +1 @@ -Subproject commit 0285cb2bf4a317490364b9249f25ca0eaa6af3ef +Subproject commit 9feb0689eeaca5ce88aedcc680f997a3b4d0221c diff --git a/repos/micropython-lib b/repos/micropython-lib index 7cdf7088..f20d89c6 160000 --- a/repos/micropython-lib +++ b/repos/micropython-lib @@ -1 +1 @@ -Subproject commit 7cdf70881519c73667efbc4a61a04d9c1a49babb +Subproject commit f20d89c6aad9443a696561ca2a01f7ef0c8fb302 diff --git a/repos/micropython-stubs b/repos/micropython-stubs index a329b238..9d9a1227 160000 --- a/repos/micropython-stubs +++ b/repos/micropython-stubs @@ -1 +1 @@ -Subproject commit a329b2387f65b4feea0fe9f9a702237370b3cdaa +Subproject commit 9d9a1227f1ec0a9c30450bdee1fd18824fcb6107 diff --git a/src/stubber/__init__.py b/src/stubber/__init__.py index b4f0b2a3..76aed4cc 100644 --- a/src/stubber/__init__.py +++ b/src/stubber/__init__.py @@ -1,4 +1,4 @@ """get the version""" -__version__ = "1.17.2" +__version__ = "1.17.3" diff --git a/src/stubber/board/createstubs.py b/src/stubber/board/createstubs.py index 76cce44b..8f718d93 100644 --- a/src/stubber/board/createstubs.py +++ b/src/stubber/board/createstubs.py @@ -23,7 +23,7 @@ except ImportError: from ucollections import OrderedDict # type: ignore -__version__ = "v1.17.2" +__version__ = "v1.17.3" ENOENT = 2 _MAX_CLASS_LEVEL = 2 # Max class nesting LIBS = ["lib", "/lib", "/sd/lib", "/flash/lib", "."] @@ -362,6 +362,8 @@ def write_object_stub(self, fp, object_expr: object, obj_name: str, indent: str, else: # Requires Python 3.6 syntax, which is OK for the stubs/pyi t = "Incomplete" + if " at " in item_repr: + item_repr = item_repr.split(" at ")[0] + " at ...>" s = "{0}{1}: {2} ## {3} = {4}\n".format(indent, item_name, t, item_type_txt, item_repr) fp.write(s) # log.debug("\n" + s) diff --git a/src/stubber/board/createstubs_db.py b/src/stubber/board/createstubs_db.py index 1d8b2932..a0a8b754 100644 --- a/src/stubber/board/createstubs_db.py +++ b/src/stubber/board/createstubs_db.py @@ -18,7 +18,7 @@ - cross compilation, using mpy-cross, to avoid the compilation step on the micropython device -This variant was generated from createstubs.py by micropython-stubber v1.17.2 +This variant was generated from createstubs.py by micropython-stubber v1.17.3 """ # Copyright (c) 2019-2023 Jos Verlinde @@ -42,7 +42,7 @@ except ImportError: from ucollections import OrderedDict # type: ignore -__version__ = "v1.17.2" +__version__ = "v1.17.3" ENOENT = 2 _MAX_CLASS_LEVEL = 2 # Max class nesting LIBS = ["lib", "/lib", "/sd/lib", "/flash/lib", "."] @@ -375,6 +375,8 @@ def write_object_stub(self, fp, object_expr: object, obj_name: str, indent: str, else: # Requires Python 3.6 syntax, which is OK for the stubs/pyi t = "Incomplete" + if " at " in item_repr: + item_repr = item_repr.split(" at ")[0] + " at ...>" s = "{0}{1}: {2} ## {3} = {4}\n".format(indent, item_name, t, item_type_txt, item_repr) fp.write(s) # log.debug("\n" + s) diff --git a/src/stubber/board/createstubs_db_min.py b/src/stubber/board/createstubs_db_min.py index a0d887f1..e90ca9f3 100644 --- a/src/stubber/board/createstubs_db_min.py +++ b/src/stubber/board/createstubs_db_min.py @@ -51,7 +51,7 @@ except O:pass try:from collections import OrderedDict as k except O:from ucollections import OrderedDict as k -__version__='v1.17.2' +__version__='v1.17.3' A3=2 A4=2 A5=['lib','/lib','/sd/lib','/flash/lib',J] @@ -132,11 +132,11 @@ def create_module_stub(K,module_name,file_name=E): except(D,q):A.warning('could not del new_module') F.collect();return R def write_object_stub(K,fp,object_expr,obj_name,indent,in_class=0): - X='generator';W='{0}{1}: {3} = {2}\n';V='bound_method';U='Incomplete';N=in_class;M='Exception';L=object_expr;I=fp;D=indent;F.collect() + Y=' at ';X='generator';W='{0}{1}: {3} = {2}\n';V='bound_method';U='Incomplete';N=in_class;M='Exception';L=object_expr;I=fp;D=indent;F.collect() if L in K.problematic:A.warning('SKIPPING problematic module:{}'.format(L));return - Y,O=K.get_obj_attributes(L) + Z,O=K.get_obj_attributes(L) if O:A.error(O) - for(E,J,H,Z,b)in Y: + for(E,J,H,a,c)in Z: if E in['classmethod','staticmethod','BaseException',M]:continue if E[0].isdigit():A.warning('NameError: invalid name {}'.format(E));continue if H==""and P(D)<=A4*4: @@ -144,7 +144,7 @@ def write_object_stub(K,fp,object_expr,obj_name,indent,in_class=0): if R:Q=M C='\n{}class {}({}):\n'.format(D,E,Q) if R:C+=D+' ...\n';I.write(C);continue - I.write(C);K.write_object_stub(I,Z,'{0}.{1}'.format(obj_name,E),D+' ',N+1);C=D+' def __init__(self, *argv, **kwargs) -> None:\n';C+=D+' ...\n\n';I.write(C) + I.write(C);K.write_object_stub(I,a,'{0}.{1}'.format(obj_name,E),D+' ',N+1);C=D+' def __init__(self, *argv, **kwargs) -> None:\n';C+=D+' ...\n\n';I.write(C) elif any(A in H for A in[A0,z,'closure']): S=U;T=B if N>0:T='self, ' @@ -155,11 +155,14 @@ def write_object_stub(K,fp,object_expr,obj_name,indent,in_class=0): elif H.startswith("' + C='{0}{1}: {2} ## {3} = {4}\n'.format(D,E,G,H,J) I.write(C) else:I.write("# all other, type = '{0}'\n".format(H));I.write(D+E+' # type: Incomplete\n') @property diff --git a/src/stubber/board/createstubs_db_mpy.mpy b/src/stubber/board/createstubs_db_mpy.mpy index 79df321c44b89d3c04e4f8197f76647659d79d11..34a22a80986efad9b417873e80dc764513ec7e40 100644 GIT binary patch delta 4408 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 Zd`-Jeu=68rQ$xMlfL6!iAR|4K`!h&t-(CO! delta 4325 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 diff --git a/src/stubber/board/createstubs_mem.py b/src/stubber/board/createstubs_mem.py index 84b41490..bfabf216 100644 --- a/src/stubber/board/createstubs_mem.py +++ b/src/stubber/board/createstubs_mem.py @@ -9,7 +9,7 @@ - cross compilation, using mpy-cross, to avoid the compilation step on the micropython device -This variant was generated from createstubs.py by micropython-stubber v1.17.2 +This variant was generated from createstubs.py by micropython-stubber v1.17.3 """ # Copyright (c) 2019-2023 Jos Verlinde @@ -33,7 +33,7 @@ except ImportError: from ucollections import OrderedDict # type: ignore -__version__ = "v1.17.2" +__version__ = "v1.17.3" ENOENT = 2 _MAX_CLASS_LEVEL = 2 # Max class nesting LIBS = ["lib", "/lib", "/sd/lib", "/flash/lib", "."] @@ -366,6 +366,8 @@ def write_object_stub(self, fp, object_expr: object, obj_name: str, indent: str, else: # Requires Python 3.6 syntax, which is OK for the stubs/pyi t = "Incomplete" + if " at " in item_repr: + item_repr = item_repr.split(" at ")[0] + " at ...>" s = "{0}{1}: {2} ## {3} = {4}\n".format(indent, item_name, t, item_type_txt, item_repr) fp.write(s) # log.debug("\n" + s) diff --git a/src/stubber/board/createstubs_mem_min.py b/src/stubber/board/createstubs_mem_min.py index 313bf3e8..69b5be67 100644 --- a/src/stubber/board/createstubs_mem_min.py +++ b/src/stubber/board/createstubs_mem_min.py @@ -47,7 +47,7 @@ except N:pass try:from collections import OrderedDict as f except N:from ucollections import OrderedDict as f -__version__='v1.17.2' +__version__='v1.17.3' y=2 z=2 A0=['lib','/lib','/sd/lib','/flash/lib',J] @@ -128,11 +128,11 @@ def create_module_stub(K,module_name,file_name=E): except(F,l):A.warning('could not del new_module') D.collect();return R def write_object_stub(K,fp,object_expr,obj_name,indent,in_class=0): - X='generator';W='{0}{1}: {3} = {2}\n';V='bound_method';U='Incomplete';N=in_class;M='Exception';L=object_expr;I=fp;E=indent;D.collect() + Y=' at ';X='generator';W='{0}{1}: {3} = {2}\n';V='bound_method';U='Incomplete';N=in_class;M='Exception';L=object_expr;I=fp;E=indent;D.collect() if L in K.problematic:A.warning('SKIPPING problematic module:{}'.format(L));return - Y,O=K.get_obj_attributes(L) + Z,O=K.get_obj_attributes(L) if O:A.error(O) - for(F,J,H,Z,e)in Y: + for(F,J,H,a,f)in Z: if F in['classmethod','staticmethod','BaseException',M]:continue if F[0].isdigit():A.warning('NameError: invalid name {}'.format(F));continue if H==""and P(E)<=z*4: @@ -140,7 +140,7 @@ def write_object_stub(K,fp,object_expr,obj_name,indent,in_class=0): if R:Q=M C='\n{}class {}({}):\n'.format(E,F,Q) if R:C+=E+' ...\n';I.write(C);continue - I.write(C);K.write_object_stub(I,Z,'{0}.{1}'.format(obj_name,F),E+' ',N+1);C=E+' def __init__(self, *argv, **kwargs) -> None:\n';C+=E+' ...\n\n';I.write(C) + I.write(C);K.write_object_stub(I,a,'{0}.{1}'.format(obj_name,F),E+' ',N+1);C=E+' def __init__(self, *argv, **kwargs) -> None:\n';C+=E+' ...\n\n';I.write(C) elif any(A in H for A in[u,t,'closure']): S=U;T=B if N>0:T='self, ' @@ -151,11 +151,14 @@ def write_object_stub(K,fp,object_expr,obj_name,indent,in_class=0): elif H.startswith("' + C='{0}{1}: {2} ## {3} = {4}\n'.format(E,F,G,H,J) I.write(C) else:I.write("# all other, type = '{0}'\n".format(H));I.write(E+F+' # type: Incomplete\n') @property diff --git a/src/stubber/board/createstubs_mem_mpy.mpy b/src/stubber/board/createstubs_mem_mpy.mpy index 6d7f42df1c2de0d2e744792c8e474bc9929e8ff0..da0a5fdee3129761ea253edf2f83e749f0373e0e 100644 GIT binary patch delta 4313 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 KOYSSC&Hn+2)!R4# delta 4259 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 diff --git a/src/stubber/board/createstubs_min.py b/src/stubber/board/createstubs_min.py index 2b24ef2b..c82a5543 100644 --- a/src/stubber/board/createstubs_min.py +++ b/src/stubber/board/createstubs_min.py @@ -50,7 +50,7 @@ except N:pass try:from collections import OrderedDict as g except N:from ucollections import OrderedDict as g -__version__='v1.17.2' +__version__='v1.17.3' A0=2 A1=2 A5=['lib','/lib','/sd/lib','/flash/lib',J] @@ -131,11 +131,11 @@ def create_module_stub(K,module_name,file_name=D): except(E,l):A.warning('could not del new_module') F.collect();return U def write_object_stub(K,fp,object_expr,obj_name,indent,in_class=0): - X='generator';W='{0}{1}: {3} = {2}\n';V='bound_method';U='Incomplete';N=in_class;M='Exception';L=object_expr;I=fp;D=indent;F.collect() + Y=' at ';X='generator';W='{0}{1}: {3} = {2}\n';V='bound_method';U='Incomplete';N=in_class;M='Exception';L=object_expr;I=fp;D=indent;F.collect() if L in K.problematic:A.warning('SKIPPING problematic module:{}'.format(L));return - Y,O=K.get_obj_attributes(L) + Z,O=K.get_obj_attributes(L) if O:A.error(O) - for(E,J,H,Z,e)in Y: + for(E,J,H,a,f)in Z: if E in['classmethod','staticmethod','BaseException',M]:continue if E[0].isdigit():A.warning('NameError: invalid name {}'.format(E));continue if H==""and R(D)<=A1*4: @@ -143,7 +143,7 @@ def write_object_stub(K,fp,object_expr,obj_name,indent,in_class=0): if Q:P=M C='\n{}class {}({}):\n'.format(D,E,P) if Q:C+=D+' ...\n';I.write(C);continue - I.write(C);K.write_object_stub(I,Z,'{0}.{1}'.format(obj_name,E),D+' ',N+1);C=D+' def __init__(self, *argv, **kwargs) -> None:\n';C+=D+' ...\n\n';I.write(C) + I.write(C);K.write_object_stub(I,a,'{0}.{1}'.format(obj_name,E),D+' ',N+1);C=D+' def __init__(self, *argv, **kwargs) -> None:\n';C+=D+' ...\n\n';I.write(C) elif any(A in H for A in[u,t,'closure']): S=U;T=B if N>0:T='self, ' @@ -154,11 +154,14 @@ def write_object_stub(K,fp,object_expr,obj_name,indent,in_class=0): elif H.startswith("' + C='{0}{1}: {2} ## {3} = {4}\n'.format(D,E,G,H,J) I.write(C) else:I.write("# all other, type = '{0}'\n".format(H));I.write(D+E+' # type: Incomplete\n') @property diff --git a/src/stubber/board/createstubs_mpy.mpy b/src/stubber/board/createstubs_mpy.mpy index 424f20cf69ed8db43e1ca66dda39e8d00a0ce83b..147f067dc57ecd752d07facac291c01075cc0a00 100644 GIT binary patch delta 4286 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