Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

forge-mvc-files

Module opt-in propriétaire de l'upload générique dans Forge MVC : écriture disque sécurisée, storage anti-traversal, service de fichiers (streaming HTTP Range), suppression et rate-limit d'upload.

Statut : extraction complète (ADR-019)

forge-mvc-files détient désormais tout le pipeline d'upload générique, extrait du core : save_upload, SavedUpload, serve_media_file (HTTP Range), storage anti-traversal, suppression et rate-limit. core/uploads/ a été supprimé du core (CORE-DROP-UPLOADS-001). La validation pure de fichier (extension/MIME/taille + UploadError) reste dans le core (core.forms), réutilisée par ce paquet.

Pourquoi ce module (ADR-019)

Après l'extraction du traitement d'image (ADR-018), l'upload générique reste le dernier gros bloc applicatif logé dans le noyau. Un framework web peut exister sans upload de fichiers : c'est une brique applicative, pas un fondement. forge-mvc-files devient l'unique propriétaire de l'upload générique (principes 8 « noyau minimal » et 11 « une seule façon officielle »).

Ce qui a été déplacé du core

  • managersave_upload, SavedUpload, serve_media_file, delete_upload, delete_media_file, get_upload_path, upload_root, _read_upload ;
  • storage — écriture/anti-traversal (normalize_media_path, media_path_to_storage_path, is_safe_media_path, save_bytes, delete_file) ;
  • rate_limit d'upload (is_upload_rate_limited, record_upload_attempt).

Ce qui reste dans le core (définitif)

  • Les validators purs (validate_extension, validate_mime_type, validate_size) et la hiérarchie d'exceptions UploadError : core/forms (FileField) en dépend, et le core ne peut pas dépendre d'un opt-in (ADR-004). Ce sont des contrôles purs sans I/O. forge-mvc-files les réutilise.

Plan d'exécution (ADR-019)

Ticket Description État
FILES-PKG-SCAFFOLD-001 Squelette du paquet + enregistrement opt-in livré
FILES-VALIDATORS-KEEP-001 Relocaliser validators + exceptions dans le core livré
FILES-MOVE-PIPELINE-001 Déplacer manager + storage + rate_limit livré
FILES-IMAGES-REPOINT-001 forge-mvc-images dépend de forge-mvc-files livré
FILES-CLI-RENAME-001 Générateurs + cli/uploads + starter livré
FILES-DOCS-PERIMETER-001 Docs + ADR-004 + CLAUDE.md §3 livré
CORE-DROP-UPLOADS-001 Suppression de core/uploads/ livré

Installation (mode éditable, depuis les sources)

git clone https://github.com/caucrogeGit/Forge.git
cd Forge
pip install -e packages/forge-mvc-files/

Référence

  • docs/adr/019-upload-extraction.md — décision et périmètre figés.
  • Charte principes 8 (noyau minimal), 11 (une seule façon officielle).

Release files for forge-mvc-files 1.0.0rc8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for forge-mvc-files 1.0.0rc8
File Size Uploaded
forge_mvc_files-1.0.0rc8.tar.gz 37.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for forge-mvc-files 1.0.0rc8
File Interpreter ABI Platform
forge_mvc_files-1.0.0rc8-py3-none-any.whl Python 3 none any Details

Total release size: 68.5 kB

Release files / forge_mvc_files-1.0.0rc8.tar.gz

Download URL forge_mvc_files-1.0.0rc8.tar.gz
Size 37.9 kB
Tags Source
SHA-256 checksum
How to use checksums
7e8c6108f211a63d611e847fda49227806b31ab602b2317ef87d2bcd8136e276
BLAKE2b-256 checksum
How to use checksums
e38d7824aed7f7a92fe8cae4366080786842ce2cbc14e131b77facbcc712e653
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / forge_mvc_files-1.0.0rc8-py3-none-any.whl

Download URL forge_mvc_files-1.0.0rc8-py3-none-any.whl
Size 30.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b7232e13de96b05d11728d472ad0b2e1d03a8183ea399afbb09d625be69afe87
BLAKE2b-256 checksum
How to use checksums
d8bb97460082a1048fbb5151a7a4fb7e9f6dc7d4724a4ea4741ad40b0309b011
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page