sysnet-pyutils 1.7.11__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.
Files changed (59) hide show
  1. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/PKG-INFO +84 -20
  2. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/README.md +83 -19
  3. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/pyproject.toml +1 -1
  4. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils.egg-info/PKG-INFO +84 -20
  5. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/LICENSE +0 -0
  6. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/setup.cfg +0 -0
  7. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils/__init__.py +0 -0
  8. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils/barcode.py +0 -0
  9. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils/constants.py +0 -0
  10. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils/cron_utils/__init__.py +0 -0
  11. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils/cron_utils/validation.py +0 -0
  12. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils/data_utils.py +0 -0
  13. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils/domino.py +0 -0
  14. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils/geo.py +0 -0
  15. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils/globalmodel/__init__.py +0 -0
  16. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils/globalmodel/global_model.py +0 -0
  17. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils/globalmodel/models.py +0 -0
  18. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils/globalmodel/timeutils.py +0 -0
  19. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils/ident.py +0 -0
  20. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils/log.py +0 -0
  21. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils/models/__init__.py +0 -0
  22. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils/models/general.py +0 -0
  23. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils/ses.py +0 -0
  24. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils/syslog/__init__.py +0 -0
  25. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils/syslog/factory.py +0 -0
  26. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils/tools.py +0 -0
  27. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils/utils.py +0 -0
  28. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils.egg-info/SOURCES.txt +0 -0
  29. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils.egg-info/dependency_links.txt +0 -0
  30. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils.egg-info/not-zip-safe +0 -0
  31. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils.egg-info/requires.txt +0 -0
  32. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/sysnet_pyutils.egg-info/top_level.txt +0 -0
  33. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_cron_utils.py +0 -0
  34. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_cron_validation_edge.py +0 -0
  35. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_data_utils.py +0 -0
  36. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_data_utils_datetime.py +0 -0
  37. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_data_utils_edge.py +0 -0
  38. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_data_utils_missing_branches.py +0 -0
  39. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_domino.py +0 -0
  40. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_domino_edge.py +0 -0
  41. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_geo.py +0 -0
  42. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_global_model_recursive.py +0 -0
  43. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_global_model_timezone.py +0 -0
  44. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_ident_barcode.py +0 -0
  45. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_log_importerror_branch.py +0 -0
  46. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_log_mongo.py +0 -0
  47. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_models_contact.py +0 -0
  48. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_models_general.py +0 -0
  49. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_models_general_edge.py +0 -0
  50. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_package_init_version.py +0 -0
  51. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_recursive_update.py +0 -0
  52. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_ses.py +0 -0
  53. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_ses_importerror_branch.py +0 -0
  54. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_syslog_factory.py +0 -0
  55. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_tools.py +0 -0
  56. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_utils.py +0 -0
  57. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_utils_edge.py +0 -0
  58. {sysnet_pyutils-1.7.11 → sysnet_pyutils-1.7.12}/tests/test_utils_log_base64.py +0 -0
  59. {sysnet_pyutils-1.7.11 → 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.11
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
  [![Python](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
731
731
  [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
732
- [![Tests](https://img.shields.io/badge/tests-passing-brightgreen.svg)](tests/)
732
+ [![Verze](https://img.shields.io/badge/version-1.7.12-blue.svg)](https://pypi.org/project/sysnet-pyutils/1.7.12/)
733
+ [![Tests](https://github.com/SYSNET-CZ/pyutils/actions/workflows/ci.yml/badge.svg)](https://github.com/SYSNET-CZ/pyutils/actions/workflows/ci.yml)
733
734
  [![Coverage](https://img.shields.io/badge/coverage-90%25-brightgreen.svg)](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.models.general import InfoType, InfoComponentType, InfoStatusEnum
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
- code="mongo",
1214
+ name="mongo",
1213
1215
  status=InfoStatusEnum.GREEN,
1214
- info="Connected to localhost:27017"
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
- code="storage",
1221
+ name="storage",
1220
1222
  status=InfoStatusEnum.RED,
1221
- info="Disk space low"
1223
+ message="Disk space low"
1222
1224
  ))
1223
1225
 
1224
1226
  # Automatický výpočet celkového statusu (RED > YELLOW > GREEN)
1225
- info.update_status()
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 D:\development\git\pyutils
1255
+ cd ~/projects/pyutils
1254
1256
 
1255
1257
  # Všechny testy
1256
- venv\Scripts\python.exe -m pytest tests/
1258
+ .venv/bin/python -m pytest tests/
1257
1259
 
1258
1260
  # S podrobným výstupem
1259
- venv\Scripts\python.exe -m pytest tests/ -v
1261
+ .venv/bin/python -m pytest tests/ -v
1260
1262
 
1261
1263
  # S pokrytím kódu
1262
- venv\Scripts\python.exe -m pytest tests/ --cov=sysnet_pyutils --cov-report=html
1264
+ .venv/bin/python -m pytest tests/ --cov=sysnet_pyutils --cov-report=html
1263
1265
 
1264
1266
  # Konkrétní modul
1265
- venv\Scripts\python.exe -m pytest tests/test_utils.py -v
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
- ├── upload.ps1 # Skript pro publikaci na PyPI
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: `venv\Scripts\python.exe -m pytest tests/`
1330
- 5. Aktualizujte `README.md` a `REVIZE_PROJEKTU.md`
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
- -*Verze: 1.7.6*
1466
- +*Verze: 1.7.6*
1467
- *Datum: 2026-06-19*
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
  [![Python](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
8
8
  [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
9
- [![Tests](https://img.shields.io/badge/tests-passing-brightgreen.svg)](tests/)
9
+ [![Verze](https://img.shields.io/badge/version-1.7.12-blue.svg)](https://pypi.org/project/sysnet-pyutils/1.7.12/)
10
+ [![Tests](https://github.com/SYSNET-CZ/pyutils/actions/workflows/ci.yml/badge.svg)](https://github.com/SYSNET-CZ/pyutils/actions/workflows/ci.yml)
10
11
  [![Coverage](https://img.shields.io/badge/coverage-90%25-brightgreen.svg)](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.models.general import InfoType, InfoComponentType, InfoStatusEnum
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
- code="mongo",
491
+ name="mongo",
490
492
  status=InfoStatusEnum.GREEN,
491
- info="Connected to localhost:27017"
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
- code="storage",
498
+ name="storage",
497
499
  status=InfoStatusEnum.RED,
498
- info="Disk space low"
500
+ message="Disk space low"
499
501
  ))
500
502
 
501
503
  # Automatický výpočet celkového statusu (RED > YELLOW > GREEN)
502
- info.update_status()
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 D:\development\git\pyutils
532
+ cd ~/projects/pyutils
531
533
 
532
534
  # Všechny testy
533
- venv\Scripts\python.exe -m pytest tests/
535
+ .venv/bin/python -m pytest tests/
534
536
 
535
537
  # S podrobným výstupem
536
- venv\Scripts\python.exe -m pytest tests/ -v
538
+ .venv/bin/python -m pytest tests/ -v
537
539
 
538
540
  # S pokrytím kódu
539
- venv\Scripts\python.exe -m pytest tests/ --cov=sysnet_pyutils --cov-report=html
541
+ .venv/bin/python -m pytest tests/ --cov=sysnet_pyutils --cov-report=html
540
542
 
541
543
  # Konkrétní modul
542
- venv\Scripts\python.exe -m pytest tests/test_utils.py -v
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
- ├── upload.ps1 # Skript pro publikaci na PyPI
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: `venv\Scripts\python.exe -m pytest tests/`
607
- 5. Aktualizujte `README.md` a `REVIZE_PROJEKTU.md`
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
- -*Verze: 1.7.6*
743
- +*Verze: 1.7.6*
744
- *Datum: 2026-06-19*
806
+ *Verze: 1.7.12*
807
+
808
+ *Datum: 2026-10-27*
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "sysnet-pyutils"
7
- version = "1.7.11"
7
+ version = "1.7.12"
8
8
  description = "SYSNET Python Utilities - kompletní sada nástrojů pro Python aplikace"
9
9
  readme = "README.md"
10
10
  license = { file = "LICENSE" }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sysnet-pyutils
3
- Version: 1.7.11
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
  [![Python](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
731
731
  [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
732
- [![Tests](https://img.shields.io/badge/tests-passing-brightgreen.svg)](tests/)
732
+ [![Verze](https://img.shields.io/badge/version-1.7.12-blue.svg)](https://pypi.org/project/sysnet-pyutils/1.7.12/)
733
+ [![Tests](https://github.com/SYSNET-CZ/pyutils/actions/workflows/ci.yml/badge.svg)](https://github.com/SYSNET-CZ/pyutils/actions/workflows/ci.yml)
733
734
  [![Coverage](https://img.shields.io/badge/coverage-90%25-brightgreen.svg)](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.models.general import InfoType, InfoComponentType, InfoStatusEnum
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
- code="mongo",
1214
+ name="mongo",
1213
1215
  status=InfoStatusEnum.GREEN,
1214
- info="Connected to localhost:27017"
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
- code="storage",
1221
+ name="storage",
1220
1222
  status=InfoStatusEnum.RED,
1221
- info="Disk space low"
1223
+ message="Disk space low"
1222
1224
  ))
1223
1225
 
1224
1226
  # Automatický výpočet celkového statusu (RED > YELLOW > GREEN)
1225
- info.update_status()
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 D:\development\git\pyutils
1255
+ cd ~/projects/pyutils
1254
1256
 
1255
1257
  # Všechny testy
1256
- venv\Scripts\python.exe -m pytest tests/
1258
+ .venv/bin/python -m pytest tests/
1257
1259
 
1258
1260
  # S podrobným výstupem
1259
- venv\Scripts\python.exe -m pytest tests/ -v
1261
+ .venv/bin/python -m pytest tests/ -v
1260
1262
 
1261
1263
  # S pokrytím kódu
1262
- venv\Scripts\python.exe -m pytest tests/ --cov=sysnet_pyutils --cov-report=html
1264
+ .venv/bin/python -m pytest tests/ --cov=sysnet_pyutils --cov-report=html
1263
1265
 
1264
1266
  # Konkrétní modul
1265
- venv\Scripts\python.exe -m pytest tests/test_utils.py -v
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
- ├── upload.ps1 # Skript pro publikaci na PyPI
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: `venv\Scripts\python.exe -m pytest tests/`
1330
- 5. Aktualizujte `README.md` a `REVIZE_PROJEKTU.md`
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
- -*Verze: 1.7.6*
1466
- +*Verze: 1.7.6*
1467
- *Datum: 2026-06-19*
1529
+ *Verze: 1.7.12*
1530
+
1531
+ *Datum: 2026-10-27*
File without changes