Skip to main content

Forge Files — module opt-in propriétaire de l'upload générique : écriture sécurisée, storage anti-traversal, service de fichiers, rate-limit. Extrait du core (ADR-019).

Project description

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.

Ce paquet cible la publication PyPI de la release beta.13.

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 + forge_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).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

forge_mvc_files-1.0.0b17.tar.gz (10.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

forge_mvc_files-1.0.0b17-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file forge_mvc_files-1.0.0b17.tar.gz.

File metadata

  • Download URL: forge_mvc_files-1.0.0b17.tar.gz
  • Upload date:
  • Size: 10.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for forge_mvc_files-1.0.0b17.tar.gz
Algorithm Hash digest
SHA256 d59e027b81b35032ce8a0aaf8168da088061ad0d6090069e4e9190e0313e7b5f
MD5 d7f667ee347cdeb8fbbbb838a2839d36
BLAKE2b-256 9f4c724f66e15e7167dffd158d72626df1998b1d449a56d3f1336c1688d5017e

See more details on using hashes here.

File details

Details for the file forge_mvc_files-1.0.0b17-py3-none-any.whl.

File metadata

File hashes

Hashes for forge_mvc_files-1.0.0b17-py3-none-any.whl
Algorithm Hash digest
SHA256 2f86fc1005181b17646e5ab9279b752b4d35e501b51736f0185dc08a3be513fb
MD5 cb4bca0e2adaa1c52f9cb1bcf1d0a2e4
BLAKE2b-256 141345e4242261199f770e6075319fa87f1a8c3b81efcd576dbe7b19cbab80e2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page