AndreaNotes1 commited on
Commit
2cd7f58
Β·
verified Β·
1 Parent(s): bdea366

Delete config.py

Browse files
Files changed (1) hide show
  1. config.py +0 -91
config.py DELETED
@@ -1,91 +0,0 @@
1
- """
2
- config.py β€” FGH-Dermatology API
3
- ================================
4
- All settings are environment-driven. No defaults contain real secrets.
5
- """
6
-
7
- import os
8
- from dotenv import load_dotenv
9
-
10
- load_dotenv()
11
-
12
- BASE_DIR = os.path.abspath(os.path.dirname(__file__))
13
-
14
-
15
- def _clean_env(key: str, default: str = "") -> str:
16
- """Strip surrounding quotes and variable-name prefix from a pasted secret."""
17
- val = os.environ.get(key, default).strip()
18
- if val.startswith(("'", '"')) and val.endswith(("'", '"')):
19
- val = val[1:-1].strip()
20
- if val.upper().startswith(f"{key}="):
21
- val = val.split("=", 1)[1].strip()
22
- return val
23
-
24
-
25
- class Config:
26
- # ── Flask ────────────────────────────────────────────────────────────────
27
- SECRET_KEY = _clean_env("SECRET_KEY", "fgh-api-dev-secret-change-me")
28
- DEBUG = os.environ.get("FLASK_DEBUG", "false").lower() in ("1", "true", "yes")
29
-
30
- # ── JWT ──────────────────────────────────────────────────────────────────
31
- # A separate long random secret used to sign access tokens.
32
- # Generate with: python -c "import secrets; print(secrets.token_hex(32))"
33
- JWT_SECRET = _clean_env("JWT_SECRET", "fgh-jwt-dev-secret-change-me")
34
- # Token lifetime in seconds (default 8 hours β€” suitable for a clinical shift)
35
- JWT_EXPIRY_SECONDS = int(os.environ.get("JWT_EXPIRY_SECONDS", 28800))
36
-
37
- # ── CORS ─────────────────────────────────────────────────────────────────
38
- # Comma-separated list of allowed frontend origins.
39
- # In production: "https://fgh-dermatology.vercel.app"
40
- # For local dev: "http://localhost:3000"
41
- ALLOWED_ORIGINS = [
42
- o.strip()
43
- for o in os.environ.get(
44
- "ALLOWED_ORIGINS", "http://localhost:3000"
45
- ).split(",")
46
- if o.strip()
47
- ]
48
-
49
- # ── MongoDB Atlas ────────────────────────────────────────────────────────
50
- MONGODB_URI = _clean_env("MONGODB_URI") or "mongodb://localhost:27017/"
51
- MONGODB_DB_NAME = os.environ.get("MONGODB_DB_NAME", "fgh_dermatology")
52
-
53
- # ── Hugging Face Hub β€” model ─────────────────────────────────────────────
54
- HF_MODEL_REPO_ID = _clean_env("HF_MODEL_REPO_ID")
55
- HF_MODEL_FILENAME = _clean_env("HF_MODEL_FILENAME") or "skin_cancer_model.h5"
56
- HF_MODEL_REVISION = _clean_env("HF_MODEL_REVISION") or "main"
57
- HF_TOKEN = _clean_env("HF_TOKEN") or None
58
- HF_CACHE_DIR = os.environ.get(
59
- "HF_CACHE_DIR", os.path.join(BASE_DIR, "model", "hf_cache")
60
- )
61
- MODEL_PATH = os.environ.get(
62
- "MODEL_PATH", os.path.join(BASE_DIR, "model", "skin_cancer_model.h5")
63
- )
64
- MODEL_INPUT_SIZE = int(os.environ.get("MODEL_INPUT_SIZE", "224"))
65
-
66
- # ── Upload handling ───────────────────────────────────────────────────────
67
- UPLOAD_FOLDER = os.environ.get(
68
- "UPLOAD_FOLDER", os.path.join(BASE_DIR, "uploads")
69
- )
70
- ALLOWED_EXTENSIONS = {"jpg", "jpeg", "png", "tiff", "tif", "bmp"}
71
- MAX_CONTENT_LENGTH = int(os.environ.get("MAX_CONTENT_LENGTH", 10 * 1024 * 1024))
72
- UPLOAD_RETENTION_SECONDS = int(os.environ.get("UPLOAD_RETENTION_SECONDS", 3600))
73
-
74
- # ── Diagnostic taxonomy ───────────────────────────────────────────────────
75
- CLASS_LABELS = [
76
- "Melanoma",
77
- "Basal Cell Carcinoma",
78
- "Melanocytic Nevus",
79
- "Benign Keratosis-like Lesion",
80
- ]
81
- CLASS_METADATA = {
82
- "Melanoma": {"code": "MEL", "risk": "HIGH", "malignant": True},
83
- "Basal Cell Carcinoma": {"code": "BCC", "risk": "HIGH", "malignant": True},
84
- "Melanocytic Nevus": {"code": "NV", "risk": "LOW", "malignant": False},
85
- "Benign Keratosis-like Lesion": {"code": "BKL", "risk": "LOW", "malignant": False},
86
- }
87
-
88
- # ── Auth policy ───────────────────────────────────────────────────────────
89
- MIN_PASSWORD_LENGTH = int(os.environ.get("MIN_PASSWORD_LENGTH", 10))
90
- MAX_LOGIN_ATTEMPTS = int(os.environ.get("MAX_LOGIN_ATTEMPTS", 5))
91
- LOGIN_LOCKOUT_SECONDS = int(os.environ.get("LOGIN_LOCKOUT_SECONDS", 300))