Skip to content

conda recipe: funcy 2.0 breaks dvc #9291

Closed
@johnyaku

Description

@johnyaku

Bug Report

Description

Installing DVC via conda results in funcy 2.0 being added to the environment. Not sure what has changed compared to funcy < 2.0 but we get errors, particularly with git hooks.

Reproduce

The following conda environment definition file works:

name: dvc_latest

channels:
    - conda-forge
    - default

dependencies:
    - dvc=2.51
    - dvc-ssh
    - dvc-gs
    - dvc-s3
    - snakemake
    - eido
    - peppy=0.35.5
    - funcy<2.0
    - mamba
    - drmaa
    - click
    - pv
    - git>=2.7.2

But failing to pin funcy<2.0 results in the following traceback:

git commit -m "message"
Traceback (most recent call last):
  File "/path/to/lib/python3.11/site-packages/dvc/cli/__init__.py", line 185, in main
    ret = cmd.do_run()
          ^^^^^^^^^^^^
  File "/path/to/lib/python3.11/site-packages/dvc/cli/command.py", line 36, in do_run
    return self.run()
           ^^^^^^^^^^
  File "/path/to/lib/python3.11/site-packages/dvc/commands/git_hook.py", line 13, in run
    from dvc.repo import Repo
  File "/path/to/lib/python3.11/site-packages/dvc/repo/__init__.py", line 53, in <module>
    class Repo:
  File "/path/to/lib/python3.11/site-packages/dvc/repo/__init__.py", line 77, in Repo
    from dvc.repo.status import status  # type: ignore[misc]
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/path/to/lib/python3.11/site-packages/dvc/repo/status.py", line 4, in <module>
    from funcy.py3 import cat
ModuleNotFoundError: No module named 'funcy.py3'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/directflow/TumourProgressionGroupTemp/projects/dvc/envs/dvc_stable/bin/dvc", line 10, in <module>
    sys.exit(main())
             ^^^^^^
  File "/path/to/lib/python3.11/site-packages/dvc/cli/__init__.py", line 211, in main
    ret = _log_exceptions(exc) or 255
          ^^^^^^^^^^^^^^^^^^^^
  File "/path/to/lib/python3.11/site-packages/dvc/cli/__init__.py", line 130, in _log_exceptions
    _log_unknown_exceptions()
  File "/path/to/lib/python3.11/site-packages/dvc/cli/__init__.py", line 41, in _log_unknown_exceptions
    from dvc.info import get_dvc_info
  File "/path/to/lib/python3.11/site-packages/dvc/info.py", line 12, in <module>
    from dvc.repo import Repo
  File "/path/to/lib/python3.11/site-packages/dvc/repo/__init__.py", line 53, in <module>
    class Repo:
  File "/path/to/lib/python3.11/site-packages/dvc/repo/__init__.py", line 77, in Repo
    from dvc.repo.status import status  # type: ignore[misc]
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/path/to/lib/python3.11/site-packages/dvc/repo/status.py", line 4, in <module>
    from funcy.py3 import cat
ModuleNotFoundError: No module named 'funcy.py3'

Comparing funcy 2.0 versus 1.18 I can see that py3.py (referenced in the callback above) has disappeared. I can't see any changelog to figure out where that functionality has moved to.

In the short term, perhaps you could pin funcy to <2.0 in the conda recipe?

Expected

Expected DVC to work ;)

Environment information

See environnment definition file above.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions