indygreg / indygreg/PyOxidizer

PyPI packages failing build or tests

Open
#171 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
6.2k
Forks
256
PR merge metrics
No merged PRs in 30d

Description

This is a dumping ground for build or test failures encountered. Not nearly as systematic as https://github.com/Nuitka/Nuitka/issues/522 because I cant use OBS due to https://github.com/indygreg/PyOxidizer/issues/164 , but I hope to resolve that soon.

All tests are run with pytest as an external import unless otherwise noted. I am focusing on core compiled libraries, as they are most likely to fail silently, and a few other CLI deps of mine.

Upstream rejected solutions:

- [ ] cmd2 https://github.com/python-cmd2/cmd2/issues/802 / https://github.com/python-cmd2/cmd2/pull/807 They even deleted three of my comments explaining the problem to them, and then deleting another two comments, one which was merely noting that they deleted my comments.

Build & test tips
- [x] Click `pytest.main(['-v', '/path/to/Click-7.0/tests/', '-k', 'not test_cli_as_module'])`
- [x] pygit2, but incompatible with `pyrsistent` https://github.com/libgit2/pygit2/issues/951
- [x] `PyYAML` needs Cython pre-installed in order to build the DSO, and running test suite requires being in the project root dir, and running `pytest.main(['-v', './tests/lib3'])` passes all tests.

Upstream failures
- [ ] `ruamel.yaml.clib` builds ok, but getting the core tests passing is [a bit finicky](https://bitbucket.org/ruamel/yaml/issues/27/status-of-tests#comment-54649398), and some fail only because `ruamel.yaml.main` uses `__file__` , raised as https://bitbucket.org/ruamel/yaml/issues/324/dependency-on-__file__ . Most usage is unlikely to be effected as this is the CLI of ruamel.yaml
- [ ] `toolz`/`cytoolz` `__file__` https://github.com/pytoolz/toolz/pull/476
- [x] `decorator` https://github.com/micheles/decorator/issues/73 (merged)
- [ ] `httpbin` https://github.com/postmanlabs/httpbin/issues/584
- [ ] `Django`, https://code.djangoproject.com/ticket/30950 - note installation of Django breaks pytest if `pytest-webtest` or `pytest-django` (or other similar plugins) is in the `sys.path`
- [ ] `ply` https://github.com/dabeaz/ply/issues/216 effecting `pycparser` https://github.com/eliben/pycparser/issues/355 , also effecting `cffi` in the built binary (but not in the packaging rule stages) `cffi` also fails because it needs `Python.h`
- [ ] cytoolz `tlz._build_tlz` uses `__file__` https://github.com/pytoolz/toolz/pull/476
- [x] `yaspin` - fixed on master
- [ ] `orderedmultidict` - https://github.com/gruns/orderedmultidict/issues/25, pin to `<1.0.1` to avoid breakage
- [ ] `kombu` and `cell` (and `cl`) https://github.com/celery/kombu/issues/1121 / https://github.com/celery/cell/issues/21
- [ ] `boltons` https://github.com/mahmoud/boltons/issues/229
- [x] `hypothesis` https://github.com/HypothesisWorks/hypothesis/issues/2196 (released)
- [ ] docker compose https://github.com/docker/compose/issues/7011
- [ ] pycountry (all below are `__file__` to be raised upstream)
- [ ] python-whois
- [ ] httplib2 (similar to certifi problem)
- [ ] `Babel` https://github.com/python-babel/babel/issues/674
- [ ] pytz
- [ ] jsonschema
- [ ] tinycss2
- [ ] pyx
- [ ] pyglet
- [ ] netaddr https://github.com/drkjam/netaddr/issues/188

Known failures
- [ ] psutil tests mostly fail because of the use `sys.executable -c` . Using import hooks to add `__file__` helps all tests pass. `pytest.main(['-v', '/path/to/psutil/tests', '-k', 'not (test_process or TestProcessUtils or TestScripts or TestTerminatedProcessLeaks)'])` removes most of those.
[ ] coverage has lots of `__file__` problems, and likely too entrenched to be fixed any time soon. And test failures due to use of `sys.executable -c '..'`

Unknown failures
- [ ] `peewee` needs to be tested using `runtests.py` in the project root, and it fails only `tests.fields.TestTimestampField`, in what seems to be a timezone offset problem as the day field is off by one. Need to retest locally with CPython directly.
- [ ] `requests`, after hacking around certifi, and even getting `cryptography` extensions working(c.f. https://github.com/indygreg/PyOxidizer/issues/170), `test_https_warnings` still fails and 2 of 4 of the "test_errors" fail `pytest.main(['-v', '/path/to/requests-2.22.0/tests/', '-k', 'not TestTimeout and not test_errors and not test_proxy_error'])` is my current recipe. fixture `httpbin_ca_bundle = None` is probably the problem - something is probably wrong with my `httpbin`.
- [ ] `gevent` tests fail to get collected due to use of `sys.executable -c`; need to get its greentest running under PyOxidizer to evaluate properly
- [ ] `lz4` had one failure `test_roundtrip_1[data1-4-True-True-True-0-store_size0]` , and then finished at 37%
- [ ] `blist`, errors `NameError: name 'cmp' is not defined` when run under pytest. Need to retest with unittest, as it is passing at https://build.opensuse.org/package/show/devel:languages:python/python-blist
- [ ] `aiodns` one failure `test_query_a_bad`
- [ ] `aiohttp[speedups]` tests use `__file__`, but there are also a four other failures, mostly related to network responses. `test_fingerprint_mismatch`, `test_aiohttp_request_ctx_manager_not_found`, `test_recv_protocol_error[pyloop]`, `test_constructor[pyloop]`, `TestCookieJarSafe.test_expires`, `TestCookieJarSafe.test_max_age`
- [ ] Flask - only three tests fail: `test_scriptinfo` fails but looks due to test runner path fiddling, `test_main_module_paths` and `test_aborting`. (This looks good to enough to say that PyOxidizer is Flask compatible.)
- [ ] pycares - 9 quite significant failures

OK
- [x] PySocks
- [x] idna
- [x] persistent
- [x] multidict
- [x] msgpack
- [x] cmarkgfm
- [x] yarl
- [x] cChardet

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the package failure lists and the documented pytest commands in this issue, then reproduce one unchecked failure under PyOxidizer. Compare the result with the linked upstream reports and existing passing entries. Done would require a specific package failure to be resolved or clearly characterized, but this issue does not define a single completion target.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, rust
Domain
build-system, testing-qa
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
15/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.