Docs


Custom data attachments

Upload private data for a new custom submission, read it from code, and manage its lifecycle.

Last updated September 15, 2026

Custom data attachments are available when preparing a new custom code submission. They are not a general upload facility for existing submissions or results. A custom Edit form creates a new child submission and requires selecting files again. Quick submissions do not support this attachment manager; their existing problem-specific dataset upload fields are separate. Do not assume a Quick upload or a code-file upload is a custom data attachment.

Select files

Open Attachments 0 near the new-submission title. The count button opens a modal rather than listing every file on the main form. Choose files, review their names and sizes, and remove selections you do not need.

Limit Current value
Files per submission 2
Size per file 5 MiB
Total stored data per account 100 MiB, including attachments in Trash
Formats CSV, TSV, JSON, TXT
Encoding UTF-8

Empty files, binary data, unsupported extensions, and invalid JSON are rejected. CSV/TSV text still needs the columns and structure your code expects. Archives, executables, spreadsheets such as XLSX, and arbitrary file types are not accepted through this feature.

Use the displayed filename

The modal shows the exact filename available in the execution environment. Spaces and unsafe characters become underscores. Names are normalized, and case-insensitive collisions get a numeric suffix. My data.csv becomes My_data.csv; a second matching name gets a suffix such as _2. Check the displayed names after changing your selection.

import pandas

def fitness_func(ga_instance, solution, solution_idx):
    data = pandas.read_csv('My_data.csv')
    target = data['target'].to_numpy()
    return 1.0 / (1.0 + abs(solution[0] - target.mean()))

Fitness functions and callbacks can read the same attached files by name. Files are mounted read-only for that submission. Use /tmp for temporary output. File access does not grant access to another user's attachments, host files, or network services. Repeated reads in every fitness call can be expensive; design data loading carefully for your workload.

Upload, drafts, and later runs

Files upload with Submit, not when you open or close the modal. They remain selected in the same browser page until changed, submitted, or lost by leaving/refreshing. A draft saves the form but not file contents; reselect files when reopening it.

On the owner submission page, Attachments lists associated filenames and allows removal once a pending/running job finishes or is cancelled. There is no add/replace action for that existing submission and no attachment-download endpoint. Keep your original files locally. Removing an attachment cannot be undone through Trash; it affects future runs that need the file, but does not erase already recorded results.

Re-executing or continuing your own submission copies its current attachments to the new submission and checks your storage quota again. Editing opens a new form and requires reselecting files. Moving a submission to Trash retains its attachments and quota usage; restoring brings them back. Permanent deletion removes the stored attachments with the submission.

Sharing and privacy

Attachments remain private even if the submission or result is public or invite-only. Other users cannot copy the private files by forking a run; cross-account reruns/continuations with private attachments are blocked. Code, charts, logs, or results may contain information derived from your data, so review shared output separately. LEGA does not receive attachment contents.

flowchart LR Select[Choose files] --> Names[Review safe filenames] Names --> Submit[Submit new custom form] Submit --> Validate[Validate format and quotas] Validate --> Store[Store private attachments] Store --> Run[Read-only files in run] Store --> Manage[Owner reviews or removes]
Thanks for the feedback!