reykit 1.1.30__py3-none-any.whl → 1.1.31__py3-none-any.whl

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.
reykit/rbase.py CHANGED
@@ -20,7 +20,7 @@ from traceback import format_stack, extract_stack
20
20
  from atexit import register as atexit_register
21
21
  from time import sleep as time_sleep
22
22
  from inspect import signature as inspect_signature, _ParameterKind, _empty
23
- from ast import Starred
23
+ from ast import AST, Name, Attribute, Call, Starred, keyword, dump as ast_dump
24
24
  from varname import VarnameException, argname as varname_argname
25
25
 
26
26
 
@@ -56,6 +56,7 @@ __all__ = (
56
56
  'get_stack_text',
57
57
  'get_stack_param',
58
58
  'get_arg_info',
59
+ 'get_astname',
59
60
  'get_varname',
60
61
  'block',
61
62
  'at_exit'
@@ -860,6 +861,39 @@ def get_arg_info(func: Callable) -> list[
860
861
  return info
861
862
 
862
863
 
864
+ def get_astname(obj: AST) -> str:
865
+ """
866
+ Get object mapping name of `ast` package.
867
+
868
+ Parameters
869
+ ----------
870
+ obj : `AST` object.
871
+
872
+ Returns
873
+ -------
874
+ Mapping name.
875
+ """
876
+
877
+ # Get.
878
+ match obj:
879
+ case Name():
880
+ name = obj.id
881
+ case Attribute():
882
+ name = obj.attr
883
+ case Call():
884
+ name = obj.func
885
+ case Starred() | keyword():
886
+ name = obj.value
887
+ case _:
888
+ name = ast_dump(obj)
889
+
890
+ # Again.
891
+ if type(name) != str:
892
+ name = get_astname(name)
893
+
894
+ return name
895
+
896
+
863
897
  def get_varname(argname: str, level: int = 1) -> str | list[str] | None:
864
898
  """
865
899
  Get variable name of function input argument, can backtrack.
@@ -883,24 +917,21 @@ def get_varname(argname: str, level: int = 1) -> str | list[str] | None:
883
917
 
884
918
  # Get.
885
919
  try:
886
- result = varname_argname(argname, frame=level)
920
+ varnames = varname_argname(argname, frame=level)
887
921
  except VarnameException:
888
922
  return
889
923
 
890
- # Convert.
891
- if type(result) != tuple:
892
- result = (result,)
893
- varnames: list[str] = [
894
- name
895
- for elem in result
896
- for name in (
897
- (elem.value.id,)
898
- if type(elem) == Starred
899
- else tuple(elem.values())
900
- if type(elem) == dict
901
- else (elem,)
902
- )
903
- ]
924
+ # Handle type AST.
925
+ if type(varnames) == tuple:
926
+ varnames = [
927
+ get_astname(varname)
928
+ if isinstance(varnames, AST)
929
+ else varname
930
+ for varname in varnames
931
+ ]
932
+ else:
933
+ if isinstance(varnames, AST):
934
+ varnames = get_astname(varnames)
904
935
 
905
936
  return varnames
906
937
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reykit
3
- Version: 1.1.30
3
+ Version: 1.1.31
4
4
  Summary: Kit method set.
5
5
  Project-URL: homepage, https://github.com/reyxbo/reykit/
6
6
  Author-email: Rey <reyxbo@163.com>
@@ -1,6 +1,6 @@
1
1
  reykit/__init__.py,sha256=V86CHqPAAVkooVx3_QIOKpDIFVneQCTTSwfJ-uWgBno,788
2
2
  reykit/rall.py,sha256=7Hip02YOkIDm3_xkoSDjvvYV2LhdBV2r4UKzWWnIfIo,628
3
- reykit/rbase.py,sha256=MluWXVrai98DMlhNrYLvpEZkxl4F683cRBHS8osKiGw,22306
3
+ reykit/rbase.py,sha256=GY8DKTIMsot_vORlwM2y384mVM69F0VVn7yCQtnzQLc,22963
4
4
  reykit/rdata.py,sha256=COe2VVGaUV0L1MD6PB7zL8treVNehVFqJELbm7wAvs0,9471
5
5
  reykit/remail.py,sha256=s7TXbLgEWEqNoeM42c6FpPufB2LajHgQuahfZri3urQ,6706
6
6
  reykit/rimage.py,sha256=p7caatLE71yy7GUTkTKyMOaJTeBfl6pZr_7BFjcDvY8,6159
@@ -22,7 +22,7 @@ reykit/rwrap.py,sha256=RK3wlc2cd-lnAvzqzvKsS21EtCmBNTA3i8HRbaolWE4,15275
22
22
  reykit/rzip.py,sha256=ABUDLwEHQIpcvZbJE_oV78H7dik6nC7kaRz660Ro9Os,3481
23
23
  reykit/rdll/__init__.py,sha256=tdKb-BOKLFn-diCvXjSLg9x71VuRKzkg2KtpOLGLTR4,679
24
24
  reykit/rdll/rdll_core.py,sha256=o6-rKcTQgxZQe0kD3GnwyNb3KL9IogzgCQNOmYLMm7A,5086
25
- reykit-1.1.30.dist-info/METADATA,sha256=JWb4r7Ug9idWje8YkEezX8kIIkqH9GjNhgRptrI0VAw,1913
26
- reykit-1.1.30.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
27
- reykit-1.1.30.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
28
- reykit-1.1.30.dist-info/RECORD,,
25
+ reykit-1.1.31.dist-info/METADATA,sha256=DSL0F6sDmid1YxFl7B1qMa-XLPiLIEs_WVQijLwrAU8,1913
26
+ reykit-1.1.31.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
27
+ reykit-1.1.31.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
28
+ reykit-1.1.31.dist-info/RECORD,,