diff --git a/README.md b/README.md index d0a8815..8dc93e1 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ Requirements: * python >= 3.10 (written and tested with 3.11) +* numpy Install with pip: diff --git a/g85/__init__.py b/g85/__init__.py index 69c0e4b..8df75f7 100644 --- a/g85/__init__.py +++ b/g85/__init__.py @@ -1,9 +1,6 @@ -from .main import ( - Map as Map, - Device as Device, - ) -from .read import read as read -from .write import write as write +from .main import Map, Device +from .read import read +from .write import write __author__ = 'Jan Petykiewicz' -__version__ = '0.7' +__version__ = '0.6' diff --git a/g85/read.py b/g85/read.py index 8c4a924..9fd2317 100644 --- a/g85/read.py +++ b/g85/read.py @@ -58,24 +58,22 @@ def read_devices(el_map: ElementTree.Element) -> list[Device]: device = Device(BinType=bin_type, NullBin=null_bin) + val: Any for key, val in el_device.attrib.items(): if key in ('BinType', 'NullBin'): continue - parsed_val: Any if key in ('WaferSize', 'DeviceSizeX', 'DeviceSizeY', 'Orientation'): - parsed_val = float(val) + val = float(val) elif key in ('OriginLocation',): - parsed_val = int(val) + val = int(val) elif key == 'CreateDate': - parsed_val = datetime.datetime.strptime(val + '000', '%Y%m%d%H%M%S%f') - else: - parsed_val = val + val = datetime.datetime.strptime(val + '000', '%Y%m%d%H%M%S%f') if key in dev_fields and key[0].isupper(): - setattr(device, key, parsed_val) + setattr(device, key, val) else: - device.misc[key] = parsed_val + device.misc[key] = val for el_entry in el_device: tag = _tag(el_entry) @@ -139,7 +137,7 @@ def read_row(el_row: ElementTree.Element) -> list[str]: def _tag(element: ElementTree.Element) -> str: - """ + ''' Get the element's tag, excluding any namespaces. - """ + ''' return element.tag.split('}')[-1] diff --git a/g85/write.py b/g85/write.py index e0c0bd3..06d4726 100644 --- a/g85/write.py +++ b/g85/write.py @@ -1,5 +1,4 @@ -from typing import TextIO, cast -from collections.abc import Sequence +from typing import Sequence, TextIO, cast import logging import math from dataclasses import fields @@ -11,15 +10,12 @@ from .main import Map, Device logger = logging.getLogger(__name__) -class G85Error(Exception): - pass - - # Hack to directly pass through -def _escape_cdata(text: str) -> str: +def _escape_cdata(text): if text.startswith(''): return text - return _original_escape_cdata(text) + else: + return _original_escape_cdata(text) _original_escape_cdata = ElementTree._escape_cdata # type: ignore @@ -68,7 +64,7 @@ def write_devices(devices: Sequence[Device], el_map: ElementTree.Element) -> Non # Row data prep if device.map is None: - raise G85Error(f'No _data for device pformat({device})') + raise Exception(f'No _data for device pformat({device})') is_decimal = device.BinType == 'Decimal' row_texts, bin_length = prepare_data(device.map, decimal=is_decimal) @@ -140,7 +136,7 @@ def prepare_data(data: list[list[str]] | list[list[int]], decimal: bool) -> tupl row_text = ' '.join(srow) + ' ' row_texts.append(row_text) return row_texts, char_len - else: # noqa: RET505 + else: data = cast(list[list[int]], data) max_value = max(max(rr) for rr in data) max_digits = math.ceil(math.log10(max_value)) diff --git a/pyproject.toml b/pyproject.toml index 3aef2fb..3d9e1e2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,41 +38,8 @@ classifiers = [ requires-python = ">=3.10" dynamic = ["version"] dependencies = [ + "numpy~=1.21", ] [tool.hatch.version] path = "g85/__init__.py" - - -[tool.ruff] -exclude = [ - ".git", - "dist", - ] -line-length = 145 -indent-width = 4 -lint.dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" -lint.select = [ - "NPY", "E", "F", "W", "B", "ANN", "UP", "SLOT", "SIM", "LOG", - "C4", "ISC", "PIE", "PT", "RET", "TCH", "PTH", "INT", - "ARG", "PL", "R", "TRY", - "G010", "G101", "G201", "G202", - "Q002", "Q003", "Q004", - ] -lint.ignore = [ - #"ANN001", # No annotation - "ANN002", # *args - "ANN003", # **kwargs - "ANN401", # Any - "ANN101", # self: Self - "SIM108", # single-line if / else assignment - "RET504", # x=y+z; return x - "PIE790", # unnecessary pass - "ISC003", # non-implicit string concatenation - "C408", # dict(x=y) instead of {'x': y} - "PLR09", # Too many xxx - "PLR2004", # magic number - "PLC0414", # import x as x - "TRY003", # Long exception message - ] -