jncramp / iniparse

Automatically exported from code.google.com/p/iniparse
Other
0 stars 0 forks source link

circular imports make python3 unhappy #21

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago

I have been playing around with python3 and iniparse and have build some 
fedora packages, there make a python3 version of iniparse using the 2to3 
tool from python3.
But i run into an issue when importing iniparse

Python 3.1.2 (r312:79147, Apr  1 2010, 03:31:01) 
[GCC 4.4.3 20100226 (Red Hat 4.4.3-8)] on linux2
>>> import iniparse
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.1/site-packages/iniparse/__init__.py", line 6, in 
<module>
    from .ini import INIConfig, tidy, change_comment_syntax
  File "/usr/lib/python3.1/site-packages/iniparse/ini.py", line 48, in 
<module>
    from . import compat
  File "/usr/lib/python3.1/site-packages/iniparse/compat.py", line 27, in 
<module>
    from . import ini
ImportError: cannot import name ini

This is cause by ini.py has a

from . import compat

and compat.py has a 

from . import ini

The compat import in ini.py is only used by the newly added tidy().

One way to solve it is to move the tidy() to a separate .py file, so the 
compat import can be skipped from ini.py.

What do you think ?

Tim

Original issue reported on code.google.com by tim.lauridsen on 5 May 2010 at 9:27

GoogleCodeExporter commented 8 years ago

Original comment by tim.lauridsen on 5 May 2010 at 9:37

Attachments:

GoogleCodeExporter commented 8 years ago
I have added a diff file to see the changes made to the code by the 2to3 tool.

Original comment by tim.lauridsen on 5 May 2010 at 9:38

GoogleCodeExporter commented 8 years ago
Yeah - create a iniparse.utils module and move tidy to it.  Also, change the
corresponding lines in iniparse/__init__.py

Original comment by psobe...@gmail.com on 7 May 2010 at 2:21

GoogleCodeExporter commented 8 years ago
Based on a 1-minute look at the diff, the 2to3 changes look mostly sane, except 
for a
few extra list creations that I think could be avoided (in the
iterkeys/itervalues/iteritems functions).

I think these changes are sufficient if we want iniparse to work with files 
opened in
text mode.  However, currently iniparse supports both byte and unicode strings. 
 If
we want to preserve that functionality, we'll probably have to make more 
changes.

Original comment by psobe...@gmail.com on 7 May 2010 at 2:31

GoogleCodeExporter commented 8 years ago
ok, I have commited the changes for moving tidy

http://code.google.com/p/iniparse/source/detail?r=139

I was not my plan to add the 2to3 diff to upstream at this point in time, i will
modify the rpm build spec file to build both a python 2.x version and python 
3.x one
by running 2to3 on the sources before the build. So no need to convert upstream
sources at this point in time.

Original comment by tim.lauridsen on 8 May 2010 at 7:10

GoogleCodeExporter commented 8 years ago
sounds good.

Original comment by psobe...@gmail.com on 8 May 2010 at 7:09