vipr_api.web.routers.files package

Submodules

vipr_api.web.routers.files.access module

File access endpoint and path-safety helpers.

async vipr_api.web.routers.files.access.fetch_file(file_path: str)

Fetch file content from server based on data_path.

This endpoint handles both relative paths (using VIPR’s resolve_file_path) and allowed absolute paths to provide file access for the frontend.

vipr_api.web.routers.files.access.get_upload_dir(create: bool = False) Path

Return the configured upload directory.

vipr_api.web.routers.files.hdf5 module

HDF5 file endpoints.

class vipr_api.web.routers.files.hdf5.HDF5Dataset(*, name: str, spectraCount: int)

Bases: BaseModel

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str
spectraCount: int
class vipr_api.web.routers.files.hdf5.HDF5Metadata(*, datasets: list[HDF5Dataset], totalSpectra: int, filePath: str)

Bases: BaseModel

datasets: list[HDF5Dataset]
filePath: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

totalSpectra: int
class vipr_api.web.routers.files.hdf5.HDF5PreviewData(*, qRange: list[float], intensityRange: list[float], dataPoints: int, hasQErrors: bool, hasIntensityErrors: bool, q: list[float], I: list[float], dQ: list[float] | None = None, dI: list[float] | None = None)

Bases: BaseModel

I: list[float]
dI: list[float] | None
dQ: list[float] | None
dataPoints: int
hasIntensityErrors: bool
hasQErrors: bool
intensityRange: list[float]
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

q: list[float]
qRange: list[float]
async vipr_api.web.routers.files.hdf5.get_hdf5_metadata(file_path: str)

Get metadata from HDF5 file including available datasets and spectrum counts.

async vipr_api.web.routers.files.hdf5.get_hdf5_preview(request: dict[str, Any])

Get preview data for a specific dataset/spectrum combination from HDF5 file.

vipr_api.web.routers.files.router module

Aggregated files router.

vipr_api.web.routers.files.upload module

File upload endpoint.

async vipr_api.web.routers.files.upload.save_uploaded_file(file: UploadFile, content: bytes | None = None) Path

Saves an uploaded file to the configured persistent upload directory.

Parameters:
  • file – The uploaded file

  • content – Optional alternative file content (e.g., sanitized content)

Returns:

Path to the saved file

async vipr_api.web.routers.files.upload.upload_file(file: UploadFile = File(PydanticUndefined))

Validates and saves an uploaded file. Supports both text-based files (CSV, TXT, etc.) and HDF5 files with appropriate validation for each type.

Module contents

Files router package.