Cyclic imports

Dan Stromberg drsalists at gmail.com
Sat Aug 21 18:48:31 EDT 2021


On Sat, Aug 21, 2021 at 3:35 PM Dan Stromberg <drsalists at gmail.com> wrote:

> On Tue, Aug 17, 2021 at 11:20 AM Chris Angelico <rosuav at gmail.com> wrote:
>
>> The main advantage of ast.parse() is that it no longer cares about
>> code layout, and it won't be fooled by an import statement inside a
>> docstring, or anything like that. It's also pretty easy to handle
>> multiple variants (note how "import bar, baz" just has two things in
>> the names list).
>>
>
> I put together something to detect importcycles using the ast module.
> It's at https://stromberg.dnsalias.org/svn/cycles/trunk for now - no
> pypi, no homepage.  I've only run  it on some test inputs, nothing
> substantial. Usage example is in the Makefile.
>
> Imports are kind of complicated. Am I missing any important cases?
>
> Sample output looks like:
>     Detected 2 cycles:
>     ('mutual_1', 'mutual_2')
>     ('directory.mutual_a', 'directory.mutual_b', 'directory.mutual_c')
>
> Thanks!
>

BTW, "readline0.py" is in the project as a Subversion external reference,
so just going to the URL above in a browser won't show it.

But you can install an svn binary and then:
svn checkout https://stromberg.dnsalias.org/svn/cycles/trunk
That should get all of it, including readline0.py


More information about the Python-list mailing list