Running ruff check --force-exclude --fix --exit-non-zero-on-fix on my repository deletes some imports that are actually used.
The next time that I run ruff check ., it fails because of missing imports. The missing imports are the ones deleted by ruff.
Reproduction steps
Observed result
ruff deletes imports which are in the if TYPE_CHECKING block:
diff --git a/django_afip/serializers.py b/django_afip/serializers.py
index 34fa8b4..bc2eb57 100644
--- a/django_afip/serializers.py
+++ b/django_afip/serializers.py
@@ -11,13 +11,6 @@ if TYPE_CHECKING:
from datetime import date
from datetime import datetime
- from django.db.models import QuerySet
-
- from django_afip.models import AuthTicket
- from django_afip.models import Optional
- from django_afip.models import Receipt
- from django_afip.models import Tax
- from django_afip.models import Vat
Running ruff check now fails:
> ruff check
django_afip/serializers.py:43:30: F821 Undefined name `AuthTicket`
|
42 | @typing.no_type_check # zeep's dynamic types cannot be type-checked
43 | def serialize_ticket(ticket: AuthTicket): # noqa: ANN201
| ^^^^^^^^^^ F821
44 | return f.FEAuthRequest(
45 | Token=ticket.token,
|
django_afip/serializers.py:52:43: F821 Undefined name `QuerySet`
|
51 | @typing.no_type_check # zeep's dynamic types cannot be type-checked
52 | def serialize_multiple_receipts(receipts: QuerySet[Receipt]): # noqa: ANN201
| ^^^^^^^^ F821
53 | receipts = receipts.all().order_by("receipt_number")
|
django_afip/serializers.py:52:52: F821 Undefined name `Receipt`
|
51 | @typing.no_type_check # zeep's dynamic types cannot be type-checked
52 | def serialize_multiple_receipts(receipts: QuerySet[Receipt]): # noqa: ANN201
| ^^^^^^^ F821
53 | receipts = receipts.all().order_by("receipt_number")
|
django_afip/serializers.py:69:32: F821 Undefined name `Receipt`
|
68 | @typing.no_type_check # zeep's dynamic types cannot be type-checked
69 | def serialize_receipt(receipt: Receipt): # noqa: ANN201
| ^^^^^^^ F821
70 | taxes = receipt.taxes.all()
71 | vats = receipt.vat.all()
|
django_afip/serializers.py:128:24: F821 Undefined name `Tax`
|
127 | @typing.no_type_check # zeep's dynamic types cannot be type-checked
128 | def serialize_tax(tax: Tax): # noqa: ANN201
| ^^^ F821
129 | return f.Tributo(
130 | Id=tax.tax_type.code,
|
django_afip/serializers.py:139:24: F821 Undefined name `Vat`
|
138 | @typing.no_type_check # zeep's dynamic types cannot be type-checked
139 | def serialize_vat(vat: Vat): # noqa: ANN201
| ^^^ F821
140 | return f.AlicIva(
141 | Id=vat.vat_type.code,
|
django_afip/serializers.py:148:34: F821 Undefined name `Optional`
|
147 | @typing.no_type_check # zeep's dynamic types cannot be type-checked
148 | def serialize_optional(optional: Optional): # noqa: ANN201
| ^^^^^^^^ F821
149 | return f.Opcional(
150 | Id=optional.optional_type.code,
|
Found 7 errors.
Expected results
No change; ruff should not delete imports which are being used.
Additional details
- Using
ruff 0.8.1 from PyPI
- The issue is not reproducible with ruff 0.7.3
Running
ruff check --force-exclude --fix --exit-non-zero-on-fixon my repository deletes some imports that are actually used.The next time that I run
ruff check ., it fails because of missing imports. The missing imports are the ones deleted by ruff.Reproduction steps
Observed result
ruffdeletes imports which are in theif TYPE_CHECKINGblock:Running
ruff checknow fails:Expected results
No change; ruff should not delete imports which are being used.
Additional details
ruff 0.8.1from PyPI