diff --git a/.github/workflows/autofix.yml b/.github/workflows/autofix.yml index 0cae2ef552..a210bdb481 100644 --- a/.github/workflows/autofix.yml +++ b/.github/workflows/autofix.yml @@ -53,6 +53,8 @@ jobs: # Fix forward references that were incorrectly converted (Python doesn't support "Type" | None syntax) find . -name "*.py" -type f -exec sed -i.bak -E 's/"([^"]+)" \| None/Optional["\1"]/g; s/'"'"'([^'"'"']+)'"'"' \| None/Optional['"'"'\1'"'"']/g' {} \; find . -name "*.py.bak" -type f -delete + # Rewrite SQLAlchemy with Type Annotations + uvx --from ast-grep-cli sg scan -r dev/ast-grep/rules/remove-nullable-arg.yaml api/models -U - name: mdformat run: | diff --git a/api/models/model.py b/api/models/model.py index 9b7db259dd..665287fbaf 100644 --- a/api/models/model.py +++ b/api/models/model.py @@ -1778,7 +1778,7 @@ class MessageAgentThought(Base): answer_price_unit = mapped_column(sa.Numeric(10, 7), nullable=False, server_default=sa.text("0.001")) tokens: Mapped[int | None] = mapped_column(sa.Integer, nullable=True) total_price = mapped_column(sa.Numeric, nullable=True) - currency = mapped_column(String, nullable=True) + currency: Mapped[str | None] = mapped_column() latency: Mapped[float | None] = mapped_column(sa.Float, nullable=True) created_by_role = mapped_column(String, nullable=False) created_by = mapped_column(StringUUID, nullable=False) diff --git a/dev/ast-grep/rules/remove-nullable-arg.yaml b/dev/ast-grep/rules/remove-nullable-arg.yaml new file mode 100644 index 0000000000..b101d4b2e4 --- /dev/null +++ b/dev/ast-grep/rules/remove-nullable-arg.yaml @@ -0,0 +1,30 @@ +id: remove-nullable-arg +language: python +rule: + pattern: $X = mapped_column($$$ARGS) + any: + - pattern: $X = mapped_column($$$BEFORE, String, $$$MID, nullable=True, $$$AFTER) + - pattern: $X = mapped_column($$$BEFORE, String, $$$MID, nullable=True) +rewriters: +- id: filter-string-nullable + rule: + pattern: $ARG + inside: + kind: argument_list + all: + - not: + pattern: String + - not: + pattern: + context: a(nullable=True) + selector: keyword_argument + fix: $ARG + +transform: + NEWARGS: + rewrite: + rewriters: [filter-string-nullable] + source: $$$ARGS + joinBy: ', ' +fix: |- + $X: Mapped[str | None] = mapped_column($NEWARGS)