Well, I just got the __import__ error but with a different file and module using assert=plain and not running the doctest module.
The subsequent runs could not find a certain c extension function. I removed all the __pytcache__ and .pyc files with git clean -fxd -e "**.so" and it claimed it can't import charm.core despite the fact that it exists and can by imported via python3.2 -c "import charm.core" (which is imported from the expected location even ). The next test pass worked. No I am not using any plugins. Interestingly, I just got the error on a run with the unittest module. Though it maybe because something was corrupted since clearing the pyc files fixed it. I am now completely baffled. It looks like something is , for lack of a better term, corrupting the running copy of the interpreted code. Do you know anything that could possibly do that? Poorly written c extensions perhaps ? I think I am going to set up some script and just see if I can collect errors with pytest and unittest Ian ython3.2 -m pytest --assert=plain =============================================== test session starts ================================================ platform darwin -- Python 3.2.3 -- pytest-2.2.4 collected 98 items / 1 errors schemes/test/chamhash_test.py .. schemes/test/commit_test.py .. schemes/test/dabenc_test.py .. schemes/test/encap_bchk05_test.py . schemes/test/grpsig_test.py .. schemes/test/hibenc_test.py . schemes/test/ibenc_test.py ......... schemes/test/pk_vrf_test.py . schemes/test/pkenc_test.py ........... schemes/test/pksig_test.py ................. schemes/test/rsa_alg_test.py .... charm/test/toolbox/conversion_test.py ... charm/test/toolbox/paddingschemes_test.py s.......... charm/test/toolbox/secretshare_test.py . charm/test/toolbox/symcrypto_test.py .......... charm/toolbox/paddingschemes_test.py s.......... charm/toolbox/symcrypto_test.py .......... ====================================================== ERRORS ====================================================== ___________________________________ ERROR collecting schemes/test/abenc_test.py ____________________________________ schemes/test/abenc_test.py:1: in <module> > from schemes.abenc.abenc_adapt_hybrid import HybridABEnc as HybridABEnc schemes/abenc/abenc_adapt_hybrid.py:6: in <module> > from charm.toolbox.symcrypto import AuthenticatedCryptoAbstraction charm/toolbox/symcrypto.py:9: in <module> > import hmac E TypeError: __import__() argument 1 must be str without null bytes, not str On Sat, Jun 16, 2012 at 12:30 PM, holger krekel <hol...@merlinux.eu> wrote: > On Sat, Jun 16, 2012 at 11:59 -0400, Ian Miers wrote: > > So these issues only happen on OSX and as I said,they come and go and > > change,which is why I am skeptical it's our code. Actually if I had to > > guess I'd say its something with python3 on OSX Lion, but so far we've > only > > seen the issues in test runs, not when attempting to manually recreate > the > > issue. > > > > Regarding import os.path error, I got it again. Trying to import the > module > > containing that import after that error caused a bus error. However all > > subsequent imports worked fine. The strange thing is that the pyc file > > didn't change ( or at least its md5 sum didn't) and the modification date > > for all of the pyc files for that package remain unchanged. > > > > > > python3.2 -m pytest --assert=plain seemed to work for a little bit, but > > then we started getting the same intermittent changing errors. > > With --assert=plain pytest should not interfere with anything related > to importing. Did you get the strange error with "import os.path" > in this configuration? Are you using any plugins (see output of > py.test --version)? > > The below error may in principle be a doctest/pytest bug with > python3.2 although it would be strange if it only happened sometimes. > > Holger > > > Allmost all runs with assert=reinterp , including after removing all > > __pychache__ and recompiling the c extensions produce the INTERNALERROR > > below. > > > > > > > > Thanks again, > > Ian > > > > python3.2 -m pytest --assert=reinterp > > ============================= test session starts > > ============================== > > platform darwin -- Python 3.2.3 -- pytest-2.2.4 > > collected 232 items > > > > schemes/__init__.py . > > schemes/chamhash_adm05.py . > > schemes/chamhash_rsa_hw09.py . > > schemes/encap_bchk05.py . > > schemes/pk_fre_ccv11.py . > > schemes/pk_vrf.py . > > schemes/protocol_cns07.py . > > schemes/protocol_schnorr91.py . > > schemes/sigma1.py . > > schemes/sigma2.py . > > schemes/sigma3.py . > > schemes/abenc/__init__.py . > > schemes/abenc/abenc_adapt_hybrid.py F > > schemes/abenc/abenc_bsw07.py . > > schemes/abenc/abenc_lsw08.py . > > schemes/abenc/abenc_waters09.py . > > schemes/abenc/kpabenc_adapt_hybrid.py F > > schemes/commit/__init__.py . > > schemes/commit/commit_gs08.py . > > schemes/commit/commit_pedersen92.py . > > schemes/dabenc/__init__.py . > > schemes/dabenc/dabe_aw11.py > > INTERNALERROR> Traceback (most recent call last): > > INTERNALERROR> File > > > "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/pytest-2.2.4-py3.2.egg/_pytest/main.py", > > line 74, in wrap_session > > INTERNALERROR> doit(config, session) > > INTERNALERROR> File > > > "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/pytest-2.2.4-py3.2.egg/_pytest/main.py", > > line 106, in _main > > INTERNALERROR> config.hook.pytest_runtestloop(session=session) > > INTERNALERROR> File > > > "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/pytest-2.2.4-py3.2.egg/_pytest/core.py", > > line 421, in __call__ > > INTERNALERROR> return self._docall(methods, kwargs) > > INTERNALERROR> File > > > "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/pytest-2.2.4-py3.2.egg/_pytest/core.py", > > line 432, in _docall > > INTERNALERROR> res = mc.execute() > > INTERNALERROR> File > > > "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/pytest-2.2.4-py3.2.egg/_pytest/core.py", > > line 350, in execute > > INTERNALERROR> res = method(**kwargs) > > INTERNALERROR> File > > > "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/pytest-2.2.4-py3.2.egg/_pytest/main.py", > > line 119, in pytest_runtestloop > > INTERNALERROR> item.config.hook.pytest_runtest_protocol(item=item, > > nextitem=nextitem) > > INTERNALERROR> File > > > "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/pytest-2.2.4-py3.2.egg/_pytest/core.py", > > line 421, in __call__ > > INTERNALERROR> return self._docall(methods, kwargs) > > INTERNALERROR> File > > > "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/pytest-2.2.4-py3.2.egg/_pytest/core.py", > > line 432, in _docall > > INTERNALERROR> res = mc.execute() > > INTERNALERROR> File > > > "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/pytest-2.2.4-py3.2.egg/_pytest/core.py", > > line 350, in execute > > INTERNALERROR> res = method(**kwargs) > > INTERNALERROR> File > > > "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/pytest-2.2.4-py3.2.egg/_pytest/runner.py", > > line 61, in pytest_runtest_protocol > > INTERNALERROR> runtestprotocol(item, nextitem=nextitem) > > INTERNALERROR> File > > > "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/pytest-2.2.4-py3.2.egg/_pytest/runner.py", > > line 68, in runtestprotocol > > INTERNALERROR> reports.append(call_and_report(item, "call", log)) > > INTERNALERROR> File > > > "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/pytest-2.2.4-py3.2.egg/_pytest/runner.py", > > line 99, in call_and_report > > INTERNALERROR> report = hook.pytest_runtest_makereport(item=item, > > call=call) > > INTERNALERROR> File > > > "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/pytest-2.2.4-py3.2.egg/_pytest/main.py", > > line 141, in call_matching_hooks > > INTERNALERROR> return hookmethod.pcall(plugins, **kwargs) > > INTERNALERROR> File > > > "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/pytest-2.2.4-py3.2.egg/_pytest/core.py", > > line 425, in pcall > > INTERNALERROR> return self._docall(methods, kwargs) > > INTERNALERROR> File > > > "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/pytest-2.2.4-py3.2.egg/_pytest/core.py", > > line 432, in _docall > > INTERNALERROR> res = mc.execute() > > INTERNALERROR> File > > > "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/pytest-2.2.4-py3.2.egg/_pytest/core.py", > > line 350, in execute > > INTERNALERROR> res = method(**kwargs) > > INTERNALERROR> File > > > "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/pytest-2.2.4-py3.2.egg/_pytest/capture.py", > > line 173, in pytest_runtest_makereport > > INTERNALERROR> rep = __multicall__.execute() > > INTERNALERROR> File > > > "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/pytest-2.2.4-py3.2.egg/_pytest/core.py", > > line 350, in execute > > INTERNALERROR> res = method(**kwargs) > > INTERNALERROR> File > > > "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/pytest-2.2.4-py3.2.egg/_pytest/runner.py", > > line 187, in pytest_runtest_makereport > > INTERNALERROR> longrepr = item.repr_failure(excinfo) > > INTERNALERROR> File > > > "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/pytest-2.2.4-py3.2.egg/_pytest/doctest.py", > > line 44, in repr_failure > > INTERNALERROR> lineno = test.lineno + example.lineno + 1 > > INTERNALERROR> TypeError: unsupported operand type(s) for +: 'NoneType' > and > > 'int' > > > > ===================== 2 failed, 19 passed in 3.42 seconds > > ====================== > > > > > > > > > > On Sat, Jun 16, 2012 at 4:19 AM, holger krekel <hol...@merlinux.eu> > wrote: > > > > > Hi Ian, > > > > > > On Fri, Jun 15, 2012 at 20:32 -0400, Ian Miers wrote: > > > > Hi, I just started using pytest. It's lovely. > > > > The TLDR on this is we are getting intermittent non reproducible > errors > > > > that change and sometimes disappear between test runs like the > > > following : > > > > > import os.path > > > > E TypeError: __import__() argument 1 must be str without null > bytes, > > > not > > > > str > > > > > > Looks odd. pytest does not override __import__ but it does by default > > > use a PEP302 compliant module loader. If you use > > > > > > py.test --assert=reinterpret # or --assert=plain > > > > > > do the errors go away? If so that points to a problem in pytest's > module > > > loader or some interaction problem with python3.2. > > > > > > If changing the assertion mode still leads to errors then i strongly > > > suspect it's other parts of the code you are running. I'd then suggest > > > to check if something in your environment modifies __import__ > > > e.g. by writing a test that checks/prints out __import__? > > > > > > best, > > > holger > > > > > > > Longer version: > > > > We've been getting buggy results out of test runs on OSX Lion with > python > > > > 3.2.3 and py.test version 2.2.4. Specifically we've been getting > what > > > > appear to be false-positive test failures that change from run to > run > > > and > > > > cannot be reproduced by running some code ourselves or in the case of > > > > doctest manually running python3.2 -m doctest file. > > > > > > > > Some of these errors will stay around for multiple test runs even > after > > > > make clean, etc. Some will change from run to run. All of them > > > > eventually disappeared temporarily and we got a clean test pass, > though > > > > how I don't know. Morever, the problems cropped up again. All of > this was > > > > with no code changes and code known to work on ubuntu and partially > > > > manually tested on OSX. > > > > > > > > Ordinarly I'd say there was something wrong with our code. However, > some > > > of > > > > the errors are vanishingly unlikely. Claims that modules don't exist > when > > > > they do and are importable via python3.2 -c "from foo.bar.baz import > > > narf" > > > > and such. > > > > > > > > The most glaringly, however, is this gem: > > > > charm/toolbox/pairinggroup.py:3: in <module> > > > > > import os.path > > > > E TypeError: __import__() argument 1 must be str without null > bytes, > > > not > > > > str > > > > > > > > We also got a lovely bug where it appeared __pycache__ was corrupted > > > > during test runs. On an initial run, we could import a function > from a > > > > python c extension. On subsequent runs, it didn't exist. The > function was > > > > still in the .so file, as shown by nm, however help(module) returned > > > > function_name#$@^%#$% Function description. Deleting __pychache__ > folders > > > > resolved it for the next test run but then it came back. It too > > > > disappeared after a couple of test runs never to be seen since. > > > > > > > > Has anyone seen anyhting like this? Are their known issues on OSX > with > > > > python ? With pytest? Does anyone have any idea how I might get a > better > > > > idea whats going on? > > > > > > > > As an addendum, the latest error I am getting is now : > > > > > test = [hashFn(struct.pack(">%dsI" % (len(seed)), seed, i)) for > i in > > > > ran] > > > > E UnicodeEncodeError: 'ascii' codec can't encode character '\x9e' > in > > > > position 0: ordinal not in range(128 > > > > This actually might be in our code,though again it works on ubuntu > and at > > > > one point on OSX. Given that its a pattern that points to python or > > > pytest > > > > doing something to binaries, I'm including it anyway. > > > > > > > > The project is charm, you can see the code on this branch here via > > > > https://github.com/JHUISI/charm/tree/dev. Python was installed via > fenc > > > ( I > > > > think, its not my box). The errors happened both with python3.2 -m > pytest > > > > and with python3.2 setup.py test. Though it appears more so with > the > > > > later. > > > > > > > > Thanks, > > > > > > > > Ian > > > > > > > _______________________________________________ > > > > py-dev mailing list > > > > py-dev@codespeak.net > > > > http://codespeak.net/mailman/listinfo/py-dev > > > > > > >
_______________________________________________ py-dev mailing list py-dev@codespeak.net http://codespeak.net/mailman/listinfo/py-dev