| title | Inspect A Fortran API |
|---|---|
| audience | users, developers |
| prerequisites | basic wrapper tutorial |
| related | ../../reference/semantic-pyi-format.md |
| status | maintained |
| publication | draft |
Use this recipe when you want to understand a Fortran declaration before building a wrapper.
module m1
contains
subroutine add1(n, x)
integer, intent(in) :: n
real(kind=8), intent(inout), dimension(n) :: x
end subroutine add1
end module m1python3 -m prik parse tests/fortran/source_parsing/parsing/fixtures/general/basic_subroutine.f90Expected output:
File: tests/fortran/source_parsing/parsing/fixtures/general/basic_subroutine.f90
Modules: 1
- module m1 (vars=0, uses=0)
Procedures: 1
- subroutine add1(n:integer[0], x:real(8)[1])
python3 -m prik generate --pyi tests/fortran/source_parsing/parsing/fixtures/general/basic_subroutine.f90Expected output:
File: tests/fortran/source_parsing/parsing/fixtures/general/basic_subroutine.f90
Root contract: basic_subroutine/basic_subroutine.pyi
from . import m1
Module contract: m1.pyi
from prik.contracts import Addr, Arg, Float64, Int32, native_call
@native_call([Addr(Arg(0)), Arg(1)])
def add1(
n: Int32,
x: Float64[n]
) -> None: ...- Parser output is source facts, not wrapper policy.
.pyioutput is the editable semantic contract.- The default wrapper build reports unsupported completed policies while it builds the wrapper plan.