Skip to content

Commit c2aabd9

Browse files
committed
v0.4.0: pyinstaller crashes the party
not really, but I had to move some stuff around
1 parent e697473 commit c2aabd9

File tree

7 files changed

+205
-95
lines changed

7 files changed

+205
-95
lines changed

nine-or-null/nine-or-null.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import nine_or_null.cli
2+
3+
nine_or_null.cli.start_cli()

nine-or-null/nine_or_null/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
_VERSION = '0.3.1'
1+
_VERSION = '0.4.0'
22

33
from datetime import datetime as dt
44
from enum import IntEnum
Lines changed: 2 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -1,94 +1,4 @@
1-
import os
2-
import sys
3-
import logging
4-
5-
from . import BiasKernel, KernelTarget, batch_process, guess_paradigm, _VERSION
6-
from .gui import start_gui
1+
from .cli import start_cli
72

83
if __name__ == '__main__':
9-
print(f'+9ms or Null? v{_VERSION}')
10-
11-
if len(sys.argv) <= 1:
12-
print('No path to simfile or pack provided. Entering GUI mode...')
13-
start_gui()
14-
print('Exiting GUI mode. Thank you for playing!')
15-
else:
16-
print('Entering CLI mode...')
17-
18-
root_path = sys.argv[1]
19-
20-
# Verify existence of root path
21-
if not os.path.isdir(root_path):
22-
sys.exit(f'Root directory doesn\'t exist: {root_path}')
23-
else:
24-
print(f"Root directory exists: {root_path}")
25-
26-
# Verify existence of root path
27-
report_path = os.path.join(root_path, '__bias-check')
28-
if not os.path.isdir(report_path):
29-
try:
30-
os.makedirs(report_path)
31-
print(f"Report directory created: {report_path}")
32-
except Exception as e:
33-
sys.exit(f'Report directory can\'t be created: {report_path}')
34-
else:
35-
print(f"Report directory exists: {report_path}")
36-
37-
# Set up logging
38-
log_path = os.path.join(report_path, 'nine-or-null.log')
39-
log_fmt = logging.Formatter(
40-
'[%(asctime)s.%(msecs)03d] %(levelname)-8s %(message)s',
41-
datefmt='%Y-%m-%d %H:%M:%S'
42-
)
43-
logging.basicConfig(
44-
filename=log_path,
45-
encoding='utf-8',
46-
level=logging.INFO
47-
)
48-
logging.getLogger().addHandler(logging.StreamHandler())
49-
for handler in logging.getLogger().handlers:
50-
handler.setFormatter(log_fmt)
51-
52-
# Default parameters.
53-
params = {}
54-
params['root_path'] = root_path
55-
params['report_path'] = report_path
56-
params['consider_null'] = True
57-
params['consider_p9ms'] = True
58-
params['tolerance'] = 3.0
59-
params['fingerprint_ms'] = 50
60-
params['window_ms'] = 10
61-
params['step_ms'] = 0.20
62-
params['kernel_target'] = KernelTarget.DIGEST
63-
params['kernel_type'] = BiasKernel.RISING
64-
params['magic_offset'] = 2.0
65-
66-
# Recall parameters.
67-
header_str = f'+9ms or Null? v{_VERSION} (CLI)'
68-
logging.info(f"{'=' * 20}{header_str:^32s}{'=' * 20}")
69-
logging.info('Parameter settings:')
70-
for k, v in params.items():
71-
logging.info(f'\t{k} = {v}')
72-
73-
fingerprints = batch_process(**params)
74-
75-
logging.info('-' * 72)
76-
logging.info(f"Sync bias report: {len(fingerprints)} fingerprints processed in {root_path}")
77-
78-
paradigm_count = {}
79-
for paradigm in ['+9ms', 'null', '????']:
80-
paradigm_map = {k: v for k, v in fingerprints.items() if guess_paradigm(v['bias_result']) == paradigm}
81-
logging.info(f"Files sync'd to {paradigm}: {len(paradigm_map)}")
82-
for k, v in paradigm_map.items():
83-
logging.info(f"\t{k:>50s}")
84-
logging.info(f"\t\tderived sync bias = {v['bias_result']:+0.1f} ms")
85-
paradigm_count[paradigm] = len(paradigm_map)
86-
87-
paradigm_most = sorted([k for k in paradigm_count], key=lambda k: paradigm_count.get(k, 0))
88-
logging.info('=' * 72)
89-
logging.info(f'Pack sync paradigm: {paradigm_most[-1]}')
90-
logging.info('-' * 72)
91-
92-
# Done!
93-
print('Exiting CLI mode. Thank you for playing!')
94-
4+
start_cli()

nine-or-null/nine_or_null/cli.py

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
import os
2+
import sys
3+
import logging
4+
5+
from . import BiasKernel, KernelTarget, batch_process, guess_paradigm, _VERSION
6+
from .gui import start_gui
7+
8+
def start_cli():
9+
print(f'+9ms or Null? v{_VERSION}')
10+
11+
if len(sys.argv) <= 1:
12+
print('No path to simfile or pack provided. Entering GUI mode...')
13+
start_gui()
14+
print('Exiting GUI mode. Thank you for playing!')
15+
else:
16+
print('Entering CLI mode...')
17+
18+
root_path = sys.argv[1]
19+
20+
# Verify existence of root path
21+
if not os.path.isdir(root_path):
22+
sys.exit(f'Root directory doesn\'t exist: {root_path}')
23+
else:
24+
print(f"Root directory exists: {root_path}")
25+
26+
# Verify existence of root path
27+
report_path = os.path.join(root_path, '__bias-check')
28+
if not os.path.isdir(report_path):
29+
try:
30+
os.makedirs(report_path)
31+
print(f"Report directory created: {report_path}")
32+
except Exception as e:
33+
sys.exit(f'Report directory can\'t be created: {report_path}')
34+
else:
35+
print(f"Report directory exists: {report_path}")
36+
37+
# Set up logging
38+
log_path = os.path.join(report_path, 'nine-or-null.log')
39+
log_fmt = logging.Formatter(
40+
'[%(asctime)s.%(msecs)03d] %(levelname)-8s %(message)s',
41+
datefmt='%Y-%m-%d %H:%M:%S'
42+
)
43+
logging.basicConfig(
44+
filename=log_path,
45+
encoding='utf-8',
46+
level=logging.INFO
47+
)
48+
logging.getLogger().addHandler(logging.StreamHandler())
49+
for handler in logging.getLogger().handlers:
50+
handler.setFormatter(log_fmt)
51+
52+
# Default parameters.
53+
params = {}
54+
params['root_path'] = root_path
55+
params['report_path'] = report_path
56+
params['consider_null'] = True
57+
params['consider_p9ms'] = True
58+
params['tolerance'] = 3.0
59+
params['fingerprint_ms'] = 50
60+
params['window_ms'] = 10
61+
params['step_ms'] = 0.20
62+
params['kernel_target'] = KernelTarget.DIGEST
63+
params['kernel_type'] = BiasKernel.RISING
64+
params['magic_offset'] = 2.0
65+
66+
# Recall parameters.
67+
header_str = f'+9ms or Null? v{_VERSION} (CLI)'
68+
logging.info(f"{'=' * 20}{header_str:^32s}{'=' * 20}")
69+
logging.info('Parameter settings:')
70+
for k, v in params.items():
71+
logging.info(f'\t{k} = {v}')
72+
73+
fingerprints = batch_process(**params)
74+
75+
logging.info('-' * 72)
76+
logging.info(f"Sync bias report: {len(fingerprints)} fingerprints processed in {root_path}")
77+
78+
paradigm_count = {}
79+
for paradigm in ['+9ms', 'null', '????']:
80+
paradigm_map = {k: v for k, v in fingerprints.items() if guess_paradigm(v['bias_result']) == paradigm}
81+
logging.info(f"Files sync'd to {paradigm}: {len(paradigm_map)}")
82+
for k, v in paradigm_map.items():
83+
logging.info(f"\t{k:>50s}")
84+
logging.info(f"\t\tderived sync bias = {v['bias_result']:+0.1f} ms")
85+
paradigm_count[paradigm] = len(paradigm_map)
86+
87+
paradigm_most = sorted([k for k in paradigm_count], key=lambda k: paradigm_count.get(k, 0))
88+
logging.info('=' * 72)
89+
logging.info(f'Pack sync paradigm: {paradigm_most[-1]}')
90+
logging.info('-' * 72)
91+
92+
# Done!
93+
print('Exiting CLI mode. Thank you for playing!')
94+
95+
96+
if __name__ == '__main__':
97+
start_cli()

nine-or-null/nine_or_null/gui.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -603,7 +603,7 @@ def OnExit(self, event):
603603
self.Close(True)
604604

605605
def OnHelp(self, event):
606-
wx.LaunchDefaultBrowser('https://github.com/telperion')
606+
wx.LaunchDefaultBrowser('https://github.com/telperion/nine-or-null')
607607

608608
def OnAbout(self, event):
609609
dlg = AboutWithLinks(self, wx.ID_ABOUT, title=f'About +9ms or Null? v{_VERSION}')

nine-or-null/poetry.lock

Lines changed: 98 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

nine-or-null/pyproject.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ scipy = "^1.10.1"
1717
simfile = "^2.1.1"
1818

1919

20+
[tool.poetry.group.dev.dependencies]
21+
pyinstaller = "^5.9.0"
22+
2023
[build-system]
2124
requires = ["poetry-core"]
2225
build-backend = "poetry.core.masonry.api"

0 commit comments

Comments
 (0)