crackfortran.pyi 10 KB

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