Skip to content

Commit 537f7e0

Browse files
authored
release 1.3.1 (#79)
Release 1.3.1
2 parents 9711c52 + 1e135fb commit 537f7e0

30 files changed

+1518
-762
lines changed

.github/workflows/ci.yml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: CI
22

33
on:
44
push:
5-
branches: [main]
5+
branches: [main, dev]
66
pull_request:
77

88
jobs:
@@ -19,12 +19,16 @@ jobs:
1919
- name: Install dependencies
2020
run: |
2121
python -m pip install --upgrade pip
22-
pip install pytest pytest-asyncio pytest-homeassistant-custom-component ruff
22+
pip install pytest pytest-asyncio pytest-homeassistant-custom-component ruff basedpyright
2323
pip install -e .
2424
# HA runtime pro testy (minimální):
2525
pip install homeassistant==2025.9.4
26-
pip install async-bakalari-api==0.6.0
26+
pip install async-bakalari-api==0.7.0
2727
- name: Ruff (lint)
2828
run: ruff check .
29+
- name: Ruff (format)
30+
run: ruff format --check .
31+
- name: basedpyright
32+
run: basedpyright
2933
- name: Tests
3034
run: pytest -q

.github/workflows/release-drafter.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
name: Release Drafter (dev)
22

33
on:
4-
push:
5-
branches: [ dev ]
64
pull_request:
75
branches: [ dev ]
8-
types: [opened, reopened, synchronize, labeled, unlabeled, edited, closed]
6+
types: [closed]
97

108
permissions:
119
contents: write

.github/workflows/sync-labels.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@ jobs:
1616
with:
1717
github-token: ${{ secrets.GITHUB_TOKEN }}
1818
yaml-file: .github/labels.yml
19-
prune: true # smaže labely, co nejsou v YAML
19+
prune: true

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,3 +213,4 @@ __marimo__/
213213
.zed/debug.json
214214

215215
.zed/settings.json
216+
struct.md

.pre-commit-config.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,10 @@ repos:
1717
entry: script/validate_version.py
1818
language: system
1919
pass_filenames: false
20+
- repo: local
21+
hooks:
22+
- id: basedpyright
23+
name: Check pyRight
24+
entry: basedpyright --outputjson | script/pretty_basedpyright.py
25+
language: system
26+
pass_filenames: true

CHANGELOG.md

Lines changed: 71 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,53 @@
1-
# Changelog
1+
# # Changelog
22

3-
# v1.2.0
3+
## v1.3.1
4+
5+
## ✨ Nové funkce
6+
7+
- Přidány senzory pro jednotlivé předměty
8+
- Původní senzor `all-marks` nyní drří pouze metadata k senzorům známek pro využití v Lovelace
9+
- každý senzor pro `Předmět` nyní má svá metadata a drží všechny známky z daného předmětu
10+
- senzor pro `Předmět` uvádí jako `native_value` celkový počet známek
11+
- zrušen limit pro 30 posledních známek v předmětu
12+
- Nový `snapshot` API pro známky
13+
- agregace známek: celkové statistiky (počty, průměr, vážený průměr) a detailní rozpad dle předmětů.
14+
- Pomocné atributy pro jednodušší využití agregovaných dat.
15+
- Dynamická tvorba senzorů pro jednotlivé předměty na základě dostupných dat z `Bakalářů`
16+
- Zjednodušené volání API odstraněním generické funkce `_api_call` a zavedením přímých volání knihovny `async_bakalari_api.`
17+
18+
## 🐛 Opravy chyb
19+
20+
- ošetřeno generování `unique_id`
21+
- opravena chyba, kdy se senzory generovaly pouze pro poslední díte v seznamu
22+
- aktualizace agregační funkce, aby užívala již získaná data a zabránilo se opětovnému volání `get_items_for_child`
23+
24+
## 🧹 Refaktoring / Údržba
25+
26+
- Nahrazení několika asynchronních volání jediným voláním pro načtení známek (rychlejší a spolehlivější)
27+
- Interní zpracování známek přepracováno tak, aby lépe podporovalo agregace a odvozené informace
28+
- Sledování aktualizací koordinátoru: při objevení nových předmětů se senzory automaticky doplní bez potřeby plného reloadu
29+
- Odstraněn zastaralý kód související s původním způsobem inicializace senzorů
30+
- přidán `basedpyright` do CI kontroly i lokální `make all` kontroly
31+
- přepracováno zpracování agregace známek u podřízených entit, přejmenování a přesunutí agregační funkce, aby byla struktura kódu přehlednější a lépe udržovatelná.
32+
- vylepšeno zpracování událostí kalendáře díky konzistentnímu nakládání s časovými zónami
33+
- ošetření okrajových případů, kdy chyběl koncový čas události. Jako výchozí hodnota je použit čas začátku
34+
- přidány `unity_testy` k ověření `api_calls`
35+
- správné chování, při chybějící knihovně
36+
- chyby autentizace
37+
- obecné chyby
38+
- serializace `lock`
39+
- logovací zprávy nyní mají název modulu a třídy, což zpřehlední výstup a usnadňuje dohledání původu zprávy
40+
41+
---
42+
43+
## 📦 Technické
44+
45+
- Verze integrace: `v1.3.0`
46+
- Minimální verze Home Assistant: `2025.9+`
47+
- Předchozí tag: `v1.2.0`
48+
- Autoři přispěli: @schizza
49+
50+
## v1.2.0
451

552
## ✨ Nové funkce
653

@@ -10,15 +57,18 @@
1057
## 🧹 Refaktoring / Údržba
1158

1259
- bump verze verze API na 0.6.0
60+
1361
---
62+
1463
## 📦 Technické
64+
1565
- Verze integrace: `v1.2.0`
1666
- Vyžaduje API verzi `0.6.0+`
1767
- Minimální verze Home Assistant: `2025.9+`
1868
- Předchozí tag: `v1.1.0`
1969
- Autoři přispěli: @schizza
2070

21-
# v1.1.0
71+
## v1.1.0
2272

2373
## ✨ Nové funkce
2474

@@ -75,7 +125,7 @@ Podpora migrace jedinečného ID do nového formátu založeného na ID konfigur
75125
- Předchozí tag: `v1.0.0`
76126
- Autoři přispěli: @schizza
77127

78-
# 1.0.0
128+
## 1.0.0
79129

80130
## ✨ Nové funkce
81131

@@ -97,49 +147,54 @@ Podpora migrace jedinečného ID do nového formátu založeného na ID konfigur
97147
- Zachovává zpětnou kompatibilitu ponecháním starých entit.
98148

99149
---
150+
100151
## 📦 Technické
152+
101153
- Verze integrace: `v1.0.0`
102154
- Vyžaduje API verze: `0.5.0`
103155
- Minimální verze Home Assistant: `2025.9+`
104156
- Předchozí tag: `v0.1.1`
105157
- Autoři přispěli: @schizza
106158

107-
# 0.1.1
159+
## 0.1.1
108160

109161
## ✨ Nové funkce
110162

111163
Podpora Rozvrhu `Timetable module`
112-
- V API přidána možnost stažení aktuálního a permanentního rozvrhu.
164+
- V API přidána možnost stažení aktuálního a permanentního rozvrhu.
113165

114166
## Breaking changes
115167

116168
Karty Lovelace přesunuty do vlastního repozitáře (schizza/bakalari-ha-frontend)
117-
- smazan www/bakalari-cards.js
118-
- karty pro Lovelace se nyní instalují přes HACS ve vlastním repozitáři
169+
170+
- smazan www/bakalari-cards.js
171+
- karty pro Lovelace se nyní instalují přes HACS ve vlastním repozitáři
119172

120173
## 🐛 Opravy chyb
121174

122-
- funkce pro `timetable_actual` stahuje v módu dnes +- 7 dní (reálně tedy 3 týdny rozvrhu)
175+
- funkce pro `timetable_actual` stahuje v módu dnes +- 7 dní (reálně tedy 3 týdny rozvrhu)
123176

124177
## 🧹 Refaktoring / Údržba
125178

126179
- Fix: Struktura ZIP souboru pro release
127180

128181
- Chore/download counts (#34) (#35) @schizza
129182

130-
* Enable zip_release for Bakaláři HA
131-
* Add GitHub Actions workflow for ZIP asset release
183+
- Enable zip_release for Bakaláři HA
184+
- Add GitHub Actions workflow for ZIP asset release
132185

133186
Added download badges for total and latest releases.
134187

135-
* Add commitish and filter-by-commitish options
136-
* Update release drafter configuration for versioning
137-
* Add commitish and filter-by-commitish to workflow
138-
* Add initial changelog file
139-
* Add workflow to update CHANGELOG on release
188+
- Add commitish and filter-by-commitish options
189+
- Update release drafter configuration for versioning
190+
- Add commitish and filter-by-commitish to workflow
191+
- Add initial changelog file
192+
- Add workflow to update CHANGELOG on release
140193

141194
---
195+
142196
## 📦 Technické
197+
143198
- Verze integrace: `v0.1.1`
144199
- Minimální verze Home Assistant: `2025.9+`
145200
- Předchozí tag: `v0.1.0`

Makefile

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ PYTEST := $(PYTHON) -m pytest
1111

1212
# Verze / cesty
1313
HA_VERSION := 2025.9.4
14-
BAKALARI_VERSION := 0.6.0
14+
BAKALARI_VERSION := 0.7.0
1515
HA_CONFIG := ./config
1616
COMPONENT_PATH := custom_components/bakalari
1717

@@ -71,7 +71,8 @@ install: venv
7171
ruff pre-commit \
7272
pytest pytest-asyncio pytest-homeassistant-custom-component \
7373
async-bakalari-api==$(BAKALARI_VERSION) \
74-
bump-my-version PyTurboJPEG
74+
bump-my-version PyTurboJPEG \
75+
basedpyright
7576
$(MAKE) hassfest-setup
7677

7778
update:
@@ -84,8 +85,12 @@ all: ci coverage validate-local check-versions
8485

8586
# ====== Lint & test ======
8687
lint:
88+
@echo -n "Ruff check : "
8789
@$(RUFF) check .
90+
@echo -n "Ruff format: "
8891
@$(RUFF) format --check .
92+
@set -o pipefail; \
93+
basedpyright --outputjson | python script/pretty_basedpyright.py
8994

9095
fmt:
9196
@$(RUFF) format .

README.md

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ Custom komponenta pro Home Assistant, založená na [async-bakalari-api3](https:
1010

1111
## 🚨 Breaking changes
1212

13+
- Verze 1.3.0 zavádí pro každý předmět jednotlivý senzor (dynamické generování podle dat z Bakalářů).
14+
- původní senzor `all_marks` již drží jen metadata pro Lovelace kartu
15+
- obsah metadat a co lze z tohoto senzoru získat viz níže.
16+
1317
Od verze 1.1.0 jsou již senzory migrovány pod `DeviceRegistry`
1418
- nově je každé dítě jako separátní `DeviceRegistry` (zařízení v HUBu) s jednotlivými senzory
1519
- `uid` senzoru se nezměnilo, ale změnil se název senzoru - nyní dědí jméno z `DeviceRegistry`
@@ -33,18 +37,50 @@ Od verze 1.1.0 jsou již senzory migrovány pod `DeviceRegistry`
3337

3438
- Zprávy
3539
- tento senzor stahuje zprávy za poslední měsíc
40+
- TODO: všechny zprávy za školní rok - problém je v limitu pro `recorder`\
41+
v plánu je lokální cache, aby se "nezatěžoval" senzor
3642

3743
- Rozvrh
3844
- tento senzor stahuje rozvrh na aktuální týden +- 7 dní
3945

4046
- Známky
41-
- ze školního serveru se již stahují všechny známky
42-
- známky jsou agregované per-předmět
47+
- každý předmět má nyní svůj vlastní senzro
48+
- původní senzor `all_marks` udržuje pouze metadata pro Lovelace kartu
49+
- ze školního serveru se již stahují všechny známky, zrušen limit 30 posledních
50+
- známky jsou agregované per-předmět a per-child
4351
- zobrazení poslední přijaté známky nadále funguje bez rozdílu
4452
- přidána možnost `fire_event` pro vyvolání události při nové známce, bude sloužit k oznámení např. v mobilní aplikaci
4553
- přidána možnost Websocketu
4654
- další funkcionality v následujících verzích
4755

56+
Příklad metadat v senzoru `Všechny známky`
57+
58+
```yaml
59+
friendly_names:
60+
- Český jazyk a literatura
61+
- Matematika
62+
...
63+
mapping_names:
64+
"2":
65+
name: Český jazyk a literatura
66+
abbr: ČJ
67+
"10":
68+
name: Matematika
69+
abbr: M
70+
sensor_map:
71+
"2": >-
72+
sensor.bakalari_...._znamky_cj_jméno_dítěte
73+
"10": >-
74+
sensor.bakalari_...._znamky_m_jméno_dítěte
75+
summary:
76+
wavg: "1.22"
77+
avg: "1.16"
78+
subjects: "8"
79+
total_marks: "105"
80+
total_point_marks: "0"
81+
total_non_point_marks: "105"
82+
```
83+
4884
## Karty pro Lovelace jsou nyní instalovány přes HACS ve vlastím [repozitáři](https://github.com/schizza/bakalari-ha-frontend).
4985
5086
- v HACS přidej repozitář `https://github.com/schizza/bakalari-ha-frontend`
@@ -60,8 +96,8 @@ Od verze 1.1.0 jsou již senzory migrovány pod `DeviceRegistry`
6096

6197
## Požadavky
6298

63-
- Home Assistant `2025.9.1+`
64-
- PyPI: `async-bakalari-api==0.6.0`
99+
- Home Assistant `2025.9.4+`
100+
- PyPI: `async-bakalari-api==0.7.0`
65101

66102
## Licence
67103

bump-bakalari.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[tool.bumpversion]
2-
current_version = "0.6.0"
2+
current_version = "0.7.0"
33
commit = false
44
tag = false
55

bump-ha.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ replace = 'pip install homeassistant=={new_version}'
2222
no-regex = true
2323

2424
[[tool.bumpversion.files]]
25-
filename = "custom_components/bakalari/const.py"
26-
search = 'API_VERSION: Final = "{current_version}"'
27-
replace = 'API_VERSION: Final = "{new_version}"'
25+
filename = "README.md"
26+
search = '- Home Assistant `{current_version}+`'
27+
replace = '- Home Assistant `{new_version}+`'
2828
no-regex = true

0 commit comments

Comments
 (0)