diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index bb667ef..9093aac 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -11,3 +11,9 @@ repos: - id: debug-statements - id: end-of-file-fixer - id: trailing-whitespace + + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.6.8 + hooks: + - id: ruff-format + - id: ruff diff --git a/drf_excel/fields.py b/drf_excel/fields.py index 582c02f..f6b390b 100644 --- a/drf_excel/fields.py +++ b/drf_excel/fields.py @@ -85,13 +85,14 @@ def __init__(self, **kwargs): super().__init__(**kwargs) def init_value(self, value): - with contextlib.suppress(Exception): - if isinstance(self.drf_field, IntegerField) and type(value) != int: + if isinstance(self.drf_field, IntegerField) and type(value) is not int: return int(value) - elif isinstance(self.drf_field, FloatField) and type(value) != float: + elif isinstance(self.drf_field, FloatField) and type(value) is not float: return float(value) - elif isinstance(self.drf_field, DecimalField) and type(value) != Decimal: + elif ( + isinstance(self.drf_field, DecimalField) and type(value) is not Decimal + ): return Decimal(value) return value @@ -129,18 +130,24 @@ def init_value(self, value): try: if ( isinstance(self.drf_field, DateTimeField) - and type(value) != datetime.datetime + and type(value) is not datetime.datetime ): return self._parse_date( value, "DATETIME_FORMAT", parse_datetime ).replace(tzinfo=None) - elif isinstance(self.drf_field, DateField) and type(value) != datetime.date: + elif ( + isinstance(self.drf_field, DateField) + and type(value) is not datetime.date + ): return self._parse_date(value, "DATE_FORMAT", parse_date) - elif isinstance(self.drf_field, TimeField) and type(value) != datetime.time: + elif ( + isinstance(self.drf_field, TimeField) + and type(value) is not datetime.time + ): return self._parse_date(value, "TIME_FORMAT", parse_time).replace( tzinfo=None ) - except: + except Exception: pass return value @@ -160,7 +167,11 @@ def __init__(self, list_sep, **kwargs): super().__init__(**kwargs) def prep_value(self) -> Any: - if len(self.value) > 0 and isinstance(self.value[0], Iterable) and not isinstance(self.value[0], str): + if ( + len(self.value) > 0 + and isinstance(self.value[0], Iterable) + and not isinstance(self.value[0], str) + ): # array of array; write as json return json.dumps(self.value, ensure_ascii=False) else: diff --git a/drf_excel/mixins.py b/drf_excel/mixins.py index 49b1d7c..8877a6d 100644 --- a/drf_excel/mixins.py +++ b/drf_excel/mixins.py @@ -21,9 +21,7 @@ def finalize_response(self, request, response, *args, **kwargs): Return the response with the proper content disposition and the customized filename instead of the browser default (or lack thereof). """ - response = super().finalize_response( - request, response, *args, **kwargs - ) + response = super().finalize_response(request, response, *args, **kwargs) if ( isinstance(response, Response) and response.accepted_renderer.format == "xlsx" diff --git a/drf_excel/renderers.py b/drf_excel/renderers.py index 26892aa..87fe774 100644 --- a/drf_excel/renderers.py +++ b/drf_excel/renderers.py @@ -266,7 +266,11 @@ def _flatten_serializer_keys( def _get_label(parent_label, label_sep, obj): if getattr(v, "label", None): - return f"{parent_label}{label_sep}{v.label}" if parent_label else str(v.label) + return ( + f"{parent_label}{label_sep}{v.label}" + if parent_label + else str(v.label) + ) else: return False @@ -346,9 +350,7 @@ def _make_body(self, body, row, row_count): if "row_color" in row: last_letter = get_column_letter(column_count) - cell_range = self.ws[ - f"A{row_count}" : f"{last_letter}{row_count}" - ] + cell_range = self.ws[f"A{row_count}" : f"{last_letter}{row_count}"] fill = PatternFill(fill_type="solid", start_color=row["row_color"]) for r in cell_range: