Fix all mypy and eslint errors, add copilot lint instructions

Backend (mypy - 56 errors fixed):
- database.py: Fix async generator return type to AsyncGenerator
- database_models.py: Add type annotations for SQLEnum columns
- middleware.py: Use explicit Optional for exempt_paths parameter
- mail_processor.py: Fix type narrowing in fetch_emails, add Dict type annotation for KNOWN_PROVIDERS
- users.py, auth.py, providers.py, tasks.py: Add type: ignore comments for SQLAlchemy Column assignment patterns

Frontend (eslint - 3 errors, 2 warnings fixed):
- login/page.tsx: Replace any with unknown + type narrowing, prefix unused vars with underscore
- register/page.tsx: Replace any with unknown + type narrowing

Add .github/copilot-instructions.md with lint-check requirements

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
Agent-Logs-Url: https://github.com/christianlouis/pop_puller_to_gmail/sessions/dac7ab78-fe27-4fe4-890f-32c6c1c6d881
This commit is contained in:
copilot-swe-agent[bot]
2026-03-23 10:48:16 +00:00
parent a918421945
commit 27c50e49cf
11 changed files with 98 additions and 59 deletions
+10 -6
View File
@@ -85,7 +85,9 @@ class User(Base):
oauth_provider = Column(String(50), nullable=True)
# Subscription
subscription_tier = Column(SQLEnum(SubscriptionTier), default=SubscriptionTier.FREE)
subscription_tier: Column[str] = Column(
SQLEnum(SubscriptionTier), default=SubscriptionTier.FREE
)
subscription_status = Column(
String(50), default="active"
) # active, canceled, past_due
@@ -127,7 +129,7 @@ class MailAccount(Base):
email_address = Column(String(255), nullable=False)
# Server configuration
protocol = Column(SQLEnum(MailProtocol), default=MailProtocol.POP3_SSL)
protocol: Column[str] = Column(SQLEnum(MailProtocol), default=MailProtocol.POP3_SSL)
host = Column(String(255), nullable=False)
port = Column(Integer, nullable=False)
use_ssl = Column(Boolean, default=True)
@@ -141,10 +143,12 @@ class MailAccount(Base):
forward_to = Column(String(255), nullable=False)
# Delivery method
delivery_method = Column(SQLEnum(DeliveryMethod), default=DeliveryMethod.GMAIL_API)
delivery_method: Column[str] = Column(
SQLEnum(DeliveryMethod), default=DeliveryMethod.GMAIL_API
)
# Status and settings
status = Column(SQLEnum(AccountStatus), default=AccountStatus.ACTIVE)
status: Column[str] = Column(SQLEnum(AccountStatus), default=AccountStatus.ACTIVE)
is_enabled = Column(Boolean, default=True)
check_interval_minutes = Column(Integer, default=5)
max_emails_per_check = Column(Integer, default=50)
@@ -263,7 +267,7 @@ class NotificationConfig(Base):
)
# Channel details
channel = Column(SQLEnum(NotificationChannel), nullable=False)
channel: Column[str] = Column(SQLEnum(NotificationChannel), nullable=False)
is_enabled = Column(Boolean, default=True)
# Channel-specific configuration (stored as JSON)
@@ -329,7 +333,7 @@ class SubscriptionPlan(Base):
id = Column(Integer, primary_key=True, index=True)
# Plan details
tier = Column(SQLEnum(SubscriptionTier), unique=True, nullable=False)
tier: Column[str] = Column(SQLEnum(SubscriptionTier), unique=True, nullable=False)
name = Column(String(100), nullable=False)
description = Column(Text, nullable=True)