Explicitly specify encoding

The update to pylint means we were failing because open()
doesn't specify the encoding everywhere.  I have now specified utf-8
everywhere.  This was patchy before, and is default behaviour on the
Pi.  There's a slim chance it will cause some issues on Windows, but
that shouldn't affect anyone outside the developers.

I've also ignored a couple of new spurious warnings, and explicitly
ignored some unused variables.
This commit is contained in:
Richard Bowman 2022-08-09 07:16:44 +01:00
parent 9b7fba55b6
commit a9fff24848
11 changed files with 16 additions and 15 deletions

View file

@ -261,10 +261,10 @@ def generate_openapi():
if fname.endswith(".json"): if fname.endswith(".json"):
import json import json
with open(fname, "w") as fd: with open(fname, "w", encoding="utf-8") as fd:
json.dump(labthing.spec.to_dict(), fd) json.dump(labthing.spec.to_dict(), fd)
else: else:
with open(fname, "w") as fd: with open(fname, "w", encoding="utf-8") as fd:
fd.write(labthing.spec.to_yaml()) fd.write(labthing.spec.to_yaml())

View file

@ -245,7 +245,7 @@ def extension_action(args=None):
# Run the action # Run the action
return func(self.extension, **arguments) return func(self.extension, **arguments)
def get(self, *args, **kwargs): # pylint: disable=useless-super-delegation def get(self, *args, **kwargs): # pylint: disable=useless-super-delegation,arguments-differ
# Explicitly wrap the `get` method to allow us to add a docstring # Explicitly wrap the `get` method to allow us to add a docstring
return super().get(*args, **kwargs) return super().get(*args, **kwargs)

View file

@ -200,7 +200,7 @@ class CSMExtension(BaseExtension):
"linear_calibration_y": cal_y, "linear_calibration_y": cal_y,
} }
with open(CSM_DATAFILE_PATH, "w") as f: with open(CSM_DATAFILE_PATH, "w", encoding="utf-8") as f:
json.dump(data, f, cls=JSONEncoder) json.dump(data, f, cls=JSONEncoder)
return data return data

View file

@ -81,7 +81,7 @@ def init_default_extensions(extension_dir: str):
create_file(default_ext_path) create_file(default_ext_path)
logging.info("Populating %s...", (default_ext_path)) logging.info("Populating %s...", (default_ext_path))
with open(default_ext_path, "w") as outfile: with open(default_ext_path, "w", encoding="utf-8") as outfile:
outfile.write(_DEFAULT_EXTENSION_INIT) outfile.write(_DEFAULT_EXTENSION_INIT)

View file

@ -54,7 +54,7 @@ class FrameStream(io.BytesIO):
t: Optional[Type[BaseException]], t: Optional[Type[BaseException]],
value: Optional[BaseException], value: Optional[BaseException],
traceback: Optional[TracebackType], traceback: Optional[TracebackType],
) -> Optional[bool]: ) -> None:
self.stop_tracking() self.stop_tracking()
return super().__exit__(t, value, traceback) return super().__exit__(t, value, traceback)

View file

@ -120,7 +120,8 @@ class CaptureObject(object):
logging.debug("Finished writing to disk %s", self.file) logging.debug("Finished writing to disk %s", self.file)
def open(self, mode): def open(self, mode):
return open(self.file, mode) # We don't specify an encoding because this will be a binary file.
return open(self.file, mode) # pylint: disable=unspecified-encoding
def split_file_path(self, filepath: str): def split_file_path(self, filepath: str):
""" """

View file

@ -88,7 +88,7 @@ def load_json_file(config_path) -> dict:
logging.info("Loading %s...", config_path) logging.info("Loading %s...", config_path)
with open(config_path) as config_file: with open(config_path, encoding="utf-8") as config_file:
try: try:
config_data = json.load(config_file) config_data = json.load(config_file)
except json.decoder.JSONDecodeError as e: except json.decoder.JSONDecodeError as e:
@ -112,7 +112,7 @@ def save_json_file(config_path: str, config_dict: dict):
logging.info("Saving %s...", config_path) logging.info("Saving %s...", config_path)
logging.debug(config_dict) logging.debug(config_dict)
with open(config_path, "w") as outfile: with open(config_path, "w", encoding="utf-8") as outfile:
json.dump(config_dict, outfile, cls=JSONEncoder, indent=2, sort_keys=True) json.dump(config_dict, outfile, cls=JSONEncoder, indent=2, sort_keys=True)
@ -150,7 +150,7 @@ def initialise_file(config_path, populate: str = "{}\n"):
create_file(config_path) create_file(config_path)
logging.info("Populating %s...", (config_path)) logging.info("Populating %s...", (config_path))
with open(config_path, "w") as outfile: with open(config_path, "w", encoding="utf-8") as outfile:
outfile.write(populate) outfile.write(populate)

View file

@ -26,7 +26,7 @@ def main():
try: try:
import picamerax import picamerax
except Exception as e: # pylint: disable=W0703 except Exception as _: # pylint: disable=W0703
error_sources.append(PICAMERA_IMPORT_ERROR) error_sources.append(PICAMERA_IMPORT_ERROR)
else: else:
try: try:

View file

@ -20,7 +20,7 @@ def main():
# Try connecting on the specified port # Try connecting on the specified port
try: try:
stage = Sangaboard(stage_port) stage = Sangaboard(stage_port)
except FileNotFoundError as e: except FileNotFoundError as _:
if stage_port: if stage_port:
error_sources.append( error_sources.append(
ErrorSource( ErrorSource(

View file

@ -31,7 +31,7 @@ def script_directory(path):
def get_meta(): def get_meta():
with open(script_directory("metadata.yaml")) as f: with open(script_directory("metadata.yaml"), encoding="utf-8") as f:
metadata = f.read() metadata = f.read()
return yaml.safe_load(metadata) return yaml.safe_load(metadata)
@ -51,7 +51,7 @@ def main():
zenodo.upload_file(deposit["id"], path) zenodo.upload_file(deposit["id"], path)
link = deposit["links"]["latest_draft_html"] link = deposit["links"]["latest_draft_html"]
with open("zenodo-link.html", "w") as f: with open("zenodo-link.html", "w", encoding="utf-8") as f:
f.write(f'<a href="{link}">{link}</a>') f.write(f'<a href="{link}">{link}</a>')

View file

@ -28,7 +28,7 @@ def test_thing_description_valid():
# TODO: it would be nice to put this into LabThings # TODO: it would be nice to put this into LabThings
# First load the schema from file and check it validates # First load the schema from file and check it validates
schema_fname = os.path.join(os.path.dirname(__file__), "w3c_td_schema.json") schema_fname = os.path.join(os.path.dirname(__file__), "w3c_td_schema.json")
schema = json.load(open(schema_fname, "r")) schema = json.load(open(schema_fname, "r"), encoding="utf-8")
jsonschema.Draft7Validator.check_schema(schema) jsonschema.Draft7Validator.check_schema(schema)
# Build a TD dictionary # Build a TD dictionary