cheia API se ia din .env

Loader pe stdlib (fara python-dotenv): mediul are prioritate, altfel .env de
langa script. .env e in .gitignore, .env.example e sablonul versionat.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KHLUSsKP99G6ebv2fFUKQV
This commit is contained in:
2026-09-17 21:50:45 +03:00
parent 2d012a969c
commit fd869ce20c
3 changed files with 32 additions and 8 deletions

1
.env.example Normal file
View File

@@ -0,0 +1 @@
TYPESAFE_API_KEY=

View File

@@ -5,18 +5,26 @@ niciun produs; e doar pentru a invata API-ul si a proba pe date reale.
## Rulare
Pune cheia in `.env` (o linie, fara ghilimele):
```
TYPESAFE_API_KEY=cheia_ta
```
apoi:
```sh
export TYPESAFE_API_KEY=cheia_ta # Git Bash
# set TYPESAFE_API_KEY=cheia_ta # cmd
python typesafe_test.py
```
Cheia sta doar in mediu — nu se scrie in fisierele de aici.
`.env` e in `.gitignore` — nu pleaca niciodata pe git. `.env.example` e sablonul
versionat. Daca `TYPESAFE_API_KEY` exista in mediu, are prioritate peste `.env`.
## Ce e in folder
| | |
|---|---|
| `.env` / `.env.example` | cheia API, neversionata / sablon |
| `typesafe_test.py` | un apel, cate o intrebare din fiecare tip, pe o linie de factura de furnizor. Modifica `state` si `criteria` pe cazuri reale. |
| `docs/` | documentatia oficiala, descarcata ca Markdown (111 pagini) |
| `update_docs.sh` | reia docs-urile cand se schimba |

View File

@@ -1,10 +1,25 @@
# Test TypeSafe System One - stdlib, fara dependinte.
# Rulare: set TYPESAFE_API_KEY=... apoi: python typesafe_test.py
import json, os, sys, urllib.request
# Rulare: pune cheia in .env apoi: python typesafe_test.py
import io, json, os, sys, urllib.request
KEY = os.environ.get("TYPESAFE_API_KEY")
if not KEY:
sys.exit("Lipseste TYPESAFE_API_KEY in mediu.")
def cheie():
"""Din mediu daca e setata, altfel din .env de langa script."""
k = os.environ.get("TYPESAFE_API_KEY")
if k:
return k
env = os.path.join(os.path.dirname(os.path.abspath(__file__)), ".env")
if os.path.exists(env):
for linie in io.open(env, encoding="utf-8"):
linie = linie.strip()
if linie.startswith("TYPESAFE_API_KEY="):
return linie.split("=", 1)[1].strip().strip("'\"")
return None
KEY = cheie()
if not KEY or KEY == "pune_cheia_aici":
sys.exit("Lipseste cheia: pune-o in .env (TYPESAFE_API_KEY=...) sau in mediu.")
# state = ce vede modelul. Aici: o linie de factura de furnizor + candidatii scosi "din Oracle".
payload = {