# [f2pyarg.py](https://github.com/HaoZeke/numpy/blob/argparse_f2py/numpy/f2py/f2pyarg.py) study **Some doubts from [f2py2e.py:run_main():L688](https://github.com/HaoZeke/numpy/blob/main/numpy/f2py/f2py2e.py#L688)** - Flags `--2d-numpy, --2d-numeric, -2d-numarray` aren't being processed. - Moreover, there is actually spelling mistakes. - `--2d-numpy --> --2e-numpy`, `--2d-numeric--> --2e-numeric` ### Structure **The main [parser](https://github.com/HaoZeke/numpy/blob/ade978b9f7de5cb42fb4e2573972b128158aa41e/numpy/f2py/f2pyarg.py#L226)** - handles positional arguments that includes Fortran Files, functions to skip or include, module name, and other options - options unrelated to compilation and header file generation. **Doubt** A portion of f2pyarg help message looks like this - ``` positional arguments: <fortran functions> Names of fortran routines for which Python C/API functions will be generated. Default is all that are found in <fortran files>. <fortran files> Paths to fortran/signature files that will be scanned for <fortran functions> in order to determine their signatures. skip: Ignore fortran functions that follow until `:'. only: Use only fortran functions that follow until `:'. : Get back to <fortran files> mode. ``` We are accepting `<fortran functions>` as positional arguments. Help message shows that C/API module will be created only for these `<fortran functions>`. I thought `only:` flag does exactly this job. So how are these two arguments different. Also, I have never scene an example where `<fortran functions>` were first given as a positional argument, it was always files. **The distutils [build_helpers](https://github.com/HaoZeke/numpy/blob/ade978b9f7de5cb42fb4e2573972b128158aa41e/numpy/f2py/f2pyarg.py#L263)** - handle distutils related flags, related to compilation of the fortran files and C module. **Doubts** - [check_dccomp](https://github.com/HaoZeke/numpy/blob/ade978b9f7de5cb42fb4e2573972b128158aa41e/numpy/f2py/f2pyarg.py#L112) and [check_npfcomp](https://github.com/HaoZeke/numpy/blob/ade978b9f7de5cb42fb4e2573972b128158aa41e/numpy/f2py/f2pyarg.py#L134) - will these functions remain after backend shifts to Meson - Understand how [NPDLinkHelper class](https://github.com/HaoZeke/numpy/blob/ade978b9f7de5cb42fb4e2573972b128158aa41e/numpy/f2py/f2pyarg.py#L192) works and how do we plan to change it? Also, the corresponding help message looks terrible, we should work on that. **The [generate_wrappers](https://github.com/HaoZeke/numpy/blob/ade978b9f7de5cb42fb4e2573972b128158aa41e/numpy/f2py/f2pyarg.py#L264)** - not sure what is it supposed to do. - [name=Rohit] This is meant to provide different grouping of commands for a more logical structure e.g. - `f2py generate -m test` or something - `f2py -m test` error!` **Doubts** - What is it supposed to do? The main function, [process_args](https://github.com/HaoZeke/numpy/blob/ade978b9f7de5cb42fb4e2573972b128158aa41e/numpy/f2py/f2pyarg.py#L721) needs to completed on highest priority.