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.0rc9

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.0rc9
File Size Uploaded
forge_mvc_files-1.0.0rc9.tar.gz 38.3 kB Details

Built distribution (wheel)

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

Total release size: 69.4 kB

Release files / forge_mvc_files-1.0.0rc9.tar.gz

Download URL forge_mvc_files-1.0.0rc9.tar.gz
Size 38.3 kB
Tags Source
SHA-256 checksum
How to use checksums
0bb5584b94550023c7f9af42969936b2a972a52740fd4230890d709a62167496
BLAKE2b-256 checksum
How to use checksums
da2f9ccb30dfdb0c0e86bc0ba1b54b35c2de6042daff5ea5383e76b9868d638e
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.0rc9-py3-none-any.whl

Download URL forge_mvc_files-1.0.0rc9-py3-none-any.whl
Size 31.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9d51f961c73e141cd83efb650850c04d25fa4798873606ce811215c356b9a660
BLAKE2b-256 checksum
How to use checksums
69fcf31b69b83cfdb31e3f2c1ed907abf344ad9fd8a64b88e7f147bece6a382e
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