SJI - Eine einfache Python-Bibliothek für Job-Initialisierung
Project description
SJI
Eine einfache Python-Bibliothek für die Initialisierung von Jobs/Skripten (Logging, Konfiguration, Ordnerstruktur).
Installation
pip install sji
Verwendung
from sji import SimpleJobInit, get_script_version
# __file__ an SimpleJobInit übergeben
sji = SimpleJobInit(__file__)
# Logger verwenden
sji.logger.info("Starte Job...")
# Konfiguration lesen (INI)
cfg = sji.config
value = cfg.get('section', 'key', fallback='default')
# Persistente Datei-Pfade erhalten
csv_path = sji.get_persistent_file_path('csv')
# Temporäre Datei-Pfade erhalten
tmp_path = sji.get_tmp_file_path('work.tmp')
# Versionen ermitteln
sji.logger.info(f"script_version={sji.get_job_script_version(include_git_tag=True)}")
sji.logger.info(f"config_file_hash={sji.get_config_file_hash()}")
sji.logger.info(f"config_file_version={sji.get_config_file_version()}")
# Top-Level-Funktion (unabhängig von der Klasse):
script_version = get_script_version(__file__, include_git_tag=True)
# Konfiguration mit Maskierung loggen
sji.log_config(secret_fields=["password", "db_password", "api_key", "token"])
Dabei werden automatisch erzeugt/genutzt:
- logs/.log (mit optionaler Rotation)
- tmp/ Verzeichnis
- .config.ini für Einstellungen
Minimalbeispiel für die INI-Datei
Datei: <skriptname>.config.ini im selben Verzeichnis wie das Skript
[logging]
level = INFO
log_rotation_when = midnight
log_rotation_backup_count = 7
[section]
key = some-value
Credential-Ersetzung
SJI unterstützt die automatische Ersetzung von Platzhaltern in der Konfigurationsdatei durch Werte aus einer separaten credentials.ini-Datei.
Dies ermöglicht es, sensible Daten wie Passwörter oder API-Schlüssel getrennt von der Hauptkonfiguration zu verwalten.
Funktionsweise
- Platzhalter-Format: In der
config.inikönnen Platzhalter im Format[[[[name]]]]verwendet werden. - Credentials-Datei: Die Datei
<skriptname>.credentials.iniwird automatisch im selben Verzeichnis wie das Skript gesucht. - Ersetzung: Platzhalter werden durch Werte aus derselben Section und mit demselben Key-Namen aus der
credentials.iniersetzt. - Optional: Wenn die
credentials.ininicht existiert, bleiben die Platzhalter unverändert.
Beispiel
test_job.config.ini:
[db_config]
db_user = postgres
db_password = [[[[db_password]]]]
db_host = localhost
db_port = 5432
db_name = test_db
[api]
api_key = [[[[api_key]]]]
test_job.credentials.ini:
[db_config]
db_password = my_secret_password_123
[api]
api_key = api_key_abc123xyz
Nach der Initialisierung von SimpleJobInit werden die Platzhalter automatisch ersetzt:
db_passwordwird zumy_secret_password_123api_keywird zuapi_key_abc123xyz
Hinweise
- Die
credentials.inisollte nicht in Versionskontrolle (Git) eingecheckt werden - Platzhalter können nur durch Werte aus derselben Section ersetzt werden
- Wenn ein Platzhalter nicht in der
credentials.inigefunden wird, bleibt er unverändert - Die Ersetzung erfolgt automatisch beim Laden der Konfiguration
API
Klasse: SimpleJobInit
SimpleJobInit(script_file_path: str)- Initialisiert Logging, lädt/prüft INI-Config, erzeugt Ordner (logs, tmp)
- Eigenschaften
logger: konfigurierterlogging.Loggerconfig:configparser.ConfigParser
- Methoden
get_tmp_file_path(file_name: str) -> str: Pfad imtmp/-Verzeichnisget_persistent_file_path(file_ending: str) -> str: Pfad<skriptname>.<file_ending>get_job_script_version(include_git_tag: bool = False) -> str: ermittelt Skriptversion (Git/FS)get_config_file_hash() -> str: SHA-256 Hash der INI-Dateiget_config_file_version() -> str:cfg_<UTC-Zeit>_<sha256>basierend auf Datei-mtime und Hashlog_config(secret_fields) -> None: loggt INI-Inhalt, maskiert definierte Felder (case-insensitive)get_postgres_sqlalchemy_engine(db_config): baut SQLAlchemy-Engine aus INI-Werten
Top-Level-Funktion
get_script_version(script_file_path: str, include_git_tag: bool = False) -> str- Wie
get_job_script_version, aber als freie Funktion für eigenständige Nutzung
- Wie
Lizenz
MIT-Lizenz - siehe LICENSE für Details.
- Project build with support of AI (Cursor IDE).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sji-0.4.0.tar.gz.
File metadata
- Download URL: sji-0.4.0.tar.gz
- Upload date:
- Size: 10.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e994a0d40672cb94856223898d3ecc02bf78eedb199bbea10aa1d3fbbc1c7ec2
|
|
| MD5 |
f875ad1f8ae437387cbd1d1984648f85
|
|
| BLAKE2b-256 |
1f8ea45f361575a316ce83e8ab9d36570481ce8225d608dc510d2d05f13704fc
|
File details
Details for the file sji-0.4.0-py3-none-any.whl.
File metadata
- Download URL: sji-0.4.0-py3-none-any.whl
- Upload date:
- Size: 8.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa2494926cc058652b8bae358513a737307e0b3090287bdaf7726b59edf3fdd3
|
|
| MD5 |
44fe7c41ec468cbc774120ab2d29d705
|
|
| BLAKE2b-256 |
3d47d1bb6cdb36528e7f4f0a46317c89bb14c7b542aa3fe183663ae4c352466b
|