agencyenterprise / neurotechdevkit

Neurotech Development Kit (NDK)
https://agencyenterprise.github.io/neurotechdevkit/
Apache License 2.0
115 stars 10 forks source link

`poetry install` fails on `pyrevolve==2.2.2` on Python 3.11 #149

Closed charlesbmi closed 1 year ago

charlesbmi commented 1 year ago

Describe the bug

I cannot install neurotechdevkit from a clean Python 3.11 mamba/conda environment.

Steps to reproduce

Include a description of your setup including:

Expected results

Install succeeds.

Actual results

  • Installing pyrevolve (2.2.2): Failed

  ChefBuildError

  Backend subprocess exited when trying to invoke build_wheel

  running bdist_wheel

  Error compiling Cython file:
  ------------------------------------------------------------
  ...
  # cython: language_level=2

  from .schedulers cimport revolve_c
  ^
  ------------------------------------------------------------

  pyrevolve/schedulers/crevolve.pyx:3:0: 'pyrevolve/schedulers.pxd' not found

  Error compiling Cython file:
  ------------------------------------------------------------
  ...
      cdef int c_st = timesteps
      cdef int c_sn = snapshots
      return revolve_c.revolve_expense(c_st, c_sn)

  cdef class CRevolve(object):
      cdef revolve_c.CRevolve __r
           ^
  ------------------------------------------------------------

  pyrevolve/schedulers/crevolve.pyx:52:9: 'revolve_c' is not declared

  Error compiling Cython file:
  ------------------------------------------------------------
  ...
      @property
      def info(self):
          return revolve_c.revolve_getinfo(self.__r)

      def revolve(self):
          cdef revolve_c.CACTION action
               ^
  ------------------------------------------------------------

  pyrevolve/schedulers/crevolve.pyx:85:13: 'revolve_c' is not declared

  Error compiling Cython file:
  ------------------------------------------------------------
  ...
      terminate = 6
      error     = 7

  def adjust(timesteps):
      cdef int c_st = timesteps
      return revolve_c.revolve_adjust(c_st)
             ^
  ------------------------------------------------------------

  pyrevolve/schedulers/crevolve.pyx:34:11: undeclared name not builtin: revolve_c
  Compiling pyrevolve/schedulers/crevolve.pyx because it changed.
  [1/1] Cythonizing pyrevolve/schedulers/crevolve.pyx
  Traceback (most recent call last):
    File "/Users/charles/Library/Application Support/pypoetry/venv/lib/python3.10/site-packages/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
      main()
    File "/Users/charles/Library/Application Support/pypoetry/venv/lib/python3.10/site-packages/pyproject_hooks/_in_process/_in_process.py", line 335, in main
      json_out['return_val'] = hook(**hook_input['kwargs'])
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/Users/charles/Library/Application Support/pypoetry/venv/lib/python3.10/site-packages/pyproject_hooks/_in_process/_in_process.py", line 251, in build_wheel
      return _build_backend().build_wheel(wheel_directory, config_settings,
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/var/folders/08/dv9xlvl56gl25rl3kk3wms140000gp/T/tmpkigxaky1/.venv/lib/python3.11/site-packages/setuptools/build_meta.py", line 434, in build_wheel
      return self._build_with_temp_dir(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/var/folders/08/dv9xlvl56gl25rl3kk3wms140000gp/T/tmpkigxaky1/.venv/lib/python3.11/site-packages/setuptools/build_meta.py", line 419, in _build_with_temp_dir
      self.run_setup()
    File "/var/folders/08/dv9xlvl56gl25rl3kk3wms140000gp/T/tmpkigxaky1/.venv/lib/python3.11/site-packages/setuptools/build_meta.py", line 507, in run_setup
      super(_BuildMetaLegacyBackend, self).run_setup(setup_script=setup_script)
    File "/var/folders/08/dv9xlvl56gl25rl3kk3wms140000gp/T/tmpkigxaky1/.venv/lib/python3.11/site-packages/setuptools/build_meta.py", line 341, in run_setup
      exec(code, locals())
    File "<string>", line 61, in <module>
    File "/var/folders/08/dv9xlvl56gl25rl3kk3wms140000gp/T/tmpkigxaky1/.venv/lib/python3.11/site-packages/setuptools/__init__.py", line 107, in setup
      return distutils.core.setup(**attrs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/var/folders/08/dv9xlvl56gl25rl3kk3wms140000gp/T/tmpkigxaky1/.venv/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup
      return run_commands(dist)
             ^^^^^^^^^^^^^^^^^^
    File "/var/folders/08/dv9xlvl56gl25rl3kk3wms140000gp/T/tmpkigxaky1/.venv/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands
      dist.run_commands()
    File "/var/folders/08/dv9xlvl56gl25rl3kk3wms140000gp/T/tmpkigxaky1/.venv/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands
      self.run_command(cmd)
    File "/var/folders/08/dv9xlvl56gl25rl3kk3wms140000gp/T/tmpkigxaky1/.venv/lib/python3.11/site-packages/setuptools/dist.py", line 1233, in run_command
      super().run_command(command)
    File "/var/folders/08/dv9xlvl56gl25rl3kk3wms140000gp/T/tmpkigxaky1/.venv/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 987, in run_command
      cmd_obj.ensure_finalized()
    File "/var/folders/08/dv9xlvl56gl25rl3kk3wms140000gp/T/tmpkigxaky1/.venv/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 111, in ensure_finalized
      self.finalize_options()
    File "/var/folders/08/dv9xlvl56gl25rl3kk3wms140000gp/T/tmpkigxaky1/.venv/lib/python3.11/site-packages/wheel/bdist_wheel.py", line 245, in finalize_options
      bdist_base = self.get_finalized_command("bdist").bdist_base
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/var/folders/08/dv9xlvl56gl25rl3kk3wms140000gp/T/tmpkigxaky1/.venv/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 305, in get_finalized_command
      cmd_obj.ensure_finalized()
    File "/var/folders/08/dv9xlvl56gl25rl3kk3wms140000gp/T/tmpkigxaky1/.venv/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 111, in ensure_finalized
      self.finalize_options()
    File "/var/folders/08/dv9xlvl56gl25rl3kk3wms140000gp/T/tmpkigxaky1/.venv/lib/python3.11/site-packages/setuptools/_distutils/command/bdist.py", line 109, in finalize_options
      self.plat_name = self.get_finalized_command('build').plat_name
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/var/folders/08/dv9xlvl56gl25rl3kk3wms140000gp/T/tmpkigxaky1/.venv/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 305, in get_finalized_command
      cmd_obj.ensure_finalized()
    File "/var/folders/08/dv9xlvl56gl25rl3kk3wms140000gp/T/tmpkigxaky1/.venv/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 111, in ensure_finalized
      self.finalize_options()
    File "/var/folders/08/dv9xlvl56gl25rl3kk3wms140000gp/T/tmpkigxaky1/.venv/lib/python3.11/site-packages/setuptools/_distutils/command/build.py", line 101, in finalize_options
      if self.distribution.has_ext_modules():
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/var/folders/08/dv9xlvl56gl25rl3kk3wms140000gp/T/tmpkigxaky1/.venv/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 997, in has_ext_modules
      return self.ext_modules and len(self.ext_modules) > 0
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "<string>", line 22, in __len__
    File "<string>", line 11, in c_list
    File "<string>", line 32, in extensions
    File "/var/folders/08/dv9xlvl56gl25rl3kk3wms140000gp/T/tmpkigxaky1/.venv/lib/python3.11/site-packages/Cython/Build/Dependencies.py", line 1134, in cythonize
      cythonize_one(*args)
    File "/var/folders/08/dv9xlvl56gl25rl3kk3wms140000gp/T/tmpkigxaky1/.venv/lib/python3.11/site-packages/Cython/Build/Dependencies.py", line 1301, in cythonize_one
      raise CompileError(None, pyx_file)
  Cython.Compiler.Errors.CompileError: pyrevolve/schedulers/crevolve.pyx

  at ~/Library/Application Support/pypoetry/venv/lib/python3.10/site-packages/poetry/installation/chef.py:147 in _prepare
      143│
      144│                 error = ChefBuildError("\n\n".join(message_parts))
      145│
      146│             if error is not None:
    → 147│                 raise error from None
      148│
      149│             return path
      150│
      151│     def _prepare_sdist(self, archive: Path, destination: Path | None = None) -> Path:

Note: This error originates from the build backend, and is likely not a problem with poetry but with pyrevolve (2.2.2) not supporting PEP 517 builds. You can verify this by running 'pip wheel --use-pep517 "pyrevolve (==2.2.2)"'.