diff --git a/masque/file/gdsii.py b/masque/file/gdsii.py index a28979d..11e1574 100644 --- a/masque/file/gdsii.py +++ b/masque/file/gdsii.py @@ -597,19 +597,19 @@ def load_libraryfile( path = pathlib.Path(filename) stream: IO[bytes] if is_gzipped(path): - if mmap: + if use_mmap: logger.info('Asked to mmap a gzipped file, reading into memory instead...') - gz_stream = gzip.open(path, mode='rb') + gz_stream = gzip.open(path, mode='rb') # noqa: SIM115 stream = io.BytesIO(gz_stream.read()) # type: ignore else: - gz_stream = gzip.open(path, mode='rb') + gz_stream = gzip.open(path, mode='rb') # noqa: SIM115 stream = io.BufferedReader(gz_stream) # type: ignore else: # noqa: PLR5501 - if mmap: - base_stream = open(path, mode='rb', buffering=0) + if use_mmap: + base_stream = path.open(mode='rb', buffering=0) # noqa: SIM115 stream = mmap.mmap(base_stream.fileno(), 0, access=mmap.ACCESS_READ) # type: ignore else: - stream = open(path, mode='rb') + stream = path.open(mode='rb') # noqa: SIM115 return load_library(stream, full_load=full_load, postprocess=postprocess) diff --git a/masque/file/utils.py b/masque/file/utils.py index 95248ae..33f68d4 100644 --- a/masque/file/utils.py +++ b/masque/file/utils.py @@ -129,7 +129,7 @@ def clean_pattern_vertices(pat: Pattern) -> Pattern: def is_gzipped(path: pathlib.Path) -> bool: - with open(path, 'rb') as stream: + with path.open('rb') as stream: magic_bytes = stream.read(2) return magic_bytes == b'\x1f\x8b' diff --git a/masque/pattern.py b/masque/pattern.py index e500d1d..47f64c5 100644 --- a/masque/pattern.py +++ b/masque/pattern.py @@ -296,7 +296,7 @@ class Pattern(PortList, AnnotatableImpl, Mirrorable): if not annotations_eq(self.annotations, other.annotations): return False - if not ports_eq(self.ports, other.ports): + if not ports_eq(self.ports, other.ports): # noqa: SIM103 return False return True @@ -595,8 +595,7 @@ class Pattern(PortList, AnnotatableImpl, Mirrorable): if (cbounds[1] < cbounds[0]).any(): return None - else: - return cbounds + return cbounds def get_bounds_nonempty( self, @@ -617,7 +616,7 @@ class Pattern(PortList, AnnotatableImpl, Mirrorable): Returns: `[[x_min, y_min], [x_max, y_max]]` """ - bounds = self.get_bounds(library) + bounds = self.get_bounds(library, recurse=recurse) assert bounds is not None return bounds @@ -954,7 +953,7 @@ class Pattern(PortList, AnnotatableImpl, Mirrorable): Returns: self """ - flattened: dict[str | None, 'Pattern | None'] = {} + flattened: dict[str | None, Pattern | None] = {} def flatten_single(name: str | None) -> None: if name is None: diff --git a/masque/repetition.py b/masque/repetition.py index 972f3b7..68b6b19 100644 --- a/masque/repetition.py +++ b/masque/repetition.py @@ -289,7 +289,7 @@ class Grid(Repetition): return True if self.b_vector is None or other.b_vector is None: return False - if any(self.b_vector[ii] != other.b_vector[ii] for ii in range(2)): + if any(self.b_vector[ii] != other.b_vector[ii] for ii in range(2)): # noqa: SIM103 return False return True diff --git a/masque/shapes/arc.py b/masque/shapes/arc.py index da10d0d..8d14f0f 100644 --- a/masque/shapes/arc.py +++ b/masque/shapes/arc.py @@ -286,7 +286,7 @@ class Arc(Shape): return thetas wh = self.width / 2.0 - if wh == r0 or wh == r1: + if wh in (r0, r1): thetas_inner = numpy.zeros(1) # Don't generate multiple vertices if we're at the origin else: thetas_inner = get_thetas(inner=True) @@ -308,7 +308,7 @@ class Arc(Shape): return [poly] def get_bounds_single(self) -> NDArray[numpy.float64]: - ''' + """ Equation for rotated ellipse is `x = x0 + a * cos(t) * cos(rot) - b * sin(t) * sin(phi)` `y = y0 + a * cos(t) * sin(rot) + b * sin(t) * cos(rot)` @@ -319,7 +319,7 @@ class Arc(Shape): where -+ is for x, y cases, so that's where the extrema are. If the extrema are innaccessible due to arc constraints, check the arc endpoints instead. - ''' + """ a_ranges = self._angles_to_parameters() mins = [] @@ -424,13 +424,13 @@ class Arc(Shape): )) def get_cap_edges(self) -> NDArray[numpy.float64]: - ''' + """ Returns: ``` [[[x0, y0], [x1, y1]], array of 4 points, specifying the two cuts which [[x2, y2], [x3, y3]]], would create this arc from its corresponding ellipse. ``` - ''' + """ a_ranges = self._angles_to_parameters() mins = [] @@ -454,11 +454,11 @@ class Arc(Shape): return numpy.array([mins, maxs]) + self.offset def _angles_to_parameters(self) -> NDArray[numpy.float64]: - ''' + """ Returns: "Eccentric anomaly" parameter ranges for the inner and outer edges, in the form `[[a_min_inner, a_max_inner], [a_min_outer, a_max_outer]]` - ''' + """ a = [] for sgn in (-1, +1): wh = sgn * self.width / 2 diff --git a/masque/shapes/path.py b/masque/shapes/path.py index bfaf14f..dfd89f1 100644 --- a/masque/shapes/path.py +++ b/masque/shapes/path.py @@ -431,22 +431,22 @@ class Path(Shape): return self def remove_duplicate_vertices(self) -> 'Path': - ''' + """ Removes all consecutive duplicate (repeated) vertices. Returns: self - ''' + """ self.vertices = remove_duplicate_vertices(self.vertices, closed_path=False) return self def remove_colinear_vertices(self) -> 'Path': - ''' + """ Removes consecutive co-linear vertices. Returns: self - ''' + """ self.vertices = remove_colinear_vertices(self.vertices, closed_path=False) return self diff --git a/masque/shapes/polygon.py b/masque/shapes/polygon.py index 1d52489..f6add4d 100644 --- a/masque/shapes/polygon.py +++ b/masque/shapes/polygon.py @@ -415,22 +415,22 @@ class Polygon(Shape): return self def remove_duplicate_vertices(self) -> 'Polygon': - ''' + """ Removes all consecutive duplicate (repeated) vertices. Returns: self - ''' + """ self.vertices = remove_duplicate_vertices(self.vertices, closed_path=True) return self def remove_colinear_vertices(self) -> 'Polygon': - ''' + """ Removes consecutive co-linear vertices. Returns: self - ''' + """ self.vertices = remove_colinear_vertices(self.vertices, closed_path=True) return self diff --git a/masque/traits/copyable.py b/masque/traits/copyable.py index 91af84b..c652aff 100644 --- a/masque/traits/copyable.py +++ b/masque/traits/copyable.py @@ -1,9 +1,8 @@ from typing import Self -from abc import ABCMeta import copy -class Copyable(metaclass=ABCMeta): +class Copyable: """ Trait class which adds .copy() and .deepcopy() """