- Ran:
pip install -e . - Result: build isolation failed while installing build deps (no network), error:
No matching distribution found for setuptools>=64. - Changes made earlier in this session:
- Added
pyproject.tomlwith build-system requirements (setuptools, wheel, Cython). - Updated
setup.py:- Read version from
PanPA/version.pywithout importing the package. - Fixed Python version message and
python_requires. - Use
requirements.txtforinstall_requires. - Use repo-root paths for README/requirements.
- Read version from
- Added
- Ran:
PIP_NO_BUILD_ISOLATION=1 pip install -e . - Result: still attempted build dependency install and failed (no network), error:
No matching distribution found for setuptools>=64.
- Ran:
pip install -e . --no-build-isolation - Result: metadata generation failed;
read_version()regex didn’t match. - Change: fixed version regex in
setup.pyto allow whitespace (single-escaped\s).
- Ran:
pip install -e . --no-build-isolation - Result: Cython compile error in
PanPA/_main.pyx(no suitable method foundfora.replace). - Change: cast C++
stringto Pythonbytesbefore.replace()in two loops.
- Ran:
pip install -e . --no-build-isolation - Result: build succeeded, install failed due to sandbox permissions:
Operation not permitted: '/Users/fawaz/.local/lib'.
- Ran (escalated):
pip install -e . --no-build-isolation - Result: success. Editable install completed.
- Start: implement shipping generated C++ sources and optional Cython build; add
--versionCLI flag.
- Ran:
cython -3 --cplusoverPanPA/*.pyx - Result: Cython errors in
graph_edit_distance.pyxandgraph_smith_waterman.pyx(int vs double due to/). - Change: replaced
/with//for integer division at those lines.
- Ran:
cython -3 --cplus -o ...overPanPA/*.pyxafter fixes. - Result: generated
.cppfiles (one warning about const qualifier inreverse_complement_fast.pyx). - Changes:
setup.py: optional Cython build; fall back to pre-generated.cppsources when Cython isn't available.MANIFEST.in: include.pyx/.cppsources in sdist.PanPA/main.py: add--versionflag.
- Change:
pyproject.tomlbuild-system no longer requires Cython (since we ship generated.cpp).
- Fix for build error in
reverse_complement_fast:PanPA/reverse_complement_fast.pyx: makeseq_pointerconst char *.- Regenerated
PanPA/reverse_complement_fast.cppwith Cython.
- Ran:
pip install -e . - Result: build isolation failed (offline) while trying to install
setuptools>=64.
- Fix:
setup.pynow passes relative source paths toExtension(...)to avoid absolute-path error during build.
- Ran (escalated):
pip install -e . --no-build-isolation - Result: success.
- Added
scripts/regen_cython.shto regenerate.cppfrom.pyxusing Cython. - Set executable bit on
scripts/regen_cython.sh.
- Updated docs in
README.mdto reflect Python 3.6–3.11 support, no Cython required for install, offline build-isolation note, and--versionusage. - Updated
environment.ymlto current toolchain (python<=3.11, setuptools, wheel, pip, cython).
- Updated
.gitignoreto stop ignoring generatedPanPA/*.cppso they can be committed.
- Removed legacy
PanPA/reverse_complement_fast.cto avoid confusion (we ship C++ now). - Updated
.gitignoreto ignorePanPA/reverse_complement_fast.cgoing forward.
- Updated Python upper bound to <3.14:
setup.py: version guard +python_requires.README.md: support statement updated to 3.6–3.13.environment.yml: python constraint to<3.14.
setup.py: default to pre-generated.cppsources; only use Cython whenPANPA_USE_CYTHON=1.- This avoids Cython-generated absolute source paths breaking wheel builds.
setup.py: resolve ROOT, useos.path.relpathfor extension sources to guarantee relative paths in wheel builds.- Removed legacy
tests_requireto avoid setuptools warning.