bndr / bndr/pycycle

Bug: Subpackage circular imports not detected

Open
#15 0 comments 4 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
363
Forks
24
PR merge metrics
No merged PRs in 30d

Description

## Summary

My example is the following package structure where `package.subpackage.module` imports from `package.module` and visa-versa.
```
.
├── package
│   ├── __init__.py
│   ├── module.py
│   └── subpackage
│   ├── __init__.py
│   └── module.py
└── run.py
```

#### run.py
```python
from package.module import Anything
```

#### package/subpackage/module.py
```python
from package.module import Anything

class Thing:
pass
```

#### package/module.py
```python
from package.subpackage.module import Thing

class Anything:
pass
```

## Expected behaviour

I consider this a circular import but pycycle detects no errors.

Executing `run.py` results in a circular import error:
```
Traceback (most recent call last):
File "run.py", line 1, in
from package.module import Anything
File "/home/dom/Code/package/package/module.py", line 1, in
from package.subpackage.module import Thing
File "/home/dom/Code/package/package/subpackage/module.py", line 1, in
from package.module import Anything
ImportError: cannot import name 'Anything' from 'package.module' (/home/dom/Code/package/package/module.py)
```

An archive containing the package structure and code.
[package.tar.gz](https://github.com/bndr/pycycle/files/4422375/package.tar.gz)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.