265 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			265 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								from collections.abc import Callable, Mapping
							 | 
						||
| 
								 | 
							
								from pprint import pprint as show
							 | 
						||
| 
								 | 
							
								from typing import Any, Final, Never, TypeAlias, TypeVar, overload
							 | 
						||
| 
								 | 
							
								from typing import Literal as L
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								from _typeshed import FileDescriptorOrPath
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								from .cfuncs import errmess
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								__all__ = [
							 | 
						||
| 
								 | 
							
								    "applyrules",
							 | 
						||
| 
								 | 
							
								    "containscommon",
							 | 
						||
| 
								 | 
							
								    "containsderivedtypes",
							 | 
						||
| 
								 | 
							
								    "debugcapi",
							 | 
						||
| 
								 | 
							
								    "dictappend",
							 | 
						||
| 
								 | 
							
								    "errmess",
							 | 
						||
| 
								 | 
							
								    "gentitle",
							 | 
						||
| 
								 | 
							
								    "get_f2py_modulename",
							 | 
						||
| 
								 | 
							
								    "getargs2",
							 | 
						||
| 
								 | 
							
								    "getcallprotoargument",
							 | 
						||
| 
								 | 
							
								    "getcallstatement",
							 | 
						||
| 
								 | 
							
								    "getdimension",
							 | 
						||
| 
								 | 
							
								    "getfortranname",
							 | 
						||
| 
								 | 
							
								    "getpymethoddef",
							 | 
						||
| 
								 | 
							
								    "getrestdoc",
							 | 
						||
| 
								 | 
							
								    "getuseblocks",
							 | 
						||
| 
								 | 
							
								    "getusercode",
							 | 
						||
| 
								 | 
							
								    "getusercode1",
							 | 
						||
| 
								 | 
							
								    "hasbody",
							 | 
						||
| 
								 | 
							
								    "hascallstatement",
							 | 
						||
| 
								 | 
							
								    "hascommon",
							 | 
						||
| 
								 | 
							
								    "hasexternals",
							 | 
						||
| 
								 | 
							
								    "hasinitvalue",
							 | 
						||
| 
								 | 
							
								    "hasnote",
							 | 
						||
| 
								 | 
							
								    "hasresultnote",
							 | 
						||
| 
								 | 
							
								    "isallocatable",
							 | 
						||
| 
								 | 
							
								    "isarray",
							 | 
						||
| 
								 | 
							
								    "isarrayofstrings",
							 | 
						||
| 
								 | 
							
								    "isattr_value",
							 | 
						||
| 
								 | 
							
								    "ischaracter",
							 | 
						||
| 
								 | 
							
								    "ischaracter_or_characterarray",
							 | 
						||
| 
								 | 
							
								    "ischaracterarray",
							 | 
						||
| 
								 | 
							
								    "iscomplex",
							 | 
						||
| 
								 | 
							
								    "iscomplexarray",
							 | 
						||
| 
								 | 
							
								    "iscomplexfunction",
							 | 
						||
| 
								 | 
							
								    "iscomplexfunction_warn",
							 | 
						||
| 
								 | 
							
								    "iscstyledirective",
							 | 
						||
| 
								 | 
							
								    "isdouble",
							 | 
						||
| 
								 | 
							
								    "isdummyroutine",
							 | 
						||
| 
								 | 
							
								    "isexternal",
							 | 
						||
| 
								 | 
							
								    "isfunction",
							 | 
						||
| 
								 | 
							
								    "isfunction_wrap",
							 | 
						||
| 
								 | 
							
								    "isint1",
							 | 
						||
| 
								 | 
							
								    "isint1array",
							 | 
						||
| 
								 | 
							
								    "isinteger",
							 | 
						||
| 
								 | 
							
								    "isintent_aux",
							 | 
						||
| 
								 | 
							
								    "isintent_c",
							 | 
						||
| 
								 | 
							
								    "isintent_callback",
							 | 
						||
| 
								 | 
							
								    "isintent_copy",
							 | 
						||
| 
								 | 
							
								    "isintent_dict",
							 | 
						||
| 
								 | 
							
								    "isintent_hide",
							 | 
						||
| 
								 | 
							
								    "isintent_in",
							 | 
						||
| 
								 | 
							
								    "isintent_inout",
							 | 
						||
| 
								 | 
							
								    "isintent_inplace",
							 | 
						||
| 
								 | 
							
								    "isintent_nothide",
							 | 
						||
| 
								 | 
							
								    "isintent_out",
							 | 
						||
| 
								 | 
							
								    "isintent_overwrite",
							 | 
						||
| 
								 | 
							
								    "islogical",
							 | 
						||
| 
								 | 
							
								    "islogicalfunction",
							 | 
						||
| 
								 | 
							
								    "islong_complex",
							 | 
						||
| 
								 | 
							
								    "islong_double",
							 | 
						||
| 
								 | 
							
								    "islong_doublefunction",
							 | 
						||
| 
								 | 
							
								    "islong_long",
							 | 
						||
| 
								 | 
							
								    "islong_longfunction",
							 | 
						||
| 
								 | 
							
								    "ismodule",
							 | 
						||
| 
								 | 
							
								    "ismoduleroutine",
							 | 
						||
| 
								 | 
							
								    "isoptional",
							 | 
						||
| 
								 | 
							
								    "isprivate",
							 | 
						||
| 
								 | 
							
								    "isrequired",
							 | 
						||
| 
								 | 
							
								    "isroutine",
							 | 
						||
| 
								 | 
							
								    "isscalar",
							 | 
						||
| 
								 | 
							
								    "issigned_long_longarray",
							 | 
						||
| 
								 | 
							
								    "isstring",
							 | 
						||
| 
								 | 
							
								    "isstring_or_stringarray",
							 | 
						||
| 
								 | 
							
								    "isstringarray",
							 | 
						||
| 
								 | 
							
								    "isstringfunction",
							 | 
						||
| 
								 | 
							
								    "issubroutine",
							 | 
						||
| 
								 | 
							
								    "issubroutine_wrap",
							 | 
						||
| 
								 | 
							
								    "isthreadsafe",
							 | 
						||
| 
								 | 
							
								    "isunsigned",
							 | 
						||
| 
								 | 
							
								    "isunsigned_char",
							 | 
						||
| 
								 | 
							
								    "isunsigned_chararray",
							 | 
						||
| 
								 | 
							
								    "isunsigned_long_long",
							 | 
						||
| 
								 | 
							
								    "isunsigned_long_longarray",
							 | 
						||
| 
								 | 
							
								    "isunsigned_short",
							 | 
						||
| 
								 | 
							
								    "isunsigned_shortarray",
							 | 
						||
| 
								 | 
							
								    "isvariable",
							 | 
						||
| 
								 | 
							
								    "l_and",
							 | 
						||
| 
								 | 
							
								    "l_not",
							 | 
						||
| 
								 | 
							
								    "l_or",
							 | 
						||
| 
								 | 
							
								    "outmess",
							 | 
						||
| 
								 | 
							
								    "process_f2cmap_dict",
							 | 
						||
| 
								 | 
							
								    "replace",
							 | 
						||
| 
								 | 
							
								    "show",
							 | 
						||
| 
								 | 
							
								    "stripcomma",
							 | 
						||
| 
								 | 
							
								    "throw_error",
							 | 
						||
| 
								 | 
							
								]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								###
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								_VT = TypeVar("_VT")
							 | 
						||
| 
								 | 
							
								_RT = TypeVar("_RT")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								_Var: TypeAlias = Mapping[str, list[str]]
							 | 
						||
| 
								 | 
							
								_ROut: TypeAlias = Mapping[str, str]
							 | 
						||
| 
								 | 
							
								_F2CMap: TypeAlias = Mapping[str, Mapping[str, str]]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								_Bool: TypeAlias = bool | L[0, 1]
							 | 
						||
| 
								 | 
							
								_Intent: TypeAlias = L[
							 | 
						||
| 
								 | 
							
								    "INTENT_IN",
							 | 
						||
| 
								 | 
							
								    "INTENT_OUT",
							 | 
						||
| 
								 | 
							
								    "INTENT_INOUT",
							 | 
						||
| 
								 | 
							
								    "INTENT_C",
							 | 
						||
| 
								 | 
							
								    "INTENT_CACHE",
							 | 
						||
| 
								 | 
							
								    "INTENT_HIDE",
							 | 
						||
| 
								 | 
							
								    "INTENT_INPLACE",
							 | 
						||
| 
								 | 
							
								    "INTENT_ALIGNED4",
							 | 
						||
| 
								 | 
							
								    "INTENT_ALIGNED8",
							 | 
						||
| 
								 | 
							
								    "INTENT_ALIGNED16",
							 | 
						||
| 
								 | 
							
								    "OPTIONAL",
							 | 
						||
| 
								 | 
							
								]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								###
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								isintent_dict: dict[Callable[[_Var], _Bool], _Intent]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class F2PYError(Exception): ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class throw_error:
							 | 
						||
| 
								 | 
							
								    mess: Final[str]
							 | 
						||
| 
								 | 
							
								    def __init__(self, /, mess: str) -> None: ...
							 | 
						||
| 
								 | 
							
								    def __call__(self, /, var: _Var) -> Never: ...  # raises F2PYError
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								def l_and(*f: tuple[str, Callable[[_VT], _RT]]) -> Callable[[_VT], _RT]: ...
							 | 
						||
| 
								 | 
							
								def l_or(*f: tuple[str, Callable[[_VT], _RT]]) -> Callable[[_VT], _RT]: ...
							 | 
						||
| 
								 | 
							
								def l_not(f: tuple[str, Callable[[_VT], _RT]]) -> Callable[[_VT], _RT]: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								def outmess(t: str) -> None: ...
							 | 
						||
| 
								 | 
							
								def debugcapi(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								def hasinitvalue(var: _Var | str) -> bool: ...
							 | 
						||
| 
								 | 
							
								def hasnote(var: _Var | str) -> bool: ...
							 | 
						||
| 
								 | 
							
								def ischaracter(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def ischaracterarray(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def ischaracter_or_characterarray(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isstring(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isstringarray(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isstring_or_stringarray(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isarray(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isarrayofstrings(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isscalar(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def iscomplex(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def islogical(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isinteger(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isint1(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isint1array(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def islong_long(var: _Var) -> _Bool: ...
							 | 
						||
| 
								 | 
							
								def isunsigned(var: _Var) -> _Bool: ...
							 | 
						||
| 
								 | 
							
								def isunsigned_char(var: _Var) -> _Bool: ...
							 | 
						||
| 
								 | 
							
								def isunsigned_chararray(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isunsigned_short(var: _Var) -> _Bool: ...
							 | 
						||
| 
								 | 
							
								def isunsigned_shortarray(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isunsigned_long_long(var: _Var) -> _Bool: ...
							 | 
						||
| 
								 | 
							
								def isunsigned_long_longarray(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def issigned_long_longarray(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isdouble(var: _Var) -> _Bool: ...
							 | 
						||
| 
								 | 
							
								def islong_double(var: _Var) -> _Bool: ...
							 | 
						||
| 
								 | 
							
								def islong_complex(var: _Var) -> _Bool: ...
							 | 
						||
| 
								 | 
							
								def iscomplexarray(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isallocatable(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isattr_value(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isoptional(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isexternal(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isrequired(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isprivate(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isvariable(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isintent_in(var: _Var) -> _Bool: ...
							 | 
						||
| 
								 | 
							
								def isintent_inout(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isintent_out(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isintent_hide(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isintent_nothide(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isintent_c(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isintent_cache(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isintent_copy(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isintent_overwrite(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isintent_callback(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isintent_inplace(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isintent_aux(var: _Var) -> bool: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								def containsderivedtypes(rout: _ROut) -> L[0, 1]: ...
							 | 
						||
| 
								 | 
							
								def containscommon(rout: _ROut) -> _Bool: ...
							 | 
						||
| 
								 | 
							
								def hasexternals(rout: _ROut) -> bool: ...
							 | 
						||
| 
								 | 
							
								def hasresultnote(rout: _ROut) -> _Bool: ...
							 | 
						||
| 
								 | 
							
								def hasbody(rout: _ROut) -> _Bool: ...
							 | 
						||
| 
								 | 
							
								def hascommon(rout: _ROut) -> bool: ...
							 | 
						||
| 
								 | 
							
								def hasderivedtypes(rout: _ROut) -> bool: ...
							 | 
						||
| 
								 | 
							
								def hascallstatement(rout: _ROut) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isroutine(rout: _ROut) -> bool: ...
							 | 
						||
| 
								 | 
							
								def ismodule(rout: _ROut) -> bool: ...
							 | 
						||
| 
								 | 
							
								def ismoduleroutine(rout: _ROut) -> bool: ...
							 | 
						||
| 
								 | 
							
								def issubroutine(rout: _ROut) -> bool: ...
							 | 
						||
| 
								 | 
							
								def issubroutine_wrap(rout: _ROut) -> _Bool: ...
							 | 
						||
| 
								 | 
							
								def isfunction(rout: _ROut) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isfunction_wrap(rout: _ROut) -> _Bool: ...
							 | 
						||
| 
								 | 
							
								def islogicalfunction(rout: _ROut) -> _Bool: ...
							 | 
						||
| 
								 | 
							
								def islong_longfunction(rout: _ROut) -> _Bool: ...
							 | 
						||
| 
								 | 
							
								def islong_doublefunction(rout: _ROut) -> _Bool: ...
							 | 
						||
| 
								 | 
							
								def iscomplexfunction(rout: _ROut) -> _Bool: ...
							 | 
						||
| 
								 | 
							
								def iscomplexfunction_warn(rout: _ROut) -> _Bool: ...
							 | 
						||
| 
								 | 
							
								def isstringfunction(rout: _ROut) -> _Bool: ...
							 | 
						||
| 
								 | 
							
								def isthreadsafe(rout: _ROut) -> bool: ...
							 | 
						||
| 
								 | 
							
								def isdummyroutine(rout: _ROut) -> _Bool: ...
							 | 
						||
| 
								 | 
							
								def iscstyledirective(f2py_line: str) -> bool: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# .
							 | 
						||
| 
								 | 
							
								def getdimension(var: _Var) -> list[Any] | None: ...
							 | 
						||
| 
								 | 
							
								def getfortranname(rout: _ROut) -> str: ...
							 | 
						||
| 
								 | 
							
								def getmultilineblock(rout: _ROut, blockname: str, comment: _Bool = 1, counter: int = 0) -> str | None: ...
							 | 
						||
| 
								 | 
							
								def getcallstatement(rout: _ROut) -> str | None: ...
							 | 
						||
| 
								 | 
							
								def getcallprotoargument(rout: _ROut, cb_map: dict[str, str] = {}) -> str: ...
							 | 
						||
| 
								 | 
							
								def getusercode(rout: _ROut) -> str | None: ...
							 | 
						||
| 
								 | 
							
								def getusercode1(rout: _ROut) -> str | None: ...
							 | 
						||
| 
								 | 
							
								def getpymethoddef(rout: _ROut) -> str | None: ...
							 | 
						||
| 
								 | 
							
								def getargs(rout: _ROut) -> tuple[list[str], list[str]]: ...
							 | 
						||
| 
								 | 
							
								def getargs2(rout: _ROut) -> tuple[list[str], list[str]]: ...
							 | 
						||
| 
								 | 
							
								def getrestdoc(rout: _ROut) -> str | None: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								def gentitle(name: str) -> str: ...
							 | 
						||
| 
								 | 
							
								def stripcomma(s: str) -> str: ...
							 | 
						||
| 
								 | 
							
								@overload
							 | 
						||
| 
								 | 
							
								def replace(str: str, d: list[str], defaultsep: str = "") -> list[str]: ...
							 | 
						||
| 
								 | 
							
								@overload
							 | 
						||
| 
								 | 
							
								def replace(str: list[str], d: str, defaultsep: str = "") -> list[str]: ...
							 | 
						||
| 
								 | 
							
								@overload
							 | 
						||
| 
								 | 
							
								def replace(str: str, d: str, defaultsep: str = "") -> str: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								def dictappend(rd: Mapping[str, object], ar: Mapping[str, object] | list[Mapping[str, object]]) -> dict[str, Any]: ...
							 | 
						||
| 
								 | 
							
								def applyrules(rules: Mapping[str, object], d: Mapping[str, object], var: _Var = {}) -> dict[str, Any]: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								def get_f2py_modulename(source: FileDescriptorOrPath) -> str: ...
							 | 
						||
| 
								 | 
							
								def getuseblocks(pymod: Mapping[str, Mapping[str, Mapping[str, str]]]) -> list[str]: ...
							 | 
						||
| 
								 | 
							
								def process_f2cmap_dict(
							 | 
						||
| 
								 | 
							
								    f2cmap_all: _F2CMap,
							 | 
						||
| 
								 | 
							
								    new_map: _F2CMap,
							 | 
						||
| 
								 | 
							
								    c2py_map: _F2CMap,
							 | 
						||
| 
								 | 
							
								    verbose: bool = False,
							 | 
						||
| 
								 | 
							
								) -> tuple[dict[str, dict[str, str]], list[str]]: ...
							 |