sysnet-pyutils 1.7.10__tar.gz → 1.7.12__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/PKG-INFO +84 -20
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/README.md +83 -19
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/pyproject.toml +1 -1
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils/models/general.py +5 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils.egg-info/PKG-INFO +84 -20
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/LICENSE +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/setup.cfg +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils/__init__.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils/barcode.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils/constants.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils/cron_utils/__init__.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils/cron_utils/validation.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils/data_utils.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils/domino.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils/geo.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils/globalmodel/__init__.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils/globalmodel/global_model.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils/globalmodel/models.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils/globalmodel/timeutils.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils/ident.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils/log.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils/models/__init__.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils/ses.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils/syslog/__init__.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils/syslog/factory.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils/tools.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils/utils.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils.egg-info/SOURCES.txt +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils.egg-info/dependency_links.txt +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils.egg-info/not-zip-safe +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils.egg-info/requires.txt +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils.egg-info/top_level.txt +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_cron_utils.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_cron_validation_edge.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_data_utils.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_data_utils_datetime.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_data_utils_edge.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_data_utils_missing_branches.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_domino.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_domino_edge.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_geo.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_global_model_recursive.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_global_model_timezone.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_ident_barcode.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_log_importerror_branch.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_log_mongo.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_models_contact.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_models_general.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_models_general_edge.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_package_init_version.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_recursive_update.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_ses.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_ses_importerror_branch.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_syslog_factory.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_tools.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_utils.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_utils_edge.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_utils_log_base64.py +0 -0
- {sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/tests/test_utils_missing_branches.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sysnet-pyutils
|
|
3
|
-
Version: 1.7.
|
|
3
|
+
Version: 1.7.12
|
|
4
4
|
Summary: SYSNET Python Utilities - kompletní sada nástrojů pro Python aplikace
|
|
5
5
|
Author-email: Data Developer <info@sysnet.cz>
|
|
6
6
|
Maintainer-email: SYSNET Development Team <info@sysnet.cz>
|
|
@@ -729,7 +729,8 @@ Knihovna obsahuje základní, v aplikacích hojně používané, utility pro Pyt
|
|
|
729
729
|
|
|
730
730
|
[](https://www.python.org/downloads/)
|
|
731
731
|
[](LICENSE)
|
|
732
|
-
[](https://pypi.org/project/sysnet-pyutils/1.7.12/)
|
|
733
|
+
[](https://github.com/SYSNET-CZ/pyutils/actions/workflows/ci.yml)
|
|
733
734
|
[](tests/)
|
|
734
735
|
|
|
735
736
|
---
|
|
@@ -753,6 +754,7 @@ Knihovna obsahuje základní, v aplikacích hojně používané, utility pro Pyt
|
|
|
753
754
|
- [Volitelné závislosti](#volitelné-závislosti)
|
|
754
755
|
- [Testování](#testování)
|
|
755
756
|
- [Vývoj](#vývoj)
|
|
757
|
+
- [CI/CD](#cicd)
|
|
756
758
|
- [Systémové proměnné](#systémové-proměnné)
|
|
757
759
|
- [Changelog](#changelog)
|
|
758
760
|
- [Podpora](#podpora)
|
|
@@ -1203,26 +1205,26 @@ print(str(log_item)) # "2023-05-15 10:00:00 [SYSTEM] Dokument autorizován"
|
|
|
1203
1205
|
Sjednocený formát pro sledování zdraví služby (health check).
|
|
1204
1206
|
|
|
1205
1207
|
```python
|
|
1206
|
-
from sysnet_pyutils
|
|
1208
|
+
from sysnet_pyutils import InfoType, InfoComponentType, InfoStatusEnum, calculate_status
|
|
1207
1209
|
|
|
1208
1210
|
info = InfoType(name="My Service", version="1.0.0")
|
|
1209
1211
|
|
|
1210
1212
|
# Přidání komponenty (např. MongoDB)
|
|
1211
1213
|
info.components.append(InfoComponentType(
|
|
1212
|
-
|
|
1214
|
+
name="mongo",
|
|
1213
1215
|
status=InfoStatusEnum.GREEN,
|
|
1214
|
-
|
|
1216
|
+
message="Connected to localhost:27017"
|
|
1215
1217
|
))
|
|
1216
1218
|
|
|
1217
1219
|
# Přidání další komponenty s chybou
|
|
1218
1220
|
info.components.append(InfoComponentType(
|
|
1219
|
-
|
|
1221
|
+
name="storage",
|
|
1220
1222
|
status=InfoStatusEnum.RED,
|
|
1221
|
-
|
|
1223
|
+
message="Disk space low"
|
|
1222
1224
|
))
|
|
1223
1225
|
|
|
1224
1226
|
# Automatický výpočet celkového statusu (RED > YELLOW > GREEN)
|
|
1225
|
-
info.
|
|
1227
|
+
info.status = calculate_status([component.status for component in info.components])
|
|
1226
1228
|
print(info.status) # RED
|
|
1227
1229
|
```
|
|
1228
1230
|
|
|
@@ -1250,19 +1252,19 @@ Knihovna obsahuje komplexní sadu testů s >90% pokrytím kódu.
|
|
|
1250
1252
|
|
|
1251
1253
|
```bash
|
|
1252
1254
|
# Z kořenového adresáře projektu
|
|
1253
|
-
cd
|
|
1255
|
+
cd ~/projects/pyutils
|
|
1254
1256
|
|
|
1255
1257
|
# Všechny testy
|
|
1256
|
-
venv
|
|
1258
|
+
.venv/bin/python -m pytest tests/
|
|
1257
1259
|
|
|
1258
1260
|
# S podrobným výstupem
|
|
1259
|
-
venv
|
|
1261
|
+
.venv/bin/python -m pytest tests/ -v
|
|
1260
1262
|
|
|
1261
1263
|
# S pokrytím kódu
|
|
1262
|
-
venv
|
|
1264
|
+
.venv/bin/python -m pytest tests/ --cov=sysnet_pyutils --cov-report=html
|
|
1263
1265
|
|
|
1264
1266
|
# Konkrétní modul
|
|
1265
|
-
venv
|
|
1267
|
+
.venv/bin/python -m pytest tests/test_utils.py -v
|
|
1266
1268
|
```
|
|
1267
1269
|
|
|
1268
1270
|
### Testovací soubory
|
|
@@ -1287,6 +1289,9 @@ venv\Scripts\python.exe -m pytest tests/test_utils.py -v
|
|
|
1287
1289
|
|
|
1288
1290
|
```
|
|
1289
1291
|
pyutils/
|
|
1292
|
+
├── .github/workflows/ # GitHub Actions CI/CD
|
|
1293
|
+
│ ├── ci.yml # Syntax check, pytest, ruff
|
|
1294
|
+
│ └── release.yml # Ověření verze, testy, build a publikace na PyPI
|
|
1290
1295
|
├── sysnet_pyutils/ # Hlavní balíček
|
|
1291
1296
|
│ ├── __init__.py # Veřejné API
|
|
1292
1297
|
│ ├── utils.py # Hlavní utility modul
|
|
@@ -1316,8 +1321,7 @@ pyutils/
|
|
|
1316
1321
|
├── logs/ # Adresář pro logy
|
|
1317
1322
|
├── pyproject.toml # Build a nástroje
|
|
1318
1323
|
├── requirements.txt # Závislosti (legacy)
|
|
1319
|
-
├──
|
|
1320
|
-
├── upload.cmd # Skript pro publikaci (cmd)
|
|
1324
|
+
├── CHANGELOG.md # Přehled změn a vydání
|
|
1321
1325
|
└── LICENSE
|
|
1322
1326
|
```
|
|
1323
1327
|
|
|
@@ -1326,8 +1330,45 @@ pyutils/
|
|
|
1326
1330
|
1. Implementujte funkci v příslušném modulu
|
|
1327
1331
|
2. Exportujte ji v `sysnet_pyutils/__init__.py`
|
|
1328
1332
|
3. Napište testy v `tests/test_<modul>.py`
|
|
1329
|
-
4. Spusťte testy:
|
|
1330
|
-
5. Aktualizujte `README.md` a `
|
|
1333
|
+
4. Spusťte testy: `.venv/bin/python -m pytest tests/`
|
|
1334
|
+
5. Aktualizujte `README.md` a `CHANGELOG.md`
|
|
1335
|
+
|
|
1336
|
+
### CI/CD
|
|
1337
|
+
|
|
1338
|
+
Automatizaci zajišťují GitHub Actions na self-hosted runneru s Pythonem 3.11:
|
|
1339
|
+
|
|
1340
|
+
| Workflow | Spuštění | Kroky |
|
|
1341
|
+
|----------|----------|-------|
|
|
1342
|
+
| [`.github/workflows/ci.yml`](.github/workflows/ci.yml) | Každý push na `main` a pull request do `main` | Kontrola syntaxe (`compileall`), testy (`pytest`) a lint (`ruff`) |
|
|
1343
|
+
| [`.github/workflows/release.yml`](.github/workflows/release.yml) | Push tagu `v*` | Ověření verze, kontrola syntaxe a testy, build balíčku a publikace na PyPI |
|
|
1344
|
+
|
|
1345
|
+
Obě workflow používají čistý checkout, před instalací mažou pip cache a pro testy
|
|
1346
|
+
instalují `.[dev,cron,mongodb]`, včetně potřebných volitelných závislostí.
|
|
1347
|
+
Ruff je v CI zatím **informativní** (`ruff check sysnet_pyutils/ || true`);
|
|
1348
|
+
chyby syntaxe a testů naopak workflow zastaví.
|
|
1349
|
+
|
|
1350
|
+
Release workflow porovnává tag bez prefixu `v` s verzí v `pyproject.toml`.
|
|
1351
|
+
Při nesouladu nebo selhání testů se nepublikuje. Po úspěšných kontrolách
|
|
1352
|
+
vytvoří distribuční balíčky pomocí `python -m build` a nahraje je přes `twine`.
|
|
1353
|
+
GitHub secret **`PYPI_API_TOKEN` je nastaven v repozitáři** a poskytuje token pro PyPI;
|
|
1354
|
+
token nepatří do zdrojového kódu.
|
|
1355
|
+
|
|
1356
|
+
#### Vydání nové verze
|
|
1357
|
+
|
|
1358
|
+
1. Změňte `version` v `pyproject.toml` (například na `1.7.12`) a aktualizujte dokumentaci včetně changelogu a badge.
|
|
1359
|
+
2. Commitněte změny a dostaňte je na `main`; před vytvořením tagu ověřte úspěšné CI a správný release commit.
|
|
1360
|
+
3. Na tomto commitu vytvořte a odešlete odpovídající tag:
|
|
1361
|
+
|
|
1362
|
+
```bash
|
|
1363
|
+
git tag v1.7.12 && git push origin v1.7.12
|
|
1364
|
+
```
|
|
1365
|
+
|
|
1366
|
+
4. GitHub Actions automaticky provedou kontroly, build a publikaci.
|
|
1367
|
+
Výsledek sledujte v [Release workflow](https://github.com/SYSNET-CZ/pyutils/actions/workflows/release.yml).
|
|
1368
|
+
|
|
1369
|
+
Původní ruční postup (`python -m build` a `twine upload`, dříve i Windows skripty
|
|
1370
|
+
`upload.ps1` a `upload.cmd`, odstraněné ve verzi 1.7.12) je nahrazen touto pipeline;
|
|
1371
|
+
při běžném vydání již lokálně nic nenahrávejte na PyPI.
|
|
1331
1372
|
|
|
1332
1373
|
---
|
|
1333
1374
|
|
|
@@ -1346,6 +1387,29 @@ pyutils/
|
|
|
1346
1387
|
|
|
1347
1388
|
## 📚 Changelog
|
|
1348
1389
|
|
|
1390
|
+
Podrobnosti nových změn jsou v [CHANGELOG.md](CHANGELOG.md).
|
|
1391
|
+
|
|
1392
|
+
### Verze 1.7.12 (2026-10-27)
|
|
1393
|
+
|
|
1394
|
+
- ✅ GitHub Actions CI/CD: kontrola syntaxe, pytest a ruff při push/PR na `main`; ověření verze, testy, build a publikace na PyPI při tagu `v*`.
|
|
1395
|
+
- ✅ Opraveny starší chyby v `tests/test_models_general.py`: `InfoComponentType(code=...)` → `name=...`, neexistující `update_status()` → funkce `calculate_status()`.
|
|
1396
|
+
- ✅ Doplněny veřejné exporty `InfoComponentType`, `InfoStatusEnum`, `InfoType` a `calculate_status` v `sysnet_pyutils/__init__.py`.
|
|
1397
|
+
- ✅ Ukázka Info/Health výše odpovídá aktuálnímu API (`name`, `message`, `calculate_status`).
|
|
1398
|
+
|
|
1399
|
+
- 🧹 Odstraněny sledované pomocné soubory (`mypy_*.txt`, `upload.cmd`, `upload.ps1`, `run_pytest.py`, `REVIZE_PROJEKTU.md`); Windows cesty v README a `CLAUDE.md` nahrazeny linuxovými.
|
|
1400
|
+
|
|
1401
|
+
### Verze 1.7.11 (2026-09-25)
|
|
1402
|
+
|
|
1403
|
+
- ✅ `MetadataEssentialType.creator: str | None` — sjednocení s `MetadataTypeBase`, výchozí hodnota `None` (#10229).
|
|
1404
|
+
|
|
1405
|
+
### Verze 1.7.10 (2026-09-25)
|
|
1406
|
+
|
|
1407
|
+
- ✅ `MetadataEssentialType.creator_organization: LinkedType | None` — organizace tvůrce i v základních metadatech, výchozí hodnota `None` (#10229).
|
|
1408
|
+
|
|
1409
|
+
### Verze 1.7.9 (2026-09-25)
|
|
1410
|
+
|
|
1411
|
+
- ✅ `MetadataTypeBase.creator_organization: LinkedType | None` — organizace tvůrce dokumentu, výchozí hodnota `None` (#10229).
|
|
1412
|
+
|
|
1349
1413
|
### Verze 1.7.6 (2026-06-19)
|
|
1350
1414
|
|
|
1351
1415
|
**Nové funkce:**
|
|
@@ -1462,6 +1526,6 @@ Tento projekt je licencován pod MIT licencí — viz [LICENSE](LICENSE) soubor.
|
|
|
1462
1526
|
|
|
1463
1527
|
**Vytvořeno s ❤️ týmem SYSNET**
|
|
1464
1528
|
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1529
|
+
*Verze: 1.7.12*
|
|
1530
|
+
|
|
1531
|
+
*Datum: 2026-10-27*
|
|
@@ -6,7 +6,8 @@ Knihovna obsahuje základní, v aplikacích hojně používané, utility pro Pyt
|
|
|
6
6
|
|
|
7
7
|
[](https://www.python.org/downloads/)
|
|
8
8
|
[](LICENSE)
|
|
9
|
-
[](https://pypi.org/project/sysnet-pyutils/1.7.12/)
|
|
10
|
+
[](https://github.com/SYSNET-CZ/pyutils/actions/workflows/ci.yml)
|
|
10
11
|
[](tests/)
|
|
11
12
|
|
|
12
13
|
---
|
|
@@ -30,6 +31,7 @@ Knihovna obsahuje základní, v aplikacích hojně používané, utility pro Pyt
|
|
|
30
31
|
- [Volitelné závislosti](#volitelné-závislosti)
|
|
31
32
|
- [Testování](#testování)
|
|
32
33
|
- [Vývoj](#vývoj)
|
|
34
|
+
- [CI/CD](#cicd)
|
|
33
35
|
- [Systémové proměnné](#systémové-proměnné)
|
|
34
36
|
- [Changelog](#changelog)
|
|
35
37
|
- [Podpora](#podpora)
|
|
@@ -480,26 +482,26 @@ print(str(log_item)) # "2023-05-15 10:00:00 [SYSTEM] Dokument autorizován"
|
|
|
480
482
|
Sjednocený formát pro sledování zdraví služby (health check).
|
|
481
483
|
|
|
482
484
|
```python
|
|
483
|
-
from sysnet_pyutils
|
|
485
|
+
from sysnet_pyutils import InfoType, InfoComponentType, InfoStatusEnum, calculate_status
|
|
484
486
|
|
|
485
487
|
info = InfoType(name="My Service", version="1.0.0")
|
|
486
488
|
|
|
487
489
|
# Přidání komponenty (např. MongoDB)
|
|
488
490
|
info.components.append(InfoComponentType(
|
|
489
|
-
|
|
491
|
+
name="mongo",
|
|
490
492
|
status=InfoStatusEnum.GREEN,
|
|
491
|
-
|
|
493
|
+
message="Connected to localhost:27017"
|
|
492
494
|
))
|
|
493
495
|
|
|
494
496
|
# Přidání další komponenty s chybou
|
|
495
497
|
info.components.append(InfoComponentType(
|
|
496
|
-
|
|
498
|
+
name="storage",
|
|
497
499
|
status=InfoStatusEnum.RED,
|
|
498
|
-
|
|
500
|
+
message="Disk space low"
|
|
499
501
|
))
|
|
500
502
|
|
|
501
503
|
# Automatický výpočet celkového statusu (RED > YELLOW > GREEN)
|
|
502
|
-
info.
|
|
504
|
+
info.status = calculate_status([component.status for component in info.components])
|
|
503
505
|
print(info.status) # RED
|
|
504
506
|
```
|
|
505
507
|
|
|
@@ -527,19 +529,19 @@ Knihovna obsahuje komplexní sadu testů s >90% pokrytím kódu.
|
|
|
527
529
|
|
|
528
530
|
```bash
|
|
529
531
|
# Z kořenového adresáře projektu
|
|
530
|
-
cd
|
|
532
|
+
cd ~/projects/pyutils
|
|
531
533
|
|
|
532
534
|
# Všechny testy
|
|
533
|
-
venv
|
|
535
|
+
.venv/bin/python -m pytest tests/
|
|
534
536
|
|
|
535
537
|
# S podrobným výstupem
|
|
536
|
-
venv
|
|
538
|
+
.venv/bin/python -m pytest tests/ -v
|
|
537
539
|
|
|
538
540
|
# S pokrytím kódu
|
|
539
|
-
venv
|
|
541
|
+
.venv/bin/python -m pytest tests/ --cov=sysnet_pyutils --cov-report=html
|
|
540
542
|
|
|
541
543
|
# Konkrétní modul
|
|
542
|
-
venv
|
|
544
|
+
.venv/bin/python -m pytest tests/test_utils.py -v
|
|
543
545
|
```
|
|
544
546
|
|
|
545
547
|
### Testovací soubory
|
|
@@ -564,6 +566,9 @@ venv\Scripts\python.exe -m pytest tests/test_utils.py -v
|
|
|
564
566
|
|
|
565
567
|
```
|
|
566
568
|
pyutils/
|
|
569
|
+
├── .github/workflows/ # GitHub Actions CI/CD
|
|
570
|
+
│ ├── ci.yml # Syntax check, pytest, ruff
|
|
571
|
+
│ └── release.yml # Ověření verze, testy, build a publikace na PyPI
|
|
567
572
|
├── sysnet_pyutils/ # Hlavní balíček
|
|
568
573
|
│ ├── __init__.py # Veřejné API
|
|
569
574
|
│ ├── utils.py # Hlavní utility modul
|
|
@@ -593,8 +598,7 @@ pyutils/
|
|
|
593
598
|
├── logs/ # Adresář pro logy
|
|
594
599
|
├── pyproject.toml # Build a nástroje
|
|
595
600
|
├── requirements.txt # Závislosti (legacy)
|
|
596
|
-
├──
|
|
597
|
-
├── upload.cmd # Skript pro publikaci (cmd)
|
|
601
|
+
├── CHANGELOG.md # Přehled změn a vydání
|
|
598
602
|
└── LICENSE
|
|
599
603
|
```
|
|
600
604
|
|
|
@@ -603,8 +607,45 @@ pyutils/
|
|
|
603
607
|
1. Implementujte funkci v příslušném modulu
|
|
604
608
|
2. Exportujte ji v `sysnet_pyutils/__init__.py`
|
|
605
609
|
3. Napište testy v `tests/test_<modul>.py`
|
|
606
|
-
4. Spusťte testy:
|
|
607
|
-
5. Aktualizujte `README.md` a `
|
|
610
|
+
4. Spusťte testy: `.venv/bin/python -m pytest tests/`
|
|
611
|
+
5. Aktualizujte `README.md` a `CHANGELOG.md`
|
|
612
|
+
|
|
613
|
+
### CI/CD
|
|
614
|
+
|
|
615
|
+
Automatizaci zajišťují GitHub Actions na self-hosted runneru s Pythonem 3.11:
|
|
616
|
+
|
|
617
|
+
| Workflow | Spuštění | Kroky |
|
|
618
|
+
|----------|----------|-------|
|
|
619
|
+
| [`.github/workflows/ci.yml`](.github/workflows/ci.yml) | Každý push na `main` a pull request do `main` | Kontrola syntaxe (`compileall`), testy (`pytest`) a lint (`ruff`) |
|
|
620
|
+
| [`.github/workflows/release.yml`](.github/workflows/release.yml) | Push tagu `v*` | Ověření verze, kontrola syntaxe a testy, build balíčku a publikace na PyPI |
|
|
621
|
+
|
|
622
|
+
Obě workflow používají čistý checkout, před instalací mažou pip cache a pro testy
|
|
623
|
+
instalují `.[dev,cron,mongodb]`, včetně potřebných volitelných závislostí.
|
|
624
|
+
Ruff je v CI zatím **informativní** (`ruff check sysnet_pyutils/ || true`);
|
|
625
|
+
chyby syntaxe a testů naopak workflow zastaví.
|
|
626
|
+
|
|
627
|
+
Release workflow porovnává tag bez prefixu `v` s verzí v `pyproject.toml`.
|
|
628
|
+
Při nesouladu nebo selhání testů se nepublikuje. Po úspěšných kontrolách
|
|
629
|
+
vytvoří distribuční balíčky pomocí `python -m build` a nahraje je přes `twine`.
|
|
630
|
+
GitHub secret **`PYPI_API_TOKEN` je nastaven v repozitáři** a poskytuje token pro PyPI;
|
|
631
|
+
token nepatří do zdrojového kódu.
|
|
632
|
+
|
|
633
|
+
#### Vydání nové verze
|
|
634
|
+
|
|
635
|
+
1. Změňte `version` v `pyproject.toml` (například na `1.7.12`) a aktualizujte dokumentaci včetně changelogu a badge.
|
|
636
|
+
2. Commitněte změny a dostaňte je na `main`; před vytvořením tagu ověřte úspěšné CI a správný release commit.
|
|
637
|
+
3. Na tomto commitu vytvořte a odešlete odpovídající tag:
|
|
638
|
+
|
|
639
|
+
```bash
|
|
640
|
+
git tag v1.7.12 && git push origin v1.7.12
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
4. GitHub Actions automaticky provedou kontroly, build a publikaci.
|
|
644
|
+
Výsledek sledujte v [Release workflow](https://github.com/SYSNET-CZ/pyutils/actions/workflows/release.yml).
|
|
645
|
+
|
|
646
|
+
Původní ruční postup (`python -m build` a `twine upload`, dříve i Windows skripty
|
|
647
|
+
`upload.ps1` a `upload.cmd`, odstraněné ve verzi 1.7.12) je nahrazen touto pipeline;
|
|
648
|
+
při běžném vydání již lokálně nic nenahrávejte na PyPI.
|
|
608
649
|
|
|
609
650
|
---
|
|
610
651
|
|
|
@@ -623,6 +664,29 @@ pyutils/
|
|
|
623
664
|
|
|
624
665
|
## 📚 Changelog
|
|
625
666
|
|
|
667
|
+
Podrobnosti nových změn jsou v [CHANGELOG.md](CHANGELOG.md).
|
|
668
|
+
|
|
669
|
+
### Verze 1.7.12 (2026-10-27)
|
|
670
|
+
|
|
671
|
+
- ✅ GitHub Actions CI/CD: kontrola syntaxe, pytest a ruff při push/PR na `main`; ověření verze, testy, build a publikace na PyPI při tagu `v*`.
|
|
672
|
+
- ✅ Opraveny starší chyby v `tests/test_models_general.py`: `InfoComponentType(code=...)` → `name=...`, neexistující `update_status()` → funkce `calculate_status()`.
|
|
673
|
+
- ✅ Doplněny veřejné exporty `InfoComponentType`, `InfoStatusEnum`, `InfoType` a `calculate_status` v `sysnet_pyutils/__init__.py`.
|
|
674
|
+
- ✅ Ukázka Info/Health výše odpovídá aktuálnímu API (`name`, `message`, `calculate_status`).
|
|
675
|
+
|
|
676
|
+
- 🧹 Odstraněny sledované pomocné soubory (`mypy_*.txt`, `upload.cmd`, `upload.ps1`, `run_pytest.py`, `REVIZE_PROJEKTU.md`); Windows cesty v README a `CLAUDE.md` nahrazeny linuxovými.
|
|
677
|
+
|
|
678
|
+
### Verze 1.7.11 (2026-09-25)
|
|
679
|
+
|
|
680
|
+
- ✅ `MetadataEssentialType.creator: str | None` — sjednocení s `MetadataTypeBase`, výchozí hodnota `None` (#10229).
|
|
681
|
+
|
|
682
|
+
### Verze 1.7.10 (2026-09-25)
|
|
683
|
+
|
|
684
|
+
- ✅ `MetadataEssentialType.creator_organization: LinkedType | None` — organizace tvůrce i v základních metadatech, výchozí hodnota `None` (#10229).
|
|
685
|
+
|
|
686
|
+
### Verze 1.7.9 (2026-09-25)
|
|
687
|
+
|
|
688
|
+
- ✅ `MetadataTypeBase.creator_organization: LinkedType | None` — organizace tvůrce dokumentu, výchozí hodnota `None` (#10229).
|
|
689
|
+
|
|
626
690
|
### Verze 1.7.6 (2026-06-19)
|
|
627
691
|
|
|
628
692
|
**Nové funkce:**
|
|
@@ -739,6 +803,6 @@ Tento projekt je licencován pod MIT licencí — viz [LICENSE](LICENSE) soubor.
|
|
|
739
803
|
|
|
740
804
|
**Vytvořeno s ❤️ týmem SYSNET**
|
|
741
805
|
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
806
|
+
*Verze: 1.7.12*
|
|
807
|
+
|
|
808
|
+
*Datum: 2026-10-27*
|
|
@@ -184,6 +184,11 @@ class MetadataEssentialType(BaseModel):
|
|
|
184
184
|
duplicates: str | None = Field(
|
|
185
185
|
default=None, description="Dokument je duplicitní k jinému dokumentu s daným identifikátorem"
|
|
186
186
|
)
|
|
187
|
+
creator: str | None = Field(
|
|
188
|
+
default=None,
|
|
189
|
+
description="Tvůrce dokumentu — subjekt primárně odpovědný za vytvoření dokumentu.",
|
|
190
|
+
examples=["CN=Jan Novák/O=CITES/C=CZ"],
|
|
191
|
+
)
|
|
187
192
|
creator_organization: LinkedType | None = Field(
|
|
188
193
|
default=None,
|
|
189
194
|
description=(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sysnet-pyutils
|
|
3
|
-
Version: 1.7.
|
|
3
|
+
Version: 1.7.12
|
|
4
4
|
Summary: SYSNET Python Utilities - kompletní sada nástrojů pro Python aplikace
|
|
5
5
|
Author-email: Data Developer <info@sysnet.cz>
|
|
6
6
|
Maintainer-email: SYSNET Development Team <info@sysnet.cz>
|
|
@@ -729,7 +729,8 @@ Knihovna obsahuje základní, v aplikacích hojně používané, utility pro Pyt
|
|
|
729
729
|
|
|
730
730
|
[](https://www.python.org/downloads/)
|
|
731
731
|
[](LICENSE)
|
|
732
|
-
[](https://pypi.org/project/sysnet-pyutils/1.7.12/)
|
|
733
|
+
[](https://github.com/SYSNET-CZ/pyutils/actions/workflows/ci.yml)
|
|
733
734
|
[](tests/)
|
|
734
735
|
|
|
735
736
|
---
|
|
@@ -753,6 +754,7 @@ Knihovna obsahuje základní, v aplikacích hojně používané, utility pro Pyt
|
|
|
753
754
|
- [Volitelné závislosti](#volitelné-závislosti)
|
|
754
755
|
- [Testování](#testování)
|
|
755
756
|
- [Vývoj](#vývoj)
|
|
757
|
+
- [CI/CD](#cicd)
|
|
756
758
|
- [Systémové proměnné](#systémové-proměnné)
|
|
757
759
|
- [Changelog](#changelog)
|
|
758
760
|
- [Podpora](#podpora)
|
|
@@ -1203,26 +1205,26 @@ print(str(log_item)) # "2023-05-15 10:00:00 [SYSTEM] Dokument autorizován"
|
|
|
1203
1205
|
Sjednocený formát pro sledování zdraví služby (health check).
|
|
1204
1206
|
|
|
1205
1207
|
```python
|
|
1206
|
-
from sysnet_pyutils
|
|
1208
|
+
from sysnet_pyutils import InfoType, InfoComponentType, InfoStatusEnum, calculate_status
|
|
1207
1209
|
|
|
1208
1210
|
info = InfoType(name="My Service", version="1.0.0")
|
|
1209
1211
|
|
|
1210
1212
|
# Přidání komponenty (např. MongoDB)
|
|
1211
1213
|
info.components.append(InfoComponentType(
|
|
1212
|
-
|
|
1214
|
+
name="mongo",
|
|
1213
1215
|
status=InfoStatusEnum.GREEN,
|
|
1214
|
-
|
|
1216
|
+
message="Connected to localhost:27017"
|
|
1215
1217
|
))
|
|
1216
1218
|
|
|
1217
1219
|
# Přidání další komponenty s chybou
|
|
1218
1220
|
info.components.append(InfoComponentType(
|
|
1219
|
-
|
|
1221
|
+
name="storage",
|
|
1220
1222
|
status=InfoStatusEnum.RED,
|
|
1221
|
-
|
|
1223
|
+
message="Disk space low"
|
|
1222
1224
|
))
|
|
1223
1225
|
|
|
1224
1226
|
# Automatický výpočet celkového statusu (RED > YELLOW > GREEN)
|
|
1225
|
-
info.
|
|
1227
|
+
info.status = calculate_status([component.status for component in info.components])
|
|
1226
1228
|
print(info.status) # RED
|
|
1227
1229
|
```
|
|
1228
1230
|
|
|
@@ -1250,19 +1252,19 @@ Knihovna obsahuje komplexní sadu testů s >90% pokrytím kódu.
|
|
|
1250
1252
|
|
|
1251
1253
|
```bash
|
|
1252
1254
|
# Z kořenového adresáře projektu
|
|
1253
|
-
cd
|
|
1255
|
+
cd ~/projects/pyutils
|
|
1254
1256
|
|
|
1255
1257
|
# Všechny testy
|
|
1256
|
-
venv
|
|
1258
|
+
.venv/bin/python -m pytest tests/
|
|
1257
1259
|
|
|
1258
1260
|
# S podrobným výstupem
|
|
1259
|
-
venv
|
|
1261
|
+
.venv/bin/python -m pytest tests/ -v
|
|
1260
1262
|
|
|
1261
1263
|
# S pokrytím kódu
|
|
1262
|
-
venv
|
|
1264
|
+
.venv/bin/python -m pytest tests/ --cov=sysnet_pyutils --cov-report=html
|
|
1263
1265
|
|
|
1264
1266
|
# Konkrétní modul
|
|
1265
|
-
venv
|
|
1267
|
+
.venv/bin/python -m pytest tests/test_utils.py -v
|
|
1266
1268
|
```
|
|
1267
1269
|
|
|
1268
1270
|
### Testovací soubory
|
|
@@ -1287,6 +1289,9 @@ venv\Scripts\python.exe -m pytest tests/test_utils.py -v
|
|
|
1287
1289
|
|
|
1288
1290
|
```
|
|
1289
1291
|
pyutils/
|
|
1292
|
+
├── .github/workflows/ # GitHub Actions CI/CD
|
|
1293
|
+
│ ├── ci.yml # Syntax check, pytest, ruff
|
|
1294
|
+
│ └── release.yml # Ověření verze, testy, build a publikace na PyPI
|
|
1290
1295
|
├── sysnet_pyutils/ # Hlavní balíček
|
|
1291
1296
|
│ ├── __init__.py # Veřejné API
|
|
1292
1297
|
│ ├── utils.py # Hlavní utility modul
|
|
@@ -1316,8 +1321,7 @@ pyutils/
|
|
|
1316
1321
|
├── logs/ # Adresář pro logy
|
|
1317
1322
|
├── pyproject.toml # Build a nástroje
|
|
1318
1323
|
├── requirements.txt # Závislosti (legacy)
|
|
1319
|
-
├──
|
|
1320
|
-
├── upload.cmd # Skript pro publikaci (cmd)
|
|
1324
|
+
├── CHANGELOG.md # Přehled změn a vydání
|
|
1321
1325
|
└── LICENSE
|
|
1322
1326
|
```
|
|
1323
1327
|
|
|
@@ -1326,8 +1330,45 @@ pyutils/
|
|
|
1326
1330
|
1. Implementujte funkci v příslušném modulu
|
|
1327
1331
|
2. Exportujte ji v `sysnet_pyutils/__init__.py`
|
|
1328
1332
|
3. Napište testy v `tests/test_<modul>.py`
|
|
1329
|
-
4. Spusťte testy:
|
|
1330
|
-
5. Aktualizujte `README.md` a `
|
|
1333
|
+
4. Spusťte testy: `.venv/bin/python -m pytest tests/`
|
|
1334
|
+
5. Aktualizujte `README.md` a `CHANGELOG.md`
|
|
1335
|
+
|
|
1336
|
+
### CI/CD
|
|
1337
|
+
|
|
1338
|
+
Automatizaci zajišťují GitHub Actions na self-hosted runneru s Pythonem 3.11:
|
|
1339
|
+
|
|
1340
|
+
| Workflow | Spuštění | Kroky |
|
|
1341
|
+
|----------|----------|-------|
|
|
1342
|
+
| [`.github/workflows/ci.yml`](.github/workflows/ci.yml) | Každý push na `main` a pull request do `main` | Kontrola syntaxe (`compileall`), testy (`pytest`) a lint (`ruff`) |
|
|
1343
|
+
| [`.github/workflows/release.yml`](.github/workflows/release.yml) | Push tagu `v*` | Ověření verze, kontrola syntaxe a testy, build balíčku a publikace na PyPI |
|
|
1344
|
+
|
|
1345
|
+
Obě workflow používají čistý checkout, před instalací mažou pip cache a pro testy
|
|
1346
|
+
instalují `.[dev,cron,mongodb]`, včetně potřebných volitelných závislostí.
|
|
1347
|
+
Ruff je v CI zatím **informativní** (`ruff check sysnet_pyutils/ || true`);
|
|
1348
|
+
chyby syntaxe a testů naopak workflow zastaví.
|
|
1349
|
+
|
|
1350
|
+
Release workflow porovnává tag bez prefixu `v` s verzí v `pyproject.toml`.
|
|
1351
|
+
Při nesouladu nebo selhání testů se nepublikuje. Po úspěšných kontrolách
|
|
1352
|
+
vytvoří distribuční balíčky pomocí `python -m build` a nahraje je přes `twine`.
|
|
1353
|
+
GitHub secret **`PYPI_API_TOKEN` je nastaven v repozitáři** a poskytuje token pro PyPI;
|
|
1354
|
+
token nepatří do zdrojového kódu.
|
|
1355
|
+
|
|
1356
|
+
#### Vydání nové verze
|
|
1357
|
+
|
|
1358
|
+
1. Změňte `version` v `pyproject.toml` (například na `1.7.12`) a aktualizujte dokumentaci včetně changelogu a badge.
|
|
1359
|
+
2. Commitněte změny a dostaňte je na `main`; před vytvořením tagu ověřte úspěšné CI a správný release commit.
|
|
1360
|
+
3. Na tomto commitu vytvořte a odešlete odpovídající tag:
|
|
1361
|
+
|
|
1362
|
+
```bash
|
|
1363
|
+
git tag v1.7.12 && git push origin v1.7.12
|
|
1364
|
+
```
|
|
1365
|
+
|
|
1366
|
+
4. GitHub Actions automaticky provedou kontroly, build a publikaci.
|
|
1367
|
+
Výsledek sledujte v [Release workflow](https://github.com/SYSNET-CZ/pyutils/actions/workflows/release.yml).
|
|
1368
|
+
|
|
1369
|
+
Původní ruční postup (`python -m build` a `twine upload`, dříve i Windows skripty
|
|
1370
|
+
`upload.ps1` a `upload.cmd`, odstraněné ve verzi 1.7.12) je nahrazen touto pipeline;
|
|
1371
|
+
při běžném vydání již lokálně nic nenahrávejte na PyPI.
|
|
1331
1372
|
|
|
1332
1373
|
---
|
|
1333
1374
|
|
|
@@ -1346,6 +1387,29 @@ pyutils/
|
|
|
1346
1387
|
|
|
1347
1388
|
## 📚 Changelog
|
|
1348
1389
|
|
|
1390
|
+
Podrobnosti nových změn jsou v [CHANGELOG.md](CHANGELOG.md).
|
|
1391
|
+
|
|
1392
|
+
### Verze 1.7.12 (2026-10-27)
|
|
1393
|
+
|
|
1394
|
+
- ✅ GitHub Actions CI/CD: kontrola syntaxe, pytest a ruff při push/PR na `main`; ověření verze, testy, build a publikace na PyPI při tagu `v*`.
|
|
1395
|
+
- ✅ Opraveny starší chyby v `tests/test_models_general.py`: `InfoComponentType(code=...)` → `name=...`, neexistující `update_status()` → funkce `calculate_status()`.
|
|
1396
|
+
- ✅ Doplněny veřejné exporty `InfoComponentType`, `InfoStatusEnum`, `InfoType` a `calculate_status` v `sysnet_pyutils/__init__.py`.
|
|
1397
|
+
- ✅ Ukázka Info/Health výše odpovídá aktuálnímu API (`name`, `message`, `calculate_status`).
|
|
1398
|
+
|
|
1399
|
+
- 🧹 Odstraněny sledované pomocné soubory (`mypy_*.txt`, `upload.cmd`, `upload.ps1`, `run_pytest.py`, `REVIZE_PROJEKTU.md`); Windows cesty v README a `CLAUDE.md` nahrazeny linuxovými.
|
|
1400
|
+
|
|
1401
|
+
### Verze 1.7.11 (2026-09-25)
|
|
1402
|
+
|
|
1403
|
+
- ✅ `MetadataEssentialType.creator: str | None` — sjednocení s `MetadataTypeBase`, výchozí hodnota `None` (#10229).
|
|
1404
|
+
|
|
1405
|
+
### Verze 1.7.10 (2026-09-25)
|
|
1406
|
+
|
|
1407
|
+
- ✅ `MetadataEssentialType.creator_organization: LinkedType | None` — organizace tvůrce i v základních metadatech, výchozí hodnota `None` (#10229).
|
|
1408
|
+
|
|
1409
|
+
### Verze 1.7.9 (2026-09-25)
|
|
1410
|
+
|
|
1411
|
+
- ✅ `MetadataTypeBase.creator_organization: LinkedType | None` — organizace tvůrce dokumentu, výchozí hodnota `None` (#10229).
|
|
1412
|
+
|
|
1349
1413
|
### Verze 1.7.6 (2026-06-19)
|
|
1350
1414
|
|
|
1351
1415
|
**Nové funkce:**
|
|
@@ -1462,6 +1526,6 @@ Tento projekt je licencován pod MIT licencí — viz [LICENSE](LICENSE) soubor.
|
|
|
1462
1526
|
|
|
1463
1527
|
**Vytvořeno s ❤️ týmem SYSNET**
|
|
1464
1528
|
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1529
|
+
*Verze: 1.7.12*
|
|
1530
|
+
|
|
1531
|
+
*Datum: 2026-10-27*
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sysnet_pyutils-1.7.10 → sysnet_pyutils-1.7.12}/sysnet_pyutils.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|