Compare commits

..

No commits in common. "90e30821ebbd9354cf4b16bf312b4bcfec0b94f1" and "b450fd10fe7fb9a4ff9e7c059ec750cb0947c634" have entirely different histories.

5 changed files with 20 additions and 61 deletions

View File

@ -13,6 +13,7 @@
Requirements:
* python >= 3.10 (written and tested with 3.11)
* numpy
Install with pip:

View File

@ -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'

View File

@ -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]

View File

@ -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 <![CDATA[...]]>
def _escape_cdata(text: str) -> str:
def _escape_cdata(text):
if text.startswith('<![CDATA[') and text.endswith(']]>'):
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))

View File

@ -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
]