Development
This page is for contributors working from a source checkout. Prediction users can use the installation steps in Introduction and installation instead.
Set up a checkout
Source develop.sh to create and activate the editable virtual environment:
source develop.sh
The script must be sourced so its environment activation persists in the
current shell. Run ./lint.sh for lint and use Testing to choose a focused
or full pytest command. Contribution and pull-request expectations are in
CONTRIBUTING.md.
Private APIs and fallback cleanup
MHCflurry should keep internal helpers movable. Tests and sibling modules should not pin underscore-prefixed functions unless the helper is truly private to the same module.
Promote shared helpers before cross-module use. If a helper is imported by another module or tested directly, give it a public name in its owner module and document the contract in one sentence.
Test owner modules, not compatibility facades. Tests for moved helpers should import the helper module directly. Compatibility shim tests should cover public behavior only: old imports still expose the documented entry point and produce the same result.
Make fallback paths observable. Fallbacks for missing optional tools or hardware probes may return a safe default. Fallbacks caused by import errors, bad local refactors, or invalid user configuration should fail loudly instead of being caught by broad
except Exceptionblocks.Keep compatibility shims thin. Old module paths may re-export public entry points and delegate unknown attributes, but they should not replace
sys.modulesor assert identity with the new implementation module.Track remaining private test hooks. The remaining direct private imports in tests should be triaged into: public helper, same-module implementation detail tested through behavior, or compatibility shim slated for removal after the 2.3 release line stabilizes.