|
Download docs/dev/DEPLOYMENT.md from aibergman/minducer: direct link, hf CLI and curl.
- Browser
- Download file 3.23 kB
-
https://huggingface.co/spaces/aibergman/minducer/resolve/main/docs/dev/DEPLOYMENT.md
- Command line
-
hf download hf://spaces/aibergman/minducer/docs/dev/DEPLOYMENT.md
-
curl -L -o DEPLOYMENT.md https://huggingface.co/spaces/aibergman/minducer/resolve/main/docs/dev/DEPLOYMENT.md
3.23 kB
| # Development and deployment guide | |
| ## Runtime profile | |
| The repository is ready for a standard CPU Hugging Face Gradio Space. The | |
| Space configuration is the YAML block at the top of `README.md`; it selects | |
| `app.py`, Python 3.10, and the pinned Gradio version. Runtime packages are in | |
| `requirements.txt`: | |
| ```text | |
| gradio==5.50.0 | |
| matplotlib>=3.7,<4 | |
| numpy>=1.23,<3 | |
| seekpath==2.1.0 | |
| spglib>=2.0,<3 | |
| ``` | |
| `app.py` adds the local `src/` directory to the import path, so a source-layout | |
| checkout runs directly without a separate package-install step. | |
| ## Local development | |
| Create an environment, install the application dependencies, and run the test | |
| suite from the repository root: | |
| ```bash | |
| python -m pip install -r requirements.txt | |
| PYTHONPATH=src pytest -q | |
| python app.py | |
| ``` | |
| Open the local Gradio URL and load a bundled example before changing analysis | |
| behaviour. The package should also remain usable without Gradio: | |
| ```bash | |
| python -m pip install -e . | |
| induced-exchange-uppasd examples/fept_style/inpsd.dat | |
| ``` | |
| Keep scientific calculations in `src/induced_exchange/`; `app.py` and | |
| `src/induced_exchange/space.py` should remain orchestration and presentation | |
| layers. Add or update tests with any behavioural change, especially one that | |
| affects input conventions, units, Fourier phases, conditioning diagnostics, or | |
| the magnetic model. | |
| ## Deploy to Hugging Face Spaces | |
| 1. Create a Hugging Face Space with the **Gradio** SDK and a CPU hardware tier | |
| appropriate for the intended datasets. | |
| 2. Push this repository's release contents to the Space repository. Keep the | |
| README YAML metadata, `app.py`, `requirements.txt`, `src/`, and any examples | |
| you want visible in the deployed app. | |
| 3. Wait for the Space build to complete, then open its public URL. Hugging Face | |
| provides the public endpoint, so the application does not use `share=True`. | |
| 4. Verify an upload containing separate `inpsd.dat`, `posfile`, `momfile`, and | |
| exchange files, as well as a bundled example. | |
| ## Operational notes | |
| - The application keeps analysis artifacts in temporary storage and cleans | |
| prior session artifacts when a new input is loaded. Do not treat Space local | |
| disk as durable user storage. | |
| - Uploaded inputs are scientific data. Set Space visibility, access controls, | |
| and repository history according to the sensitivity of the material. | |
| - The interactive mesh selector is limited to CPU-friendly resolutions. Users | |
| needing large reciprocal meshes should use the library in their own compute | |
| environment. | |
| - `spglib` expansion is opt-in in the UI. It should be enabled only for | |
| symmetry-reduced exchange files, not complete neighbour lists. | |
| - Pinning Gradio matters because the app contains a small compatibility layer | |
| for Gradio's 5-to-6 launch/theme API transition. Test a deliberate dependency | |
| upgrade locally before publishing it. | |
| ## Release checklist | |
| - [ ] `PYTHONPATH=src pytest -q` passes. | |
| - [ ] `python app.py` starts without import or Gradio warnings that affect use. | |
| - [ ] A bundled example completes through download creation. | |
| - [ ] README metadata and `requirements.txt` match the intended runtime. | |
| - [ ] No private input data, credentials, AI prompts, or local build artifacts | |
| are included in the commit. | |