kiyo-masui / bitshuffle

Filter for improving compression of typed binary data.
Other
215 stars 76 forks source link

Current version incompatible with poetry #118

Open danielemichilli opened 2 years ago

danielemichilli commented 2 years ago

The content of pyproject.toml is incompatible with poetry and makes the installation fall back on using setup.py. This also fails as Cython is not installed in the environment by poetry before running the setup.

For example, running in another module poetry add /path/to/v0.4.2/bitshuffle causes the error

  PackageInfoError

  Unable to determine package info for path: /tmp/pypoetry-git-bitshuffleo19yfitc

  Fallback egg_info generation failed.

  Command ['/tmp/tmp0azgu769/.venv/bin/python', 'setup.py', 'egg_info'] errored with the following return code 1, and output:
  Traceback (most recent call last):
    File "setup.py", line 13, in <module>
      from Cython.Compiler.Main import default_options
  ModuleNotFoundError: No module named 'Cython'

  at /usr/local/lib/python3.7/site-packages/poetry/inspection/info.py:503 in _pep517_metadata
      499│                     venv.run("python", "setup.py", "egg_info")
      500│                     return cls.from_metadata(path)
      501│                 except EnvCommandError as fbe:
      502│                     raise PackageInfoError(
    → 503│                         path, "Fallback egg_info generation failed.", fbe
      504│                     )
      505│                 finally:
      506│                     os.chdir(cwd.as_posix())
      507│
r
shinybrar commented 2 years ago

@danielemichilli @jrs65 -- looking into this issue and here are some observations.

You need Cython installed in the environment to even evaluate the install and setup directives. This breaks any setup command other than install.

As a result, you cannot currently install bitshuffle locally, and even python setup.py install will fail.

Most third-party dependency resolution systems, pipx, poetry, flit etc. use egg_info to fetch metadata, build tags and dependency links for the project. Note, this is outside the purview and different from install_requires and setup_requires dependencies which are correctly defined in pyproject.toml.

I bandaid fix for this issue, is in #123