draftomen 0.3.0__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.
- draftomen-0.3.0/LICENSE +21 -0
- draftomen-0.3.0/PKG-INFO +156 -0
- draftomen-0.3.0/README.md +129 -0
- draftomen-0.3.0/draftomen/__init__.py +17 -0
- draftomen-0.3.0/draftomen/assets/draftomen.icns +0 -0
- draftomen-0.3.0/draftomen/assets/draftomen.ico +0 -0
- draftomen-0.3.0/draftomen/assets/draftomen_logo.png +0 -0
- draftomen-0.3.0/draftomen/audit.py +606 -0
- draftomen-0.3.0/draftomen/backtest.py +449 -0
- draftomen-0.3.0/draftomen/benchmark.py +834 -0
- draftomen-0.3.0/draftomen/carddb.py +1869 -0
- draftomen-0.3.0/draftomen/cardimages.py +313 -0
- draftomen-0.3.0/draftomen/cli.py +891 -0
- draftomen-0.3.0/draftomen/config.py +133 -0
- draftomen-0.3.0/draftomen/deckbuilder.py +2723 -0
- draftomen-0.3.0/draftomen/events.py +772 -0
- draftomen-0.3.0/draftomen/logfollow.py +451 -0
- draftomen-0.3.0/draftomen/mock_session.py +745 -0
- draftomen-0.3.0/draftomen/paths.py +120 -0
- draftomen-0.3.0/draftomen/pickengine.py +1117 -0
- draftomen-0.3.0/draftomen/pool.py +1259 -0
- draftomen-0.3.0/draftomen/preferences.py +289 -0
- draftomen-0.3.0/draftomen/qml/AboutDialog.qml +156 -0
- draftomen-0.3.0/draftomen/qml/AppBar.qml +120 -0
- draftomen-0.3.0/draftomen/qml/BacktestView.qml +316 -0
- draftomen-0.3.0/draftomen/qml/BuildView.qml +1151 -0
- draftomen-0.3.0/draftomen/qml/CardPreview.qml +434 -0
- draftomen-0.3.0/draftomen/qml/DimensionalButton.qml +42 -0
- draftomen-0.3.0/draftomen/qml/DimensionalComboBox.qml +182 -0
- draftomen-0.3.0/draftomen/qml/DimensionalSurface.qml +118 -0
- draftomen-0.3.0/draftomen/qml/DimensionalTabButton.qml +41 -0
- draftomen-0.3.0/draftomen/qml/LiveDraftView.qml +468 -0
- draftomen-0.3.0/draftomen/qml/Main.qml +175 -0
- draftomen-0.3.0/draftomen/qml/NavigationRail.qml +226 -0
- draftomen-0.3.0/draftomen/qml/PoolSummaryPanel.qml +322 -0
- draftomen-0.3.0/draftomen/qml/PrivacyDialog.qml +96 -0
- draftomen-0.3.0/draftomen/qml/RecentPickThumbnail.qml +83 -0
- draftomen-0.3.0/draftomen/qml/RecentPicksGallery.qml +333 -0
- draftomen-0.3.0/draftomen/qml/RecommendationRow.qml +404 -0
- draftomen-0.3.0/draftomen/qml/SettingsSwitch.qml +141 -0
- draftomen-0.3.0/draftomen/qml/SettingsView.qml +531 -0
- draftomen-0.3.0/draftomen/qml/StateBanner.qml +189 -0
- draftomen-0.3.0/draftomen/qml/StatusStrip.qml +84 -0
- draftomen-0.3.0/draftomen/qml/Theme.qml +71 -0
- draftomen-0.3.0/draftomen/qml/qmldir +23 -0
- draftomen-0.3.0/draftomen/qt_adapter.py +884 -0
- draftomen-0.3.0/draftomen/qt_gui.py +338 -0
- draftomen-0.3.0/draftomen/qt_mock.py +63 -0
- draftomen-0.3.0/draftomen/ranking.py +126 -0
- draftomen-0.3.0/draftomen/replay.py +480 -0
- draftomen-0.3.0/draftomen/session.py +3668 -0
- draftomen-0.3.0/draftomen/setinfo.py +26 -0
- draftomen-0.3.0/draftomen/seventeen.py +2766 -0
- draftomen-0.3.0/draftomen/splash.py +617 -0
- draftomen-0.3.0/draftomen/tui.py +4007 -0
- draftomen-0.3.0/draftomen/watch.py +336 -0
- draftomen-0.3.0/draftomen.egg-info/PKG-INFO +156 -0
- draftomen-0.3.0/draftomen.egg-info/SOURCES.txt +87 -0
- draftomen-0.3.0/draftomen.egg-info/dependency_links.txt +1 -0
- draftomen-0.3.0/draftomen.egg-info/entry_points.txt +6 -0
- draftomen-0.3.0/draftomen.egg-info/requires.txt +3 -0
- draftomen-0.3.0/draftomen.egg-info/top_level.txt +1 -0
- draftomen-0.3.0/pyproject.toml +126 -0
- draftomen-0.3.0/setup.cfg +4 -0
- draftomen-0.3.0/tests/test_audit.py +379 -0
- draftomen-0.3.0/tests/test_backtest.py +179 -0
- draftomen-0.3.0/tests/test_benchmark.py +283 -0
- draftomen-0.3.0/tests/test_carddb.py +501 -0
- draftomen-0.3.0/tests/test_cardimages.py +285 -0
- draftomen-0.3.0/tests/test_cli.py +716 -0
- draftomen-0.3.0/tests/test_deckbuilder.py +1264 -0
- draftomen-0.3.0/tests/test_desktop_bundle.py +256 -0
- draftomen-0.3.0/tests/test_events.py +473 -0
- draftomen-0.3.0/tests/test_extract_changelog.py +144 -0
- draftomen-0.3.0/tests/test_logfollow.py +250 -0
- draftomen-0.3.0/tests/test_mock_session.py +166 -0
- draftomen-0.3.0/tests/test_paths.py +52 -0
- draftomen-0.3.0/tests/test_pickengine.py +1042 -0
- draftomen-0.3.0/tests/test_pool.py +433 -0
- draftomen-0.3.0/tests/test_preferences.py +239 -0
- draftomen-0.3.0/tests/test_qt_adapter.py +1124 -0
- draftomen-0.3.0/tests/test_qt_gui.py +4126 -0
- draftomen-0.3.0/tests/test_qt_mock.py +116 -0
- draftomen-0.3.0/tests/test_render_homebrew_formula.py +127 -0
- draftomen-0.3.0/tests/test_replay.py +278 -0
- draftomen-0.3.0/tests/test_session.py +3176 -0
- draftomen-0.3.0/tests/test_seventeen.py +571 -0
- draftomen-0.3.0/tests/test_tui.py +2888 -0
- draftomen-0.3.0/tests/test_watch.py +600 -0
draftomen-0.3.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Andrea Grandi
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
draftomen-0.3.0/PKG-INFO
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: draftomen
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: An unofficial Quick Draft assistant for MTG Arena
|
|
5
|
+
Author: Andrea Grandi
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/andreagrandi/draftomen
|
|
8
|
+
Project-URL: Repository, https://github.com/andreagrandi/draftomen
|
|
9
|
+
Project-URL: Issues, https://github.com/andreagrandi/draftomen/issues
|
|
10
|
+
Keywords: draft,magic-the-gathering,mtg-arena,terminal,tui
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
14
|
+
Classifier: Operating System :: MacOS
|
|
15
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Topic :: Games/Entertainment
|
|
20
|
+
Requires-Python: >=3.12
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
License-File: LICENSE
|
|
23
|
+
Requires-Dist: pyside6<7,>=6.9
|
|
24
|
+
Requires-Dist: textual>=8.2.8
|
|
25
|
+
Requires-Dist: textual-image>=0.13.2
|
|
26
|
+
Dynamic: license-file
|
|
27
|
+
|
|
28
|
+
<p align="center">
|
|
29
|
+
<img src="https://raw.githubusercontent.com/andreagrandi/draftomen/master/docs/assets/draftomen_banner.png" alt="Draft Omen banner" width="100%">
|
|
30
|
+
</p>
|
|
31
|
+
|
|
32
|
+
# Draft Omen
|
|
33
|
+
|
|
34
|
+
Draft Omen is an unofficial desktop draft assistant for MTG Arena Quick Drafts. Its PySide6/QML application reads Arena's local `Player.log`, recognizes each pack and pick, and ranks the available cards while you draft. When the draft is complete, it also suggests a 40-card deck from your pool. A terminal interface with the same draft behavior is available as `draftomen-tui`.
|
|
35
|
+
|
|
36
|
+
Draft Omen is read-only: it does not write to, inject into, or automate MTG Arena. Card details come from [Scryfall](https://scryfall.com/) and draft statistics come from [17Lands](https://www.17lands.com/).
|
|
37
|
+
|
|
38
|
+
## Screenshots
|
|
39
|
+
|
|
40
|
+
### Live Draft GUI — pick recommendations
|
|
41
|
+
|
|
42
|
+
The Live Draft view shows Pack 1, Pick 3 with 12 cards available and Glóin the Mighty selected. Its DO Score, 17Lands win rate, grade, and color fit appear alongside focused-card details and a pool summary.
|
|
43
|
+
|
|
44
|
+

|
|
45
|
+
|
|
46
|
+
### Suggested deck GUI
|
|
47
|
+
|
|
48
|
+
After the draft, the Suggested deck view shows an automatic UR pair and a 40-card build with 23 spells, 17 lands, a mana base and curve, grouped main-deck spells, and selected-card details.
|
|
49
|
+
|
|
50
|
+

|
|
51
|
+
|
|
52
|
+
## How recommendations work
|
|
53
|
+
|
|
54
|
+
Draft Omen keeps the data behind every recommendation visible instead of presenting a black-box pick order:
|
|
55
|
+
|
|
56
|
+
- **17Lands ratings:** each card shows its Games-in-Hand win rate (`17L WR`) and a 17Lands-style grade. Quick Draft data is preferred; Premier Draft data is used as a fallback when Quick Draft samples are missing or too small.
|
|
57
|
+
- **DO Score:** the default 0-100 ranking normalizes 17Lands win rates across the set. A card without a reliable sample starts from a neutral score of 50, adjusted by its Average Last Seen At (`ALSA`) when available. The five freely available basic lands instead score 0 and rank after draftable cards.
|
|
58
|
+
- **Color fit:** early picks stay open. From pick 6 onward, scores gradually favor the colors supported by the drafted pool; from pick 16, on-color cards receive the full bonus and off-color cards the full penalty. Strong picks influence the inferred color pair more than filler.
|
|
59
|
+
- **Close early picks:** when two cards have similar scores, set- and format-specific 17Lands color-pair win rates can break the tie without forcing an early commitment.
|
|
60
|
+
- **Conservative splashing:** an `A`-range, single-pip card can be marked as a visible third-color splash when it is materially better than the on-color choices and the pool can support its mana. Draft Omen limits this to one extra color and two cards.
|
|
61
|
+
- **Transparent alternatives:** press `s` to compare rankings by DO Score, raw 17Lands win rate, ALSA, or mana value. The interface also identifies neutral-prior and Premier-fallback rows.
|
|
62
|
+
- **Deck suggestion:** the builder evaluates two-color pairs using card quality and 17Lands pair performance, then chooses spells and lands while considering creatures, curve, colored mana requirements, and cached 17Lands deck-structure targets when available.
|
|
63
|
+
|
|
64
|
+
DO Score is the default because it performed better than raw 17Lands win rate in Draft Omen's offline pick benchmarks. It is still guidance rather than a perfect pick order: public statistics reflect the decks, players, and contexts in which cards were played.
|
|
65
|
+
|
|
66
|
+
For the complete methodology, see [pick scoring](docs/pick-scoring.md), [benchmarking](docs/benchmarking.md), and the [deck builder](docs/deck-builder.md).
|
|
67
|
+
|
|
68
|
+
## How to use it
|
|
69
|
+
|
|
70
|
+
### 1. Install
|
|
71
|
+
|
|
72
|
+
On macOS, install Draft Omen with Homebrew:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
brew install andreagrandi/tap/draftomen
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
On other platforms, [install uv](https://docs.astral.sh/uv/getting-started/installation/) and run:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
uv tool install draftomen
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### 2. Enable Arena logs
|
|
85
|
+
|
|
86
|
+
In MTG Arena, open **Settings → Account**, enable **Detailed Logs (Plugin Support)**, and restart Arena.
|
|
87
|
+
|
|
88
|
+
### 3. Start Draft Omen
|
|
89
|
+
|
|
90
|
+
Start Draft Omen before entering a Quick Draft:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
draftomen
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
The PySide6/QML desktop application loads card metadata when needed, watches
|
|
97
|
+
Arena's standard log location, detects the set, and follows the draft
|
|
98
|
+
automatically. If 17Lands ratings are not cached for that set, it offers to
|
|
99
|
+
download them.
|
|
100
|
+
|
|
101
|
+
### Terminal interface
|
|
102
|
+
|
|
103
|
+
For a terminal workflow, use the stable `draftomen-tui` command. It preserves
|
|
104
|
+
the watch, replay, build, backtest, benchmark, and data-refresh subcommands,
|
|
105
|
+
including plain-text mode:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
draftomen-tui
|
|
109
|
+
draftomen-tui watch --plain
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Use the arrow keys or `j`/`k` to browse cards, `s` to change the ranking,
|
|
113
|
+
`b` to open the current build, `c` to configure the view and optional splash
|
|
114
|
+
recommendations, and `q` to quit.
|
|
115
|
+
|
|
116
|
+
### Visual development
|
|
117
|
+
|
|
118
|
+
For deterministic visual development, launch the explicit forced-mock entry
|
|
119
|
+
point:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
draftomen-gui-mockup
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
For an automated, non-interactive GUI smoke check, use the default command
|
|
126
|
+
with its mock provider and bounded smoke flag:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
QT_QPA_PLATFORM=offscreen draftomen --provider mock --smoke-test
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
See the [desktop GUI guide](docs/gui-mockup.md) for live and mock launch
|
|
133
|
+
options, selectable states, and responsive review targets. For reproducible
|
|
134
|
+
unsigned development bundles, see the [desktop bundle guide](docs/desktop-bundles.md).
|
|
135
|
+
|
|
136
|
+
Live recommendations currently support Quick Draft. Windows support is best-effort.
|
|
137
|
+
|
|
138
|
+
## Local draft audit data
|
|
139
|
+
|
|
140
|
+
Live sessions started with `draftomen-tui`, including `watch --plain`, keep an
|
|
141
|
+
independent, append-only JSONL audit log for every draft under
|
|
142
|
+
`~/.draftomen/audit/drafts/<account-id>/<draft-id>.jsonl`. Each record includes
|
|
143
|
+
the offered pack, pool snapshot, ratings source, scoring configuration, complete
|
|
144
|
+
candidate calculations, splash eligibility and mana-source reasoning, all
|
|
145
|
+
supported rankings, the recommendation visible when the pick was made, and the
|
|
146
|
+
card actually chosen. Stable record IDs prevent
|
|
147
|
+
startup scans and log rotation from rewriting prior evidence.
|
|
148
|
+
|
|
149
|
+
Offline `replay` and backtest commands do not write audit records. For the schema
|
|
150
|
+
and retention details, see [draft audit logging](docs/draft-audit-log.md).
|
|
151
|
+
|
|
152
|
+
## Branding and compliance
|
|
153
|
+
|
|
154
|
+
Draft Omen is not affiliated with, sponsored by, approved by, or endorsed by Wizards of the Coast, Scryfall, or 17Lands.
|
|
155
|
+
|
|
156
|
+
Draft Omen is unofficial Fan Content permitted under the Fan Content Policy. Not approved/endorsed by Wizards. Portions of the materials used are property of Wizards of the Coast. ©Wizards of the Coast LLC. Card data from Scryfall and 17Lands; neither service endorses this tool.
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://raw.githubusercontent.com/andreagrandi/draftomen/master/docs/assets/draftomen_banner.png" alt="Draft Omen banner" width="100%">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
# Draft Omen
|
|
6
|
+
|
|
7
|
+
Draft Omen is an unofficial desktop draft assistant for MTG Arena Quick Drafts. Its PySide6/QML application reads Arena's local `Player.log`, recognizes each pack and pick, and ranks the available cards while you draft. When the draft is complete, it also suggests a 40-card deck from your pool. A terminal interface with the same draft behavior is available as `draftomen-tui`.
|
|
8
|
+
|
|
9
|
+
Draft Omen is read-only: it does not write to, inject into, or automate MTG Arena. Card details come from [Scryfall](https://scryfall.com/) and draft statistics come from [17Lands](https://www.17lands.com/).
|
|
10
|
+
|
|
11
|
+
## Screenshots
|
|
12
|
+
|
|
13
|
+
### Live Draft GUI — pick recommendations
|
|
14
|
+
|
|
15
|
+
The Live Draft view shows Pack 1, Pick 3 with 12 cards available and Glóin the Mighty selected. Its DO Score, 17Lands win rate, grade, and color fit appear alongside focused-card details and a pool summary.
|
|
16
|
+
|
|
17
|
+

|
|
18
|
+
|
|
19
|
+
### Suggested deck GUI
|
|
20
|
+
|
|
21
|
+
After the draft, the Suggested deck view shows an automatic UR pair and a 40-card build with 23 spells, 17 lands, a mana base and curve, grouped main-deck spells, and selected-card details.
|
|
22
|
+
|
|
23
|
+

|
|
24
|
+
|
|
25
|
+
## How recommendations work
|
|
26
|
+
|
|
27
|
+
Draft Omen keeps the data behind every recommendation visible instead of presenting a black-box pick order:
|
|
28
|
+
|
|
29
|
+
- **17Lands ratings:** each card shows its Games-in-Hand win rate (`17L WR`) and a 17Lands-style grade. Quick Draft data is preferred; Premier Draft data is used as a fallback when Quick Draft samples are missing or too small.
|
|
30
|
+
- **DO Score:** the default 0-100 ranking normalizes 17Lands win rates across the set. A card without a reliable sample starts from a neutral score of 50, adjusted by its Average Last Seen At (`ALSA`) when available. The five freely available basic lands instead score 0 and rank after draftable cards.
|
|
31
|
+
- **Color fit:** early picks stay open. From pick 6 onward, scores gradually favor the colors supported by the drafted pool; from pick 16, on-color cards receive the full bonus and off-color cards the full penalty. Strong picks influence the inferred color pair more than filler.
|
|
32
|
+
- **Close early picks:** when two cards have similar scores, set- and format-specific 17Lands color-pair win rates can break the tie without forcing an early commitment.
|
|
33
|
+
- **Conservative splashing:** an `A`-range, single-pip card can be marked as a visible third-color splash when it is materially better than the on-color choices and the pool can support its mana. Draft Omen limits this to one extra color and two cards.
|
|
34
|
+
- **Transparent alternatives:** press `s` to compare rankings by DO Score, raw 17Lands win rate, ALSA, or mana value. The interface also identifies neutral-prior and Premier-fallback rows.
|
|
35
|
+
- **Deck suggestion:** the builder evaluates two-color pairs using card quality and 17Lands pair performance, then chooses spells and lands while considering creatures, curve, colored mana requirements, and cached 17Lands deck-structure targets when available.
|
|
36
|
+
|
|
37
|
+
DO Score is the default because it performed better than raw 17Lands win rate in Draft Omen's offline pick benchmarks. It is still guidance rather than a perfect pick order: public statistics reflect the decks, players, and contexts in which cards were played.
|
|
38
|
+
|
|
39
|
+
For the complete methodology, see [pick scoring](docs/pick-scoring.md), [benchmarking](docs/benchmarking.md), and the [deck builder](docs/deck-builder.md).
|
|
40
|
+
|
|
41
|
+
## How to use it
|
|
42
|
+
|
|
43
|
+
### 1. Install
|
|
44
|
+
|
|
45
|
+
On macOS, install Draft Omen with Homebrew:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
brew install andreagrandi/tap/draftomen
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
On other platforms, [install uv](https://docs.astral.sh/uv/getting-started/installation/) and run:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
uv tool install draftomen
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 2. Enable Arena logs
|
|
58
|
+
|
|
59
|
+
In MTG Arena, open **Settings → Account**, enable **Detailed Logs (Plugin Support)**, and restart Arena.
|
|
60
|
+
|
|
61
|
+
### 3. Start Draft Omen
|
|
62
|
+
|
|
63
|
+
Start Draft Omen before entering a Quick Draft:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
draftomen
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
The PySide6/QML desktop application loads card metadata when needed, watches
|
|
70
|
+
Arena's standard log location, detects the set, and follows the draft
|
|
71
|
+
automatically. If 17Lands ratings are not cached for that set, it offers to
|
|
72
|
+
download them.
|
|
73
|
+
|
|
74
|
+
### Terminal interface
|
|
75
|
+
|
|
76
|
+
For a terminal workflow, use the stable `draftomen-tui` command. It preserves
|
|
77
|
+
the watch, replay, build, backtest, benchmark, and data-refresh subcommands,
|
|
78
|
+
including plain-text mode:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
draftomen-tui
|
|
82
|
+
draftomen-tui watch --plain
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Use the arrow keys or `j`/`k` to browse cards, `s` to change the ranking,
|
|
86
|
+
`b` to open the current build, `c` to configure the view and optional splash
|
|
87
|
+
recommendations, and `q` to quit.
|
|
88
|
+
|
|
89
|
+
### Visual development
|
|
90
|
+
|
|
91
|
+
For deterministic visual development, launch the explicit forced-mock entry
|
|
92
|
+
point:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
draftomen-gui-mockup
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
For an automated, non-interactive GUI smoke check, use the default command
|
|
99
|
+
with its mock provider and bounded smoke flag:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
QT_QPA_PLATFORM=offscreen draftomen --provider mock --smoke-test
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
See the [desktop GUI guide](docs/gui-mockup.md) for live and mock launch
|
|
106
|
+
options, selectable states, and responsive review targets. For reproducible
|
|
107
|
+
unsigned development bundles, see the [desktop bundle guide](docs/desktop-bundles.md).
|
|
108
|
+
|
|
109
|
+
Live recommendations currently support Quick Draft. Windows support is best-effort.
|
|
110
|
+
|
|
111
|
+
## Local draft audit data
|
|
112
|
+
|
|
113
|
+
Live sessions started with `draftomen-tui`, including `watch --plain`, keep an
|
|
114
|
+
independent, append-only JSONL audit log for every draft under
|
|
115
|
+
`~/.draftomen/audit/drafts/<account-id>/<draft-id>.jsonl`. Each record includes
|
|
116
|
+
the offered pack, pool snapshot, ratings source, scoring configuration, complete
|
|
117
|
+
candidate calculations, splash eligibility and mana-source reasoning, all
|
|
118
|
+
supported rankings, the recommendation visible when the pick was made, and the
|
|
119
|
+
card actually chosen. Stable record IDs prevent
|
|
120
|
+
startup scans and log rotation from rewriting prior evidence.
|
|
121
|
+
|
|
122
|
+
Offline `replay` and backtest commands do not write audit records. For the schema
|
|
123
|
+
and retention details, see [draft audit logging](docs/draft-audit-log.md).
|
|
124
|
+
|
|
125
|
+
## Branding and compliance
|
|
126
|
+
|
|
127
|
+
Draft Omen is not affiliated with, sponsored by, approved by, or endorsed by Wizards of the Coast, Scryfall, or 17Lands.
|
|
128
|
+
|
|
129
|
+
Draft Omen is unofficial Fan Content permitted under the Fan Content Policy. Not approved/endorsed by Wizards. Portions of the materials used are property of Wizards of the Coast. ©Wizards of the Coast LLC. Card data from Scryfall and 17Lands; neither service endorses this tool.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"""Package metadata for Draftomen.
|
|
2
|
+
Keep shared version and disclaimer text in one place.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from importlib.metadata import PackageNotFoundError, version
|
|
6
|
+
|
|
7
|
+
try:
|
|
8
|
+
__version__ = version(distribution_name="draftomen")
|
|
9
|
+
except PackageNotFoundError:
|
|
10
|
+
__version__ = "0.0.0+unknown"
|
|
11
|
+
|
|
12
|
+
DISCLAIMER = (
|
|
13
|
+
"Draft Omen is unofficial Fan Content permitted under the Fan Content Policy. "
|
|
14
|
+
"Not approved/endorsed by Wizards. Portions of the materials used are property "
|
|
15
|
+
"of Wizards of the Coast. ©Wizards of the Coast LLC. Card data from 17Lands "
|
|
16
|
+
"(17lands.com); 17Lands does not endorse this tool."
|
|
17
|
+
)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|