fablazing-cli 0.2.0__tar.gz → 0.2.2__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 (20) hide show
  1. {fablazing_cli-0.2.0 → fablazing_cli-0.2.2}/CHANGELOG.md +11 -0
  2. {fablazing_cli-0.2.0 → fablazing_cli-0.2.2}/PKG-INFO +1 -1
  3. {fablazing_cli-0.2.0 → fablazing_cli-0.2.2}/pyproject.toml +1 -1
  4. fablazing_cli-0.2.2/src/fablazing_cli/__init__.py +1 -0
  5. {fablazing_cli-0.2.0 → fablazing_cli-0.2.2}/src/fablazing_cli/commands/matchup.py +18 -1
  6. {fablazing_cli-0.2.0 → fablazing_cli-0.2.2}/src/fablazing_cli/reference.py +8 -4
  7. fablazing_cli-0.2.0/src/fablazing_cli/__init__.py +0 -1
  8. {fablazing_cli-0.2.0 → fablazing_cli-0.2.2}/.gitignore +0 -0
  9. {fablazing_cli-0.2.0 → fablazing_cli-0.2.2}/README.md +0 -0
  10. {fablazing_cli-0.2.0 → fablazing_cli-0.2.2}/src/fablazing_cli/client.py +0 -0
  11. {fablazing_cli-0.2.0 → fablazing_cli-0.2.2}/src/fablazing_cli/commands/__init__.py +0 -0
  12. {fablazing_cli-0.2.0 → fablazing_cli-0.2.2}/src/fablazing_cli/commands/auth.py +0 -0
  13. {fablazing_cli-0.2.0 → fablazing_cli-0.2.2}/src/fablazing_cli/commands/card.py +0 -0
  14. {fablazing_cli-0.2.0 → fablazing_cli-0.2.2}/src/fablazing_cli/commands/hero.py +0 -0
  15. {fablazing_cli-0.2.0 → fablazing_cli-0.2.2}/src/fablazing_cli/commands/meta.py +0 -0
  16. {fablazing_cli-0.2.0 → fablazing_cli-0.2.2}/src/fablazing_cli/commands/tournaments.py +0 -0
  17. {fablazing_cli-0.2.0 → fablazing_cli-0.2.2}/src/fablazing_cli/config.py +0 -0
  18. {fablazing_cli-0.2.0 → fablazing_cli-0.2.2}/src/fablazing_cli/main.py +0 -0
  19. {fablazing_cli-0.2.0 → fablazing_cli-0.2.2}/src/fablazing_cli/output.py +0 -0
  20. {fablazing_cli-0.2.0 → fablazing_cli-0.2.2}/src/fablazing_cli/resolve.py +0 -0
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.2
4
+
5
+ - Reference: name the exact `meets_threshold` field on tech candidates and
6
+ document `data_through` on matchup responses (newest ingested match)
7
+
8
+ ## 0.2.1
9
+
10
+ - Matchup: when no card clears the tech-card significance bar (common in
11
+ close matchups), show the closest candidates with their scores instead
12
+ of an empty section
13
+
3
14
  ## 0.2.0
4
15
 
5
16
  - `fabz meta matrix`: matchup matrix for the top-N heroes (win rate +
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fablazing-cli
3
- Version: 0.2.0
3
+ Version: 0.2.2
4
4
  Summary: Fablazing analytics from your terminal - Flesh and Blood matchups, meta, cards, and tournaments.
5
5
  Project-URL: Homepage, https://fablazing.com
6
6
  Author: Fablazing
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fablazing-cli"
7
- version = "0.2.0"
7
+ version = "0.2.2"
8
8
  description = "Fablazing analytics from your terminal - Flesh and Blood matchups, meta, cards, and tournaments."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -0,0 +1 @@
1
+ __version__ = "0.2.2"
@@ -92,12 +92,29 @@ def matchup(
92
92
  c.get("card_id", ""),
93
93
  pct(c.get("frequency")),
94
94
  pct(c.get("win_rate")),
95
- f"+{c.get('wilson_improvement', 0) * 100:.1f}%",
95
+ f"{c.get('wilson_improvement', 0) * 100:+.1f}%",
96
96
  c.get("match_count", ""),
97
97
  ]
98
98
  for c in tech[:top]
99
99
  ]
100
100
  tables.append((f"{name} - tech cards (Wilson outperformers)", ["Card", "Freq", "WR", "Wilson delta", "Matches"], tech_rows))
101
+ candidates = data.get(f"{deck_key}_tech_candidates")
102
+ if not tech and candidates:
103
+ cand_rows = [
104
+ [
105
+ c.get("card_id", ""),
106
+ pct(c.get("frequency")),
107
+ pct(c.get("win_rate")),
108
+ f"{c.get('wilson_improvement', 0) * 100:+.1f}%",
109
+ c.get("match_count", ""),
110
+ ]
111
+ for c in candidates[:top]
112
+ ]
113
+ tables.append((
114
+ f"{name} - tech candidates (none met the significance bar)",
115
+ ["Card", "Freq", "WR", "Wilson delta", "Matches"],
116
+ cand_rows,
117
+ ))
101
118
 
102
119
  game_length = data.get("game_length") or {}
103
120
  turns = game_length.get("turns") or {}
@@ -33,13 +33,17 @@ analytics and paper tournament results for competitive Flesh and Blood.
33
33
  Teklovossen) are stored under their base hero id, with transform stats
34
34
  in deck1_transform / deck2_transform.
35
35
  - Tech cards are Wilson-scored against the matchup baseline, so a lucky
36
- streak on a small sample doesn't make the list.
36
+ streak on a small sample doesn't make the list. In close matchups no
37
+ card may clear the bar - then `deck{1,2}_tech_candidates` lists the
38
+ closest near-misses with their scores; each entry carries
39
+ `meets_threshold: false` (that field, exactly) and the response
40
+ includes a `deck{1,2}_tech_note` explaining the situation.
37
41
  - Tournament standings and decklists come from official paper events.
38
42
  - Freshness: `matchup` queries live match data (ingested every ~5
39
43
  minutes). Meta snapshot/movers and card trends/popular are daily
40
- aggregates (previous day processed at 03:00 / 02:00 UTC) - their
41
- responses carry `data_through` in meta so you can see exactly how
42
- fresh the numbers are.
44
+ aggregates (previous day processed at 03:00 / 02:00 UTC). Every one of
45
+ these responses carries `data_through` in meta - for matchup it is the
46
+ newest ingested match, for aggregates the latest processed day.
43
47
 
44
48
  ## Commands
45
49
  - `fablazing matchup EVO001 "Jarl" --days 30`
@@ -1 +0,0 @@
1
- __version__ = "0.2.0"
File without changes
File without changes