1
0
mirror of https://github.com/EDCD/EDMarketConnector.git synced 2025-04-12 15:27:14 +03:00

loadout.py: flake8 & mypy pass

* Catch if an empty string (or other not-None Falsey value) is passed in.
* Use pathlib for constructed filename.
This commit is contained in:
Athanasius 2022-12-03 12:01:26 +00:00
parent 37ca1c3c19
commit 485a1e3bb4
No known key found for this signature in database
GPG Key ID: 772697E181BB2767

View File

@ -1,48 +1,67 @@
# Export ship loadout in Companion API json format
"""Export ship loadout in Companion API json format."""
import json
import os
from os.path import join
import pathlib
import re
import time
from os.path import join
from typing import Optional
from config import config
import companion
import util_ships
from config import config
from EDMCLogging import get_main_logger
logger = get_main_logger()
def export(data, filename=None):
def export(data: companion.CAPIData, requested_filename: Optional[str] = None) -> None:
"""
Write Ship Loadout in Companion API JSON format.
:param data: CAPI data containing ship loadout.
:param requested_filename: Name of file to write to.
"""
string = json.dumps(
companion.ship(data), cls=companion.CAPIDataEncoder,
ensure_ascii=False, indent=2, sort_keys=True, separators=(',', ': ')
) # pretty print
if filename:
with open(filename, 'wt') as h:
if requested_filename is not None and requested_filename:
with open(requested_filename, 'wt') as h:
h.write(string)
return
elif not requested_filename:
logger.error(f"{requested_filename=} is not valid")
return
# Look for last ship of this type
ship = util_ships.ship_file_name(data['ship'].get('shipName'), data['ship']['name'])
regexp = re.compile(re.escape(ship) + '\.\d\d\d\d\-\d\d\-\d\dT\d\d\.\d\d\.\d\d\.txt')
regexp = re.compile(re.escape(ship) + r'\.\d\d\d\d\-\d\d\-\d\dT\d\d\.\d\d\.\d\d\.txt')
oldfiles = sorted([x for x in os.listdir(config.get_str('outdir')) if regexp.match(x)])
if oldfiles:
with open(join(config.get_str('outdir'), oldfiles[-1]), 'rU') as h:
if h.read() == string:
return # same as last time - don't write
return # same as last time - don't write
querytime = config.get_int('querytime', default=int(time.time()))
query_time = config.get_int('querytime', default=int(time.time()))
# Write
#
# When this is refactored into multi-line CHECK IT WORKS, avoiding the
# brainfart we had with dangling commas in commodity.py:export() !!!
#
filename = join(config.get_str('outdir'), '%s.%s.txt' % (ship, time.strftime('%Y-%m-%dT%H.%M.%S', time.localtime(querytime))))
output_path = pathlib.Path(config.get_str('outdir'))
output_filename = pathlib.Path(
ship + '.' + time.strftime('%Y-%m-%dT%H.%M.%S', time.localtime(query_time)) + '.txt'
)
# Can't re-use `filename`, different type
file_name = output_path / output_filename
#
# When this is refactored into multi-line CHECK IT WORKS, avoiding the
# brainfart we had with dangling commas in commodity.py:export() !!!
#
with open(filename, 'wt') as h:
with open(file_name, 'wt') as h:
h.write(string)