-
Notifications
You must be signed in to change notification settings - Fork 17
Description
I'm trying to use findimports
with namespace packages (i.e. those which don't have an __init__
in their directory tree) and I'm running into some issues.
First, the directory structure:
$ tree
.
├── Makefile
├── moat
│ └── main
│ └── __init__.py
├── README.md
├── setup.cfg
└── setup.py
There's a ../util
directory alongside this one which has much the same structure:
tree ../util
../util
├── Makefile
├── moat
│ └── util
│ ├── __init__.py
│ ├── times.py
│ └── _yaml.py
├── README.rst
├── setup.cfg
└── setup.py
OK. So when I run findimports
on this, I get
$ PYTHONPATH=.:../util/ findimports --ignore-stdlib
main.__init__:
anyio
asyncclick
util
setup:
setuptools
Now this is obviously suboptimal, as there's no "util" package and the toplevel isn't "main" either. I have to do
touch moat.__init__.py
touch ../util/moat/__init__.py
to get a more reasonable output of
moat.__init__:
moat.main.__init__:
anyio
asyncclick
moat.util
setup:
setuptools
To fix the requirement for the first touch
statement I would like an option that tells findimports
that it should assume that every dictionary it finds (or that's named on the command line) might be the root of a namespace package. This way the src/whatever
style of laying out your source repository would still work unchanged.
Imported modules should be recognized no matter whether they're part of a namespace, i.e. the second touch
should not be necessary even if I don't use that special new option.