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:
parent
9b7fba55b6
commit
a9fff24848
11 changed files with 16 additions and 15 deletions
|
|
@ -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())
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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):
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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>')
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue