Skip to content

Add submodules - #103

Open
Erotemic wants to merge 11 commits into
mainfrom
add_submodules
Open

Add submodules#103
Erotemic wants to merge 11 commits into
mainfrom
add_submodules

Conversation

@Erotemic

Copy link
Copy Markdown
Owner

No description provided.

Erotemic and others added 11 commits July 16, 2026 15:01
…l triage

IBEIS/utool parse function source code at runtime, but PyInstaller ships
bytecode only, so inspect.getsource raised "OSError: could not get source
code" in installed Windows builds (e.g. the Advanced ID interface crash).

- ibeis_pyi_helper.py: bundle .py sources for ibeis and the utool ecosystem
  (SOURCE_INTROSPECTED_PKGS) so inspect.getsource works when frozen; collect
  .so/.dylib shared libs in addition to .dll/.pyd so non-Windows builds get
  their native libs (libflann.so was silently dropped).
- ibeis_app_entry.py: add IBEIS_FROZEN_SELFTEST=1 mode that exercises the
  crash path (ut.parse_func_kwarg_keys on get_annot_stats_dict) and exits
  0/1, verified pass/fail A/B against a frozen Linux build.
- build_installer.ps1: run the selftest as a hard gate in -Checks; find
  ISCC.exe in Program Files (x86)/Program Files/PATH, not just
  LOCALAPPDATA\Programs (fixes Inno step on GitHub runners).
- dev/code_smells.md: triage list of Windows/frozen-app hazards and general
  smells from a full-repo sweep, with suggested fix order.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ubmodules

# Conflicts:
#	dev/_installers/build_installer.ps1
run_developer_setup.sh now creates/uses .venv, installs ibeis editable
with [headless,tests] extras, swaps the pure-python tpl/ submodules
(utool, vtool/dtool/plottool/guitool_ibeis, futures_actors) in as
editable installs, and verifies imports. Compiled repos stay on PyPI
wheels unless IBEIS_DEV_BINARY=1.

Version-robust fixes for new upstream releases (old versions still work):
- demo.py: networkx now raises on union_all([]); guard num_pccs=0.
- test_neg_metagraph.py: use nx.selfloop_edges(G) function form (the
  Graph method was removed); fix num_pccs typo (2 -> 4) and an `=` that
  should have been `==`.
- sklearn_utils.py: sklearn >= 1.9 rejects all-zero sample_weight in
  confusion_matrix; preserve the old all-zero-matrix behavior.
- tpl/pyflann_ibeis: np.row_stack (removed from numpy) -> np.vstack.
  NOTE: needs a pyflann_ibeis push + PyPI release before CI test jobs
  (which install from PyPI) pick it up.

Real bug found by the never-run-in-CI pytest files: on a dirty PCC merge
(pos-between-dirty-merge), nid_to_errors kept a stale entry for the
absorbed nid and the merged component's error hypothesis was never
recomputed. Purge both old nids and call _new_inconsistency, mirroring
the neg-within-split-dirty pattern.

Test-suite findings recorded in dev/code_smells.md section 8.
Full suite after fixes: 445 passed, 518 skipped, 0 failed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
All changes preserve current Linux behavior (full suite: 445 passed,
518 skipped, unchanged from baseline).

- sysres.get_workdir: the unset-workdir default was the bare relative
  string 'ibeis_default_workdir', which resolves against CWD - for an
  installed app that is C:\Program Files\IBEIS (unwritable). Keep the
  legacy CWD-relative dir when it already exists (developer checkouts),
  otherwise use a per-user data dir via ub.Path.appdir.
- selectivesearch/darknet: open('/dev/null') -> os.devnull.
- detectcore: image_path.split('/') -> basename/splitext (wrong export
  filenames on Windows).
- manual_name_funcs / manual_imageset_funcs: pass encoding='utf-8' on
  the name-change JSON log and smart-patrol XML reads (Windows default
  is cp1252; non-latin names crashed the rename flow).
- interact_annotations2: remove 'if True: rrr()' dev hot-reload blocks
  that re-imported the annotation interaction module on every editor
  open (loader-dependent under PyInstaller, gratuitous in production).
- guiback.update_source_install: no-op with an info dialog in frozen
  builds (sys.executable is the app exe; there is no source checkout).
- main_module.set_newfile_permissions doctest: use a tempdir and restore
  the previous umask instead of dropping tempfile1/2.txt into CWD and
  leaking umask 0o000 into the rest of the test run.

dev/code_smells.md updated to mark these items fixed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
All changes preserve current behavior on Linux (full suite: 445 passed,
518 skipped, unchanged from baseline).

- ibeis_pyi_helper: exclude ibeis.algo.verif.torch* from hiddenimports;
  those modules 'import torch' at top level while the spec excludes
  torch, so they shipped as guaranteed-to-crash bytecode. Nothing else
  imports them.
- win_installer_script.iss + build_installer.ps1: stop hardcoding the
  app version in the .iss; the ps1 now parses __version__ from
  ibeis/__init__.py and passes /DAppVersion (the .iss define remains as
  an #ifndef fallback for direct ISCC runs).
- params.py: honor the correctly-spelled IBEIS_PARSE_ARGS env var while
  keeping the legacy typo IBIES_PARSE_ARGS working as a fallback.
- __main__.py: main_locals['ibs'] -> .get('ibs') so run_ibeis does not
  KeyError when no database is opened.
- tests.yml: run the plain pytest suites (tests/,
  ibeis/algo/graph/tests/) that the xdoctest-only CI never executed and
  which had rotted. Non-blocking (continue-on-error) until observed
  green across the matrix.
- .gitignore: remove the stray quote line; ignore testdb_dst/,
  synthetic_creatures/, .venv/.

dev/code_smells.md updated to mark these items fixed; noted that boto
removal needs coordination (utool lazily imports it for s3:// grabs).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The tests-strict/runtime-strict leg on Python 3.13 pins every dep to its
minimum. pyzmq==26.0.0 has no cp313 wheels and its sdist no longer
builds (old scikit-build config rejected by scikit-build-core >= 0.10);
simplejson==3.6.5 and coverage==7.3.0 are also pre-3.13 C-extension
sdists. Bump the >=3.13 minimums to the first releases with cp313
wheels (pyzmq 26.1.0, simplejson 3.19.3, coverage 7.6.1) and untangle
the overlapping pyzmq markers. Older pythons keep their existing
minimums.

Policy: CI and installer jobs build against PyPI releases; the tpl/
submodules are for local development only (run_developer_setup.sh).
Drop the recursive submodule checkout from the Windows installer jobs -
it was unused by the build and made CI fail hard when a submodule
gitlink pointed at a not-yet-pushed commit ("not our ref 5791ab1").

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- setup.py: python_requires >=3.11 (was >=3.8); drop 3.9/3.10 trove
  classifiers.
- pyproject.toml: xcookie min_python = 3.11.
- tests.yml: remove the 3.9/3.10 matrix legs; the full-strict leg
  (which runs on min python) moves from 3.9 to 3.11.
- requirements/*: remove the 37 version-ladder rungs that only applied
  below 3.11 and tighten the floor markers of the 6 surviving rungs
  that spanned across (e.g. pyzmq "python_version < '3.12'" now also
  says ">= '3.11'"); fix stale rung comments (networkx, pynmea2,
  pyqt5, coverage).

Safety check: dependency resolution for every package in every
requirements file was snapshotted before the edit and verified
byte-identical on Python 3.11, 3.12, 3.13, and 3.14 afterward, and
uv can fully resolve runtime+tests+headless on 3.11 and 3.13.

Ecosystem tpl/ repos to be updated separately.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Minor bump for the significant changes on this branch: dropped Python
3.9/3.10, new default-workdir behavior, Windows installer overhaul, and
the PyPI-not-submodules CI policy. The unreleased 2.4.1 changelog notes
are folded into the 2.5.0 entry since 2.4.1 was never released.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- dev/_installers/README.md: full fresh-VM-to-verified-installer guide:
  prerequisites (Python on PATH is the only real one; the script
  bootstraps uv/venv/PyInstaller/Inno itself), no submodules needed,
  one-command build, output layout, the IBEIS_FROZEN_SELFTEST /
  IBEIS_BOOT_DEBUG / IBEIS_DLL_DEBUG diagnostic hooks, a manual GUI
  test checklist ordered by historical breakage (Advanced ID interface
  included), what to send back on failure, and troubleshooting for the
  failure modes we have actually hit.
- README.rst: the "Self Installing Executables" section now points at
  the guide instead of only decade-old HotSpotter Dropbox links.
- docs/source/manual/: commit the previously-untracked Ubuntu install
  instructions so they exist in a fresh clone.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant