crackfortran.pyi 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. import re
  2. from collections.abc import Callable, Iterable, Mapping
  3. from typing import IO, Any, Concatenate, Final, Never, ParamSpec, TypeAlias, overload
  4. from typing import Literal as L
  5. from _typeshed import StrOrBytesPath, StrPath
  6. from .__version__ import version
  7. from .auxfuncs import isintent_dict as isintent_dict
  8. ###
  9. _Tss = ParamSpec("_Tss")
  10. _VisitResult: TypeAlias = list[Any] | dict[str, Any] | None
  11. _VisitItem: TypeAlias = tuple[str | None, _VisitResult]
  12. _VisitFunc: TypeAlias = Callable[Concatenate[_VisitItem, list[_VisitItem], _VisitResult, _Tss], _VisitItem | None]
  13. ###
  14. COMMON_FREE_EXTENSIONS: Final[list[str]] = ...
  15. COMMON_FIXED_EXTENSIONS: Final[list[str]] = ...
  16. f2py_version: Final = version
  17. tabchar: Final[str] = " "
  18. f77modulename: str
  19. pyffilename: str
  20. sourcecodeform: L["fix", "gree"]
  21. strictf77: L[0, 1]
  22. quiet: L[0, 1]
  23. verbose: L[0, 1, 2]
  24. skipemptyends: L[0, 1]
  25. ignorecontains: L[1]
  26. dolowercase: L[1]
  27. beginpattern: str | re.Pattern[str]
  28. currentfilename: str
  29. filepositiontext: str
  30. expectbegin: L[0, 1]
  31. gotnextfile: L[0, 1]
  32. neededmodule: int
  33. skipblocksuntil: int
  34. groupcounter: int
  35. groupname: dict[int, str] | str
  36. groupcache: dict[int, dict[str, Any]] | None
  37. grouplist: dict[int, list[dict[str, Any]]] | None
  38. previous_context: tuple[str, str, int] | None
  39. f90modulevars: dict[str, dict[str, Any]] = {}
  40. debug: list[Never] = []
  41. include_paths: list[str] = []
  42. onlyfuncs: list[str] = []
  43. skipfuncs: list[str] = []
  44. skipfunctions: Final[list[str]] = []
  45. usermodules: Final[list[dict[str, Any]]] = []
  46. defaultimplicitrules: Final[dict[str, dict[str, str]]] = {}
  47. badnames: Final[dict[str, str]] = {}
  48. invbadnames: Final[dict[str, str]] = {}
  49. beforethisafter: Final[str] = ...
  50. fortrantypes: Final[str] = ...
  51. groupbegins77: Final[str] = ...
  52. groupbegins90: Final[str] = ...
  53. groupends: Final[str] = ...
  54. endifs: Final[str] = ...
  55. moduleprocedures: Final[str] = ...
  56. beginpattern77: Final[tuple[re.Pattern[str], L["begin"]]] = ...
  57. beginpattern90: Final[tuple[re.Pattern[str], L["begin"]]] = ...
  58. callpattern: Final[tuple[re.Pattern[str], L["call"]]] = ...
  59. callfunpattern: Final[tuple[re.Pattern[str], L["callfun"]]] = ...
  60. commonpattern: Final[tuple[re.Pattern[str], L["common"]]] = ...
  61. containspattern: Final[tuple[re.Pattern[str], L["contains"]]] = ...
  62. datapattern: Final[tuple[re.Pattern[str], L["data"]]] = ...
  63. dimensionpattern: Final[tuple[re.Pattern[str], L["dimension"]]] = ...
  64. endifpattern: Final[tuple[re.Pattern[str], L["endif"]]] = ...
  65. endpattern: Final[tuple[re.Pattern[str], L["end"]]] = ...
  66. entrypattern: Final[tuple[re.Pattern[str], L["entry"]]] = ...
  67. externalpattern: Final[tuple[re.Pattern[str], L["external"]]] = ...
  68. f2pyenhancementspattern: Final[tuple[re.Pattern[str], L["f2pyenhancements"]]] = ...
  69. formatpattern: Final[tuple[re.Pattern[str], L["format"]]] = ...
  70. functionpattern: Final[tuple[re.Pattern[str], L["begin"]]] = ...
  71. implicitpattern: Final[tuple[re.Pattern[str], L["implicit"]]] = ...
  72. intentpattern: Final[tuple[re.Pattern[str], L["intent"]]] = ...
  73. intrinsicpattern: Final[tuple[re.Pattern[str], L["intrinsic"]]] = ...
  74. optionalpattern: Final[tuple[re.Pattern[str], L["optional"]]] = ...
  75. moduleprocedurepattern: Final[tuple[re.Pattern[str], L["moduleprocedure"]]] = ...
  76. multilinepattern: Final[tuple[re.Pattern[str], L["multiline"]]] = ...
  77. parameterpattern: Final[tuple[re.Pattern[str], L["parameter"]]] = ...
  78. privatepattern: Final[tuple[re.Pattern[str], L["private"]]] = ...
  79. publicpattern: Final[tuple[re.Pattern[str], L["public"]]] = ...
  80. requiredpattern: Final[tuple[re.Pattern[str], L["required"]]] = ...
  81. subroutinepattern: Final[tuple[re.Pattern[str], L["begin"]]] = ...
  82. typespattern: Final[tuple[re.Pattern[str], L["type"]]] = ...
  83. usepattern: Final[tuple[re.Pattern[str], L["use"]]] = ...
  84. analyzeargs_re_1: Final[re.Pattern[str]] = ...
  85. callnameargspattern: Final[re.Pattern[str]] = ...
  86. charselector: Final[re.Pattern[str]] = ...
  87. crackline_bind_1: Final[re.Pattern[str]] = ...
  88. crackline_bindlang: Final[re.Pattern[str]] = ...
  89. crackline_re_1: Final[re.Pattern[str]] = ...
  90. determineexprtype_re_1: Final[re.Pattern[str]] = ...
  91. determineexprtype_re_2: Final[re.Pattern[str]] = ...
  92. determineexprtype_re_3: Final[re.Pattern[str]] = ...
  93. determineexprtype_re_4: Final[re.Pattern[str]] = ...
  94. determineexprtype_re_5: Final[re.Pattern[str]] = ...
  95. getlincoef_re_1: Final[re.Pattern[str]] = ...
  96. kindselector: Final[re.Pattern[str]] = ...
  97. lenarraypattern: Final[re.Pattern[str]] = ...
  98. lenkindpattern: Final[re.Pattern[str]] = ...
  99. namepattern: Final[re.Pattern[str]] = ...
  100. nameargspattern: Final[re.Pattern[str]] = ...
  101. operatorpattern: Final[re.Pattern[str]] = ...
  102. real16pattern: Final[re.Pattern[str]] = ...
  103. real8pattern: Final[re.Pattern[str]] = ...
  104. selectpattern: Final[re.Pattern[str]] = ...
  105. typedefpattern: Final[re.Pattern[str]] = ...
  106. typespattern4implicit: Final[re.Pattern[str]] = ...
  107. word_pattern: Final[re.Pattern[str]] = ...
  108. post_processing_hooks: Final[list[_VisitFunc[...]]] = []
  109. #
  110. def outmess(line: str, flag: int = 1) -> None: ...
  111. def reset_global_f2py_vars() -> None: ...
  112. #
  113. def rmbadname1(name: str) -> str: ...
  114. def undo_rmbadname1(name: str) -> str: ...
  115. def rmbadname(names: Iterable[str]) -> list[str]: ...
  116. def undo_rmbadname(names: Iterable[str]) -> list[str]: ...
  117. #
  118. def openhook(filename: StrPath, mode: str) -> IO[Any]: ...
  119. def is_free_format(fname: StrPath) -> bool: ...
  120. def readfortrancode(
  121. ffile: StrOrBytesPath | Iterable[StrOrBytesPath],
  122. dowithline: Callable[[str, int], object] = ...,
  123. istop: int = 1,
  124. ) -> None: ...
  125. #
  126. def split_by_unquoted(line: str, characters: str) -> tuple[str, str]: ...
  127. #
  128. def crackline(line: str, reset: int = 0) -> None: ...
  129. def markouterparen(line: str) -> str: ...
  130. def markoutercomma(line: str, comma: str = ",") -> str: ...
  131. def unmarkouterparen(line: str) -> str: ...
  132. def appenddecl(decl: Mapping[str, object] | None, decl2: Mapping[str, object] | None, force: int = 1) -> dict[str, Any]: ...
  133. #
  134. def parse_name_for_bind(line: str) -> tuple[str, str | None]: ...
  135. def analyzeline(m: re.Match[str], case: str, line: str) -> None: ...
  136. def appendmultiline(group: dict[str, Any], context_name: str, ml: str) -> None: ...
  137. def cracktypespec0(typespec: str, ll: str | None) -> tuple[str, str | None, str | None, str | None]: ...
  138. #
  139. def removespaces(expr: str) -> str: ...
  140. def markinnerspaces(line: str) -> str: ...
  141. def updatevars(typespec: str, selector: str | None, attrspec: str, entitydecl: str) -> str: ...
  142. def cracktypespec(typespec: str, selector: str | None) -> tuple[dict[str, str] | None, dict[str, str] | None, str | None]: ...
  143. #
  144. def setattrspec(decl: dict[str, list[str]], attr: str | None, force: int = 0) -> dict[str, list[str]]: ...
  145. def setkindselector(decl: dict[str, dict[str, str]], sel: dict[str, str], force: int = 0) -> dict[str, dict[str, str]]: ...
  146. def setcharselector(decl: dict[str, dict[str, str]], sel: dict[str, str], force: int = 0) -> dict[str, dict[str, str]]: ...
  147. def getblockname(block: Mapping[str, object], unknown: str = "unknown") -> str: ...
  148. def setmesstext(block: Mapping[str, object]) -> None: ...
  149. def get_usedict(block: Mapping[str, object]) -> dict[str, str]: ...
  150. def get_useparameters(block: Mapping[str, object], param_map: Mapping[str, str] | None = None) -> dict[str, str]: ...
  151. #
  152. @overload
  153. def postcrack2(
  154. block: dict[str, Any],
  155. tab: str = "",
  156. param_map: Mapping[str, str] | None = None,
  157. ) -> dict[str, str | Any]: ...
  158. @overload
  159. def postcrack2(
  160. block: list[dict[str, Any]],
  161. tab: str = "",
  162. param_map: Mapping[str, str] | None = None,
  163. ) -> list[dict[str, str | Any]]: ...
  164. #
  165. @overload
  166. def postcrack(block: dict[str, Any], args: Mapping[str, str] | None = None, tab: str = "") -> dict[str, Any]: ...
  167. @overload
  168. def postcrack(block: list[dict[str, str]], args: Mapping[str, str] | None = None, tab: str = "") -> list[dict[str, Any]]: ...
  169. #
  170. def sortvarnames(vars: Mapping[str, object]) -> list[str]: ...
  171. def analyzecommon(block: Mapping[str, object]) -> dict[str, Any]: ...
  172. def analyzebody(block: Mapping[str, object], args: Mapping[str, str], tab: str = "") -> list[dict[str, Any]]: ...
  173. def buildimplicitrules(block: Mapping[str, object]) -> tuple[dict[str, dict[str, str]], dict[str, str]]: ...
  174. def myeval(e: str, g: object | None = None, l: object | None = None) -> float: ...
  175. #
  176. def getlincoef(e: str, xset: set[str]) -> tuple[float | None, float | None, str | None]: ...
  177. #
  178. def get_sorted_names(vars: Mapping[str, Mapping[str, str]]) -> list[str]: ...
  179. def get_parameters(vars: Mapping[str, Mapping[str, str]], global_params: dict[str, str] = {}) -> dict[str, str]: ...
  180. #
  181. def analyzevars(block: Mapping[str, Any]) -> dict[str, dict[str, str]]: ...
  182. #
  183. def param_eval(v: str, g_params: dict[str, Any], params: Mapping[str, object], dimspec: str | None = None) -> dict[str, Any]: ...
  184. def param_parse(d: str, params: Mapping[str, str]) -> str: ...
  185. def expr2name(a: str, block: Mapping[str, object], args: list[str] = []) -> str: ...
  186. def analyzeargs(block: Mapping[str, object]) -> dict[str, Any]: ...
  187. #
  188. def determineexprtype(expr: str, vars: Mapping[str, object], rules: dict[str, Any] = {}) -> dict[str, Any]: ...
  189. def crack2fortrangen(block: Mapping[str, object], tab: str = "\n", as_interface: bool = False) -> str: ...
  190. def common2fortran(common: Mapping[str, object], tab: str = "") -> str: ...
  191. def use2fortran(use: Mapping[str, object], tab: str = "") -> str: ...
  192. def true_intent_list(var: dict[str, list[str]]) -> list[str]: ...
  193. def vars2fortran(
  194. block: Mapping[str, Mapping[str, object]],
  195. vars: Mapping[str, object],
  196. args: Mapping[str, str],
  197. tab: str = "",
  198. as_interface: bool = False,
  199. ) -> str: ...
  200. #
  201. def crackfortran(files: StrOrBytesPath | Iterable[StrOrBytesPath]) -> list[dict[str, Any]]: ...
  202. def crack2fortran(block: Mapping[str, Any]) -> str: ...
  203. #
  204. def traverse(
  205. obj: tuple[str | None, _VisitResult],
  206. visit: _VisitFunc[_Tss],
  207. parents: list[tuple[str | None, _VisitResult]] = [],
  208. result: list[Any] | dict[str, Any] | None = None,
  209. *args: _Tss.args,
  210. **kwargs: _Tss.kwargs,
  211. ) -> _VisitItem | _VisitResult: ...
  212. #
  213. def character_backward_compatibility_hook(
  214. item: _VisitItem,
  215. parents: list[_VisitItem],
  216. result: object, # ignored
  217. *args: object, # ignored
  218. **kwargs: object, # ignored
  219. ) -> _VisitItem | None: ...
  220. # namespace pollution
  221. c: str
  222. n: str