Trouble understanding Python plugin file structure

I’m trying to develop a plugin solely using Python, but I’m having trouble understanding the rules for packaging Python modules for OpenTap.

Ideally, I could use any structure that validly imports modules, but I tend to organize projects along the lines of

src/
    instrument_type_1/
        test_steps/
        etc.
    instrument_type_2/
    ...
    utils/
    etc etc.
package.xml
README.md

However, adding the following to package.xml seems to be hit or miss with and without relative imports in my various experiments.

<File Path="src/**/*.py" > 
   <ProjectFile/>
</File>

Is it possible to nest modules? Does everything have to use relative imports to recognize other modules in the package?

I also noticed PythonPackageBuildAction.cs will move files contained in a directory with the project name, but this seems like an extra requirement that could mess with the python module imports (which ideally I’d like to keep intact to be able to test with pytest and other tools). Does the project, then, have to have a flat structure? Or exist in the root project directory/include the package name explicitly to be prepared by the Python plugin correctly?