Skip to content

fix: cap exca to restore a working clean install#67

Open
adi-suresh01 wants to merge 1 commit into
facebookresearch:mainfrom
adi-suresh01:fix/cap-exca-for-install
Open

fix: cap exca to restore a working clean install#67
adi-suresh01 wants to merge 1 commit into
facebookresearch:mainfrom
adi-suresh01:fix/cap-exca-for-install

Conversation

@adi-suresh01

Copy link
Copy Markdown

Summary

A clean install of tribev2 currently fails at import time because of an exca API change. This caps exca to a compatible range so a fresh install works again, and declares exca as an explicit dependency since the package imports it directly.

Closes #65 (also addresses the install failures reported in #2 and #27's environment).

Root cause

neuralset==0.0.2 (the pinned version) references exca.steps.base.NoValue in neuralset/events/study.py:

def run(self, value: tp.Any = exca.steps.base.NoValue()) -> tp.Any:

exca exposed NoValue under exca.steps.base (re-exported from exca.steps.backends) up to and including 0.5.25. In 0.5.26 the symbol was moved to exca.steps.identity and the re-export was dropped. Because neuralset==0.0.2 only constrains exca>=0.5.20, a fresh install resolves the latest exca (0.5.26) and fails:

AttributeError: module 'exca.steps.base' has no attribute 'NoValue'
  File ".../neuralset/events/study.py", line 255, in StudyLoader
    def run(self, value: tp.Any = exca.steps.base.NoValue()) -> tp.Any:

tribev2 also imports exca directly (from exca import ConfDict, TaskInfra in main.py and demo_utils.py) without declaring it, so the version it gets is left entirely to transitive resolution.

Change

"neuralset==0.0.2",
"neuraltrain==0.0.2",
# neuralset 0.0.2 references exca.steps.base.NoValue, which exca removed in
# 0.5.26 (moved to exca.steps.identity). Cap exca until neuralset is updated.
"exca>=0.5.20,<0.5.26",

No source changes. Bumping neuralset/neuraltrain to a newer release is not a viable alternative here: every published version after 0.0.2 (0.0.3 through 0.2.2) removes AddText from neuralset.events.transforms, which tribev2/demo_utils.py imports, so a version bump trades this error for an ImportError. Capping exca keeps the code unchanged.

Verification

Reproduced and fixed in a clean Python 3.12 virtualenv.

Before (current main, resolves exca 0.5.26):

$ python -c "from tribev2.demo_utils import TribeModel"
AttributeError: module 'exca.steps.base' has no attribute 'NoValue'

After (this branch, resolves exca 0.5.25):

$ pip show exca | grep Version
Version: 0.5.25
$ python -c "from tribev2.demo_utils import TribeModel; print('IMPORT_OK')"
IMPORT_OK

Note

This is a compatibility cap, not a permanent fix. The cleaner resolution is to publish a neuralset release that targets the current exca API; once that exists, the cap can be relaxed. Until then this restores a working install for everyone.

neuralset 0.0.2 references exca.steps.base.NoValue, which was removed in
exca 0.5.26 (the symbol moved to exca.steps.identity). neuralset 0.0.2
declares exca>=0.5.20, so a fresh install resolves exca 0.5.26 and fails
at import time:

    AttributeError: module 'exca.steps.base' has no attribute 'NoValue'
    (neuralset/events/study.py, in StudyLoader.run)

tribev2 also imports exca directly (exca.ConfDict, exca.TaskInfra) without
declaring it. This adds exca as an explicit dependency, capped to the range
that exposes the API neuralset 0.0.2 relies on (0.5.20 through 0.5.25).

Verified in a clean Python 3.12 venv: install now resolves exca 0.5.25 and
'from tribev2.demo_utils import TribeModel' imports successfully.

Closes facebookresearch#65
@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Meta Open Source bot. label Jun 6, 2026
@idrismunir15

idrismunir15 commented Jun 8, 2026

Copy link
Copy Markdown

Thank you very much. This solves the import problems but now produces new errors.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Meta Open Source bot.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

neuralset 0.0.2 fails to import against exca 0.5.26 — clean install broken on Colab (Python 3.12)

2 participants