# [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.