Skip to content

chore(deps): upgrade mypy to 2.1.0#58446

Merged
rnegron merged 15 commits into
masterfrom
worktree-mypy-2-upgrade
May 20, 2026
Merged

chore(deps): upgrade mypy to 2.1.0#58446
rnegron merged 15 commits into
masterfrom
worktree-mypy-2-upgrade

Conversation

@rnegron
Copy link
Copy Markdown
Member

@rnegron rnegron commented May 13, 2026

Problem

Mypy 2.x adds parallel type checking via --num-workers N (2.0 release notes); this PR moves us off 1.x so CI and local dev can use it.

Performance

Local timings on the same machine (M-series, full 8169-file project):

Scenario mypy 1.19.1 mypy 2.1.0 (MYPY_NUM_WORKERS=2) Speedup
Cold cache 105.9 s 41.1 s 2.6 ×
Warm cache 18.7 s 20.4 s ~1.0 ×

The win is on cold cache, which is what local devs hit on every branch switch and what CI hits whenever pyproject.toml changes.
Warm-cache is flat because mypy 1.x already had little left to do; the workers add small startup overhead that nets out near zero.

Reference master CI baseline for the same step over recent successful runs: Check static typing averages ~93 s warm-cache on depot-ubuntu-latest.
Branch CI required busting the .mypy_cache cache key (added a mypy2- segment) — mypy 2 reading a 1.x cache hangs the runner.
Fresh branch CI timing will populate this row once a green run lands; the local cold-cache speedup is the closest proxy until then.

Changes

  • Bump mypy~=2.1.0 in pyproject.toml and enable parallel workers in the CI mypy step via MYPY_NUM_WORKERS=2
  • Bust the mypy cache key (mypy2- segment) so the cache restore-key fallback doesn't hand mypy 2 a stale 1.x cache
  • Code adjustments for mypy 2.x's stricter narrowing:
    • cast(...) where 1.x's decorator-aware narrowing was implicit (e.g. request.user after @session_auth_required)
    • bytes(...) wrappers around Django BinaryField reads under PEP 688 / --strict-bytes
    • A handful of # type: ignore[unreachable] / [comparison-overlap] annotations on lines where 2.x's narrowing is more aggressive than 1.x's

Runtime impact: none

This PR is purely type-check level. Every call-site audited:

  • typing.cast(T, x) — identity function at runtime (def cast(typ, val): return val). Cannot raise.
  • bytes(...) wraps — five sites, all on Django BinaryField values. PostHog runs psycopg3, which already returns bytes for bytea, so bytes(bytes) is a defensive no-op. Theoretical psycopg2 memoryview case is strictly safer (e.g. parse_contents would actually decode where master silently returned None).
  • All bytes(...) sites are either guarded by a None-check, wrapped in a pre-existing try/except, or paired with an explicit early-return on falsy input.

No business logic, control flow, or exception handling changes.

How did you test this code?

I'm an agent. Verification I actually ran:

  • mypy --cache-fine-grained . on the merged tree — clean (8169 source files, 0 errors)
  • ruff check and ruff format --check on the changed files — clean
  • uv lock re-resolves cleanly with the override
  • Cold/warm-cache timings against mypy 1.19.1 and mypy 2.1.0 locally (table above)
  • Triple-checked every bytes() and cast() site against caller flow and field nullability

No manual product testing. Django and product test suites need to run in CI.

Publish to changelog?

no

Docs update

n/a

🤖 Agent context

Claude Code!

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 13, 2026

🎭 Playwright didn't run on this PR — your changes touch code that could affect E2E behavior, but Playwright is opt-in via label now to keep CI cost down.

Add the run-playwright label if you want an E2E sweep before merging — CI will pick it up automatically.

Most PRs don't need this. Real regressions still get caught on master and fix-forward.

@rnegron rnegron changed the title Worktree mypy 2 upgrade chore(deps): upgrade mypy to 2.1.0 May 15, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 15, 2026

✅ Hobby deploy smoke test: PASSED

Hobby deployment smoke test passed successfully.


Run 26166355549

@github-actions
Copy link
Copy Markdown
Contributor

Size Change: +6.81 kB (+0.01%)

Total Size: 118 MB

📦 View Changed
Filename Size Change
frontend/dist/WorkflowScene 110 kB +6.81 kB (+6.57%) 🔍
ℹ️ View Unchanged
Filename Size Change
frontend/dist/368Hedgehogs 5.47 kB 0 B
frontend/dist/abap 14.2 kB 0 B
frontend/dist/AccountConnected 2.99 kB 0 B
frontend/dist/Action 24.9 kB 0 B
frontend/dist/Actions 1.2 kB 0 B
frontend/dist/AdvancedActivityLogsScene 39.9 kB 0 B
frontend/dist/AgenticAuthorize 5.7 kB 0 B
frontend/dist/apex 3.99 kB 0 B
frontend/dist/ApprovalDetail 16.5 kB 0 B
frontend/dist/architecture-7EHR7CIX 372 B 0 B
frontend/dist/architectureDiagram-3BPJPVTR 151 kB 0 B
frontend/dist/array.full.es5.js 347 kB 0 B
frontend/dist/array.full.js 427 kB 0 B
frontend/dist/array.js 191 kB 0 B
frontend/dist/AsyncMigrations 13.4 kB 0 B
frontend/dist/AuthenticatedShell 176 kB 0 B
frontend/dist/AuthorizationStatus 969 B 0 B
frontend/dist/azcli 885 B 0 B
frontend/dist/bat 1.88 kB 0 B
frontend/dist/BatchExportScene 60.8 kB 0 B
frontend/dist/bicep 2.59 kB 0 B
frontend/dist/Billing 731 B 0 B
frontend/dist/BillingSection 21 kB 0 B
frontend/dist/blockDiagram-GPEHLZMM 72.5 kB 0 B
frontend/dist/BoxPlot 5.25 kB 0 B
frontend/dist/browserAll-0QZMN1W2 37.4 kB 0 B
frontend/dist/BusinessKnowledgeScene 18.9 kB 0 B
frontend/dist/ButtonPrimitives 762 B 0 B
frontend/dist/c4Diagram-AAUBKEIU 70.8 kB 0 B
frontend/dist/CalendarHeatMap 9 kB 0 B
frontend/dist/cameligo 2.23 kB 0 B
frontend/dist/changeRequestsLogic 748 B 0 B
frontend/dist/classDiagram-4FO5ZUOK 1.28 kB 0 B
frontend/dist/classDiagram-v2-Q7XG4LA2 1.28 kB 0 B
frontend/dist/CLIAuthorize 11.6 kB 0 B
frontend/dist/CLILive 4.26 kB 0 B
frontend/dist/clojure 9.68 kB 0 B
frontend/dist/CodeEditorInline 696 B 0 B
frontend/dist/coffee 3.63 kB 0 B
frontend/dist/Cohort 27.7 kB 0 B
frontend/dist/CohortCalculationHistory 6.47 kB 0 B
frontend/dist/Cohorts 9.64 kB 0 B
frontend/dist/ConfirmOrganization 4.76 kB 0 B
frontend/dist/conversations.js 67.3 kB 0 B
frontend/dist/cose-bilkent-S5V4N54A 82.8 kB 0 B
frontend/dist/Coupons 963 B 0 B
frontend/dist/cpp 5.33 kB 0 B
frontend/dist/Create 1.08 kB 0 B
frontend/dist/crisp-chat-integration.js 1.97 kB 0 B
frontend/dist/csharp 4.56 kB 0 B
frontend/dist/csp 1.45 kB 0 B
frontend/dist/css 4.54 kB 0 B
frontend/dist/cssMode 4.2 kB 0 B
frontend/dist/CustomCssScene 3.8 kB 0 B
frontend/dist/CustomerAnalyticsConfigurationScene 2.27 kB 0 B
frontend/dist/CustomerAnalyticsScene 28.1 kB 0 B
frontend/dist/CustomerJourneyBuilderScene 2.08 kB +35 B (+1.71%)
frontend/dist/CustomerJourneyTemplatesScene 7.75 kB +36 B (+0.47%)
frontend/dist/customizations.full.js 18 kB 0 B
frontend/dist/CyclotronJobInputAssignee 1.54 kB 0 B
frontend/dist/CyclotronJobInputBusinessHours 2.92 kB -35 B (-1.18%)
frontend/dist/CyclotronJobInputTicketTags 920 B 0 B
frontend/dist/cypher 3.42 kB 0 B
frontend/dist/dagre-BM42HDAG 11.9 kB 0 B
frontend/dist/dart 4.29 kB 0 B
frontend/dist/Dashboard 1.38 kB 0 B
frontend/dist/Dashboards 21.8 kB 0 B
frontend/dist/DashboardTemplateCopyScene 5.95 kB 0 B
frontend/dist/DataManagementScene 884 B 0 B
frontend/dist/DataPipelinesNewScene 2.55 kB 0 B
frontend/dist/DataWarehouseScene 46.5 kB 0 B
frontend/dist/Deactivated 1.37 kB 0 B
frontend/dist/dead-clicks-autocapture.js 14.3 kB 0 B
frontend/dist/DeadLetterQueue 5.63 kB 0 B
frontend/dist/DebugScene 20.2 kB 0 B
frontend/dist/decompressionWorker 2.85 kB 0 B
frontend/dist/decompressionWorker.js 2.85 kB 0 B
frontend/dist/DecompressionWorkerManager 329 B 0 B
frontend/dist/DefinitionEdit 8.82 kB 0 B
frontend/dist/DefinitionView 24.3 kB 0 B
frontend/dist/Deployment 3.94 kB +35 B (+0.9%)
frontend/dist/DeploymentProject 5.47 kB +35 B (+0.64%)
frontend/dist/Deployments 9.17 kB 0 B
frontend/dist/DestinationsScene 2.92 kB 0 B
frontend/dist/diagram-2AECGRRQ 6.66 kB 0 B
frontend/dist/diagram-5GNKFQAL 3.61 kB 0 B
frontend/dist/diagram-KO2AKTUF 11.5 kB 0 B
frontend/dist/diagram-LMA3HP47 5.02 kB 0 B
frontend/dist/diagram-OG6HWLK6 11.8 kB 0 B
frontend/dist/dist 643 B 0 B
frontend/dist/dockerfile 1.91 kB 0 B
frontend/dist/EarlyAccessFeature 855 B 0 B
frontend/dist/EarlyAccessFeatures 3.05 kB 0 B
frontend/dist/ecl 5.38 kB 0 B
frontend/dist/EditorScene 1.38 kB 0 B
frontend/dist/elixir 10.3 kB 0 B
frontend/dist/elk.bundled 1.44 MB 0 B
frontend/dist/EmailMFAVerify 3.26 kB 0 B
frontend/dist/EndpointScene 39.9 kB 0 B
frontend/dist/EndpointsScene 21.8 kB 0 B
frontend/dist/erDiagram-TEJ5UH35 27.7 kB 0 B
frontend/dist/ErrorTrackingIssueFingerprintsScene 7.22 kB 0 B
frontend/dist/ErrorTrackingIssueScene 101 kB 0 B
frontend/dist/ErrorTrackingScene 27 kB 0 B
frontend/dist/EvaluationTemplates 779 B -34 B (-4.18%)
frontend/dist/eventmodeling-FCH6USID 375 B 0 B
frontend/dist/EventsScene 2.81 kB 0 B
frontend/dist/exception-autocapture.js 11.8 kB 0 B
frontend/dist/Experiment 211 kB 0 B
frontend/dist/Experiments 19.8 kB 0 B
frontend/dist/exporter 19 kB 0 B
frontend/dist/exporter.js 19 kB 0 B
frontend/dist/ExporterDashboardScene 1.78 kB 0 B
frontend/dist/ExporterHeatmapScene 19.5 kB 0 B
frontend/dist/ExporterInsightScene 2.88 kB 0 B
frontend/dist/ExporterInterviewScene 309 kB 0 B
frontend/dist/ExporterNotebookScene 2.71 MB 0 B
frontend/dist/ExporterRecordingScene 995 B 0 B
frontend/dist/exporterSharedChunkAnchors 288 kB 0 B
frontend/dist/exporterSharedChunkAnchors.js 288 kB 0 B
frontend/dist/ExportsScene 4.23 kB 0 B
frontend/dist/FeatureFlag 134 kB 0 B
frontend/dist/FeatureFlags 844 B 0 B
frontend/dist/FeatureFlagTemplatesScene 7.28 kB 0 B
frontend/dist/FlappyHog 6.02 kB 0 B
frontend/dist/flow9 1.85 kB 0 B
frontend/dist/flowDiagram-I6XJVG4X 61.6 kB 0 B
frontend/dist/freemarker2 16.7 kB 0 B
frontend/dist/fsharp 3.02 kB 0 B
frontend/dist/ganttDiagram-6RSMTGT7 50.9 kB 0 B
frontend/dist/gitGraph-WXDBUCRP 360 B 0 B
frontend/dist/gitGraphDiagram-PVQCEYII 30.2 kB 0 B
frontend/dist/go 2.69 kB 0 B
frontend/dist/graphql 2.3 kB 0 B
frontend/dist/Group 15.1 kB 0 B
frontend/dist/Groups 4.15 kB 0 B
frontend/dist/GroupsNew 7.58 kB 0 B
frontend/dist/handlebars 7.38 kB 0 B
frontend/dist/hcl 3.63 kB 0 B
frontend/dist/HealthCategoryDetailScene 7.48 kB 0 B
frontend/dist/HealthScene 12.4 kB 0 B
frontend/dist/HeatmapNewScene 5.27 kB 0 B
frontend/dist/HeatmapRecordingScene 4.25 kB 0 B
frontend/dist/HeatmapScene 6.8 kB 0 B
frontend/dist/HeatmapsScene 4.13 kB 0 B
frontend/dist/hls 394 kB 0 B
frontend/dist/HogFunctionScene 59.5 kB 0 B
frontend/dist/hogql_parser_wasm_browser 1.53 MB 0 B
frontend/dist/HogRepl 7.61 kB 0 B
frontend/dist/html 5.62 kB 0 B
frontend/dist/htmlMode 4.65 kB 0 B
frontend/dist/image-blob-reduce.esm 49.5 kB 0 B
frontend/dist/InboxScene 59.9 kB 0 B
frontend/dist/index 60.7 kB 0 B
frontend/dist/index.js 60.7 kB 0 B
frontend/dist/info-J43DQDTF 348 B 0 B
frontend/dist/infoDiagram-5YYISTIA 1.32 kB 0 B
frontend/dist/ini 1.14 kB 0 B
frontend/dist/InsightQuickStart 5.67 kB 0 B
frontend/dist/InsightScene 34.6 kB 0 B
frontend/dist/IntegrationsRedirect 976 B 0 B
frontend/dist/intercom-integration.js 2.03 kB 0 B
frontend/dist/InviteSignup 15.2 kB 0 B
frontend/dist/ishikawaDiagram-YF4QCWOH 18 kB 0 B
frontend/dist/java 3.26 kB 0 B
frontend/dist/javascript 1.02 kB 0 B
frontend/dist/journeyDiagram-JHISSGLW 24 kB 0 B
frontend/dist/jsonMode 13.9 kB 0 B
frontend/dist/julia 7.26 kB 0 B
frontend/dist/kanban-definition-UN3LZRKU 21.2 kB 0 B
frontend/dist/katex 266 kB 0 B
frontend/dist/kotlin 3.44 kB 0 B
frontend/dist/lazy 146 kB 0 B
frontend/dist/LegacyPluginScene 20.9 kB 0 B
frontend/dist/LegalDocumentNewScene 59.6 kB 0 B
frontend/dist/LegalDocumentsScene 5.17 kB 0 B
frontend/dist/LemonTextAreaMarkdown 706 B 0 B
frontend/dist/less 3.93 kB 0 B
frontend/dist/lexon 2.47 kB 0 B
frontend/dist/lib 2.25 kB 0 B
frontend/dist/Link 733 B +34 B (+4.86%) 🔍
frontend/dist/LinkScene 25 kB 0 B
frontend/dist/LinksScene 4.4 kB 0 B
frontend/dist/liquid 4.57 kB 0 B
frontend/dist/LiveDebugger 19.3 kB -37 B (-0.19%)
frontend/dist/LiveEventsTable 5.47 kB 0 B
frontend/dist/LLMAnalyticsClusterScene 21.4 kB 0 B
frontend/dist/LLMAnalyticsClustersScene 54.7 kB 0 B
frontend/dist/LLMAnalyticsDatasetScene 20.7 kB 0 B
frontend/dist/LLMAnalyticsDatasetsScene 3.49 kB -36 B (-1.02%)
frontend/dist/LLMAnalyticsEvaluation 59.6 kB 0 B
frontend/dist/LLMAnalyticsEvaluationsScene 28 kB -34 B (-0.12%)
frontend/dist/LLMAnalyticsPlaygroundScene 37.5 kB -36 B (-0.1%)
frontend/dist/LLMAnalyticsScene 117 kB -345 B (-0.29%)
frontend/dist/LLMAnalyticsSessionScene 13.6 kB -41 B (-0.3%)
frontend/dist/LLMAnalyticsTag 27.3 kB 0 B
frontend/dist/LLMAnalyticsTagsScene 7.15 kB 0 B
frontend/dist/LLMAnalyticsTraceScene 130 kB 0 B
frontend/dist/LLMAnalyticsUsers 730 B -34 B (-4.45%)
frontend/dist/LLMASessionFeedbackDisplay 5.04 kB -35 B (-0.69%)
frontend/dist/LLMPromptScene 17.7 kB 0 B
frontend/dist/LLMPromptsScene 4.68 kB 0 B
frontend/dist/LLMSkillScene 793 B 0 B
frontend/dist/LLMSkillsScene 810 B 0 B
frontend/dist/Login 8.86 kB 0 B
frontend/dist/Login2FA 4.49 kB 0 B
frontend/dist/logs.js 38.9 kB 0 B
frontend/dist/LogsAlertDetailScene 17.2 kB 0 B
frontend/dist/LogsSamplingDetailScene 4.59 kB 0 B
frontend/dist/LogsSamplingNewScene 2.11 kB 0 B
frontend/dist/LogsScene 18.1 kB +401 B (+2.27%)
frontend/dist/lua 2.16 kB 0 B
frontend/dist/m3 2.85 kB 0 B
frontend/dist/main 819 kB 0 B
frontend/dist/ManagedMigration 14.4 kB 0 B
frontend/dist/markdown 3.83 kB 0 B
frontend/dist/MarketingAnalyticsScene 40.3 kB 0 B
frontend/dist/MaterializedColumns 10.4 kB 0 B
frontend/dist/Max 888 B 0 B
frontend/dist/mdx 5.43 kB 0 B
frontend/dist/memlens.lib.bundle 27.9 kB 0 B
frontend/dist/mermaid.core 28.5 kB 0 B
frontend/dist/MermaidDiagram 2.11 kB 0 B
frontend/dist/MessageTemplate 16.5 kB -70 B (-0.42%)
frontend/dist/MetricsScene 1.04 kB -34 B (-3.16%)
frontend/dist/mindmap-definition-RKZ34NQL 24.8 kB 0 B
frontend/dist/mips 2.62 kB 0 B
frontend/dist/ModelsScene 18.9 kB 0 B
frontend/dist/MonacoDiffEditor 471 B 0 B
frontend/dist/monacoEditorWorker 288 kB 0 B
frontend/dist/monacoEditorWorker.js 288 kB 0 B
frontend/dist/monacoJsonWorker 419 kB 0 B
frontend/dist/monacoJsonWorker.js 419 kB 0 B
frontend/dist/monacoTsWorker 7.02 MB 0 B
frontend/dist/monacoTsWorker.js 7.02 MB 0 B
frontend/dist/MoveToPostHogCloud 4.7 kB 0 B
frontend/dist/msdax 4.95 kB 0 B
frontend/dist/mysql 11.3 kB 0 B
frontend/dist/NavTabChat 7.41 kB 0 B
frontend/dist/NewSourceScene 980 B 0 B
frontend/dist/NewTabScene 1.72 kB 0 B
frontend/dist/NodeDetailScene 16.9 kB 0 B
frontend/dist/NotebookCanvasScene 3.55 kB 0 B
frontend/dist/NotebookPanel 5.51 kB 0 B
frontend/dist/NotebookScene 8.75 kB 0 B
frontend/dist/NotebooksScene 7.84 kB 0 B
frontend/dist/OAuthAuthorize 844 B 0 B
frontend/dist/objective-c 2.44 kB 0 B
frontend/dist/Onboarding 771 kB 0 B
frontend/dist/OnboardingCouponRedemption 1.44 kB 0 B
frontend/dist/packet-YPE3B663 354 B 0 B
frontend/dist/pascal 3.03 kB 0 B
frontend/dist/pascaligo 2.04 kB 0 B
frontend/dist/passkeyLogic 722 B +34 B (+4.94%) 🔍
frontend/dist/PasswordReset 4.6 kB 0 B
frontend/dist/PasswordResetComplete 3.23 kB 0 B
frontend/dist/PendingDeletion 2.38 kB 0 B
frontend/dist/perl 8.29 kB 0 B
frontend/dist/PersonScene 18.5 kB 0 B
frontend/dist/PersonsScene 5.91 kB 0 B
frontend/dist/pgsql 13.5 kB 0 B
frontend/dist/php 8.06 kB 0 B
frontend/dist/pie-LRSECV5Y 345 B 0 B
frontend/dist/pieDiagram-4H26LBE5 4.92 kB 0 B
frontend/dist/PipelineStatusScene 9.35 kB 0 B
frontend/dist/pla 1.72 kB 0 B
frontend/dist/posthog 146 kB 0 B
frontend/dist/postiats 7.9 kB 0 B
frontend/dist/powerquery 17 kB 0 B
frontend/dist/powershell 3.31 kB 0 B
frontend/dist/PreflightCheck 5.81 kB 0 B
frontend/dist/product-tours.js 115 kB 0 B
frontend/dist/ProductTour 275 kB 0 B
frontend/dist/ProductTours 4.92 kB 0 B
frontend/dist/ProjectHomepage 19.9 kB 0 B
frontend/dist/protobuf 9.09 kB 0 B
frontend/dist/pug 4.86 kB 0 B
frontend/dist/python 4.8 kB 0 B
frontend/dist/qsharp 3.23 kB 0 B
frontend/dist/quadrantDiagram-W4KKPZXB 34.4 kB 0 B
frontend/dist/QueryPerformance 8.86 kB 0 B
frontend/dist/r 3.16 kB 0 B
frontend/dist/radar-GUYGQ44K 351 B 0 B
frontend/dist/razor 9.38 kB 0 B
frontend/dist/react-json-view 121 kB 0 B
frontend/dist/recorder-v2.js 98.6 kB 0 B
frontend/dist/recorder.js 98.6 kB 0 B
frontend/dist/redis 3.59 kB 0 B
frontend/dist/redshift 11.8 kB 0 B
frontend/dist/RegionMap 29.6 kB 0 B
frontend/dist/render-query 26.7 MB 0 B
frontend/dist/render-query.js 26.7 MB 0 B
frontend/dist/ReplayLens 21.7 kB -44 B (-0.2%)
frontend/dist/ReplayLensesScene 12.1 kB -36 B (-0.3%)
frontend/dist/requirementDiagram-4Y6WPE33 31.9 kB 0 B
frontend/dist/ResourceTransfer 9.42 kB 0 B
frontend/dist/restructuredtext 3.94 kB 0 B
frontend/dist/RevenueAnalyticsScene 25.8 kB -65 B (-0.25%)
frontend/dist/ruby 8.54 kB 0 B
frontend/dist/rust 4.2 kB 0 B
frontend/dist/sankeyDiagram-5OEKKPKP 24 kB 0 B
frontend/dist/SavedInsights 902 B 0 B
frontend/dist/sb 1.86 kB 0 B
frontend/dist/scala 7.36 kB 0 B
frontend/dist/schema 720 kB 0 B
frontend/dist/SchemaScene 21.2 kB +36 B (+0.17%)
frontend/dist/scheme 1.8 kB 0 B
frontend/dist/scss 6.45 kB 0 B
frontend/dist/SdkDoctorScene 9.65 kB 0 B
frontend/dist/sequenceDiagram-3UESZ5HK 117 kB 0 B
frontend/dist/SessionAttributionExplorerScene 6.87 kB 0 B
frontend/dist/SessionGroupSummariesTable 4.84 kB 0 B
frontend/dist/SessionGroupSummaryScene 17.2 kB 0 B
frontend/dist/SessionProfileScene 15.3 kB 0 B
frontend/dist/SessionRecordingDetail 2 kB 0 B
frontend/dist/SessionRecordingFilePlaybackScene 4.71 kB 0 B
frontend/dist/SessionRecordings 980 B 0 B
frontend/dist/SessionRecordingsKiosk 10.2 kB 0 B
frontend/dist/SessionRecordingsPlaylistScene 5.28 kB 0 B
frontend/dist/SessionRecordingsSettingsScene 2.14 kB 0 B
frontend/dist/SessionsScene 4.22 kB 0 B
frontend/dist/SettingsScene 3.33 kB 0 B
frontend/dist/sharedChunkAnchors 236 kB 0 B
frontend/dist/sharedChunkAnchors.js 236 kB 0 B
frontend/dist/SharedMetric 6.03 kB 0 B
frontend/dist/SharedMetrics 787 B 0 B
frontend/dist/shell 3.11 kB 0 B
frontend/dist/SignupContainer 28.4 kB 0 B
frontend/dist/Site 1.43 kB 0 B
frontend/dist/solidity 18.6 kB 0 B
frontend/dist/sophia 2.8 kB 0 B
frontend/dist/SourceScene 928 B 0 B
frontend/dist/SourcesScene 6.17 kB 0 B
frontend/dist/sparql 2.59 kB 0 B
frontend/dist/sql 10.3 kB 0 B
frontend/dist/SqlVariableEditScene 7.49 kB 0 B
frontend/dist/st 7.44 kB 0 B
frontend/dist/StartupProgram 21.4 kB 0 B
frontend/dist/stateDiagram-AJRCARHV 11.3 kB 0 B
frontend/dist/stateDiagram-v2-BHNVJYJU 1.18 kB 0 B
frontend/dist/StripeConfirmInstall 3.78 kB 0 B
frontend/dist/SubscriptionScene 14.4 kB 0 B
frontend/dist/SubscriptionsScene 5.42 kB 0 B
frontend/dist/SupportSettingsScene 1.64 kB 0 B
frontend/dist/SupportTicketScene 33.8 kB 0 B
frontend/dist/SupportTicketsScene 937 B 0 B
frontend/dist/Survey 1.12 kB 0 B
frontend/dist/SurveyFormBuilder 1.78 kB 0 B
frontend/dist/Surveys 26.6 kB 0 B
frontend/dist/surveys.js 94.7 kB 0 B
frontend/dist/SurveyWizard 71.5 kB 0 B
frontend/dist/swift 5.3 kB 0 B
frontend/dist/SystemStatus 17.3 kB 0 B
frontend/dist/systemverilog 7.65 kB 0 B
frontend/dist/TaskDetailScene 23.2 kB -36 B (-0.15%)
frontend/dist/TaskTracker 14.4 kB 0 B
frontend/dist/tcl 3.61 kB 0 B
frontend/dist/TextCardMarkdownEditor 11.2 kB 0 B
frontend/dist/timeline-definition-PNZ67QCA 31.3 kB 0 B
frontend/dist/toolbar 15 MB 0 B
frontend/dist/toolbar.js 15 MB 0 B
frontend/dist/ToolbarLaunch 2.71 kB 0 B
frontend/dist/tracing-headers.js 1.74 kB 0 B
frontend/dist/TracingScene 54.2 kB 0 B
frontend/dist/TransformationsScene 2.16 kB 0 B
frontend/dist/treemap-LRROVOQU 357 B 0 B
frontend/dist/treeView-BLDUP644 360 B 0 B
frontend/dist/TrendsBarChart 6.84 kB -37 B (-0.54%)
frontend/dist/TrendsLineChart 6.84 kB 0 B
frontend/dist/tsMode 24 kB 0 B
frontend/dist/twig 6.01 kB 0 B
frontend/dist/TwoFactorReset 4.27 kB 0 B
frontend/dist/typescript 274 B 0 B
frontend/dist/typespec 2.86 kB 0 B
frontend/dist/Unsubscribe 1.9 kB 0 B
frontend/dist/UserInterview 6.25 kB -35 B (-0.56%)
frontend/dist/UserInterviewResponse 5.54 kB 0 B
frontend/dist/UserInterviews 3.77 kB 0 B
frontend/dist/vb 5.83 kB 0 B
frontend/dist/vennDiagram-CIIHVFJN 41.6 kB 0 B
frontend/dist/VercelConnect 5.23 kB 0 B
frontend/dist/VercelLinkError 2.5 kB 0 B
frontend/dist/VerifyEmail 5.02 kB 0 B
frontend/dist/vimMode 211 kB 0 B
frontend/dist/VisualReviewIndexScene 2.41 kB 0 B
frontend/dist/VisualReviewRunScene 44.3 kB -34 B (-0.08%)
frontend/dist/VisualReviewRunsScene 7.17 kB -38 B (-0.53%)
frontend/dist/VisualReviewSettingsScene 11 kB 0 B
frontend/dist/VisualReviewSnapshotHistoryScene 12.4 kB 0 B
frontend/dist/VisualReviewSnapshotOverviewScene 17.5 kB 0 B
frontend/dist/wardley-L42UT6IY 352 B 0 B
frontend/dist/wardleyDiagram-YWT4CUSO 26.2 kB 0 B
frontend/dist/web-vitals-with-attribution.js 11.8 kB 0 B
frontend/dist/web-vitals.js 6.39 kB 0 B
frontend/dist/WebAnalyticsScene 9.59 kB 0 B
frontend/dist/WebGLRenderer-DYjOwNoG 60.4 kB 0 B
frontend/dist/WebGPURenderer-B_wkl_Ja 36.3 kB 0 B
frontend/dist/WebScriptsScene 2.78 kB 0 B
frontend/dist/WebVitals 7.38 kB 0 B
frontend/dist/WebVitalsPathBreakdown 3.86 kB 0 B
frontend/dist/webworkerAll-puPV1rBA 397 B 0 B
frontend/dist/wgsl 7.38 kB 0 B
frontend/dist/Wizard 4.7 kB 0 B
frontend/dist/WorkflowsScene 60 kB 0 B
frontend/dist/WorldMap 1.04 MB 0 B
frontend/dist/xml 3.02 kB 0 B
frontend/dist/xychartDiagram-2RQKCTM6 39.6 kB 0 B
frontend/dist/yaml 4.64 kB 0 B

compressed-size-action

@rnegron rnegron marked this pull request as ready for review May 20, 2026 13:40
@assign-reviewers-posthog assign-reviewers-posthog Bot requested review from a team May 20, 2026 13:40
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 20, 2026

Prompt To Fix All With AI
Fix the following 2 code review issues. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 2
.github/workflows/ci-python.yml:158-159
The PR description states `MYPY_NUM_WORKERS=4` is used in CI and the performance table benchmarks against that value, but the actual setting here is `2`. If the intent is to limit to 2 workers to match the 2-core `depot-ubuntu-latest` runner, the description and performance table are misleading as written.

```suggestion
              env:
                  MYPY_NUM_WORKERS: 4
```

### Issue 2 of 2
posthog/batch_exports/tests/debug/test_debugger.py:166-167
**`comparison-overlap` + `unreachable` silenced in a live assertion**

The same assertion pattern `assert bedbg.loaded_batch_exports == loaded` on lines 154 and 160 (destination-filtered calls) passes mypy without ignores, but here — on the name-filtered call — mypy flags a `comparison-overlap`, meaning it believes the two types can never be equal. That would make the `assert` always raise `AssertionError`, explaining why the following line is `unreachable`. Silencing both errors hides a potential real type mismatch: if `load_batch_exports(name=...)` returns a type genuinely incompatible with `loaded_batch_exports`, the test may be asserting something that mypy knows can never pass.

Reviews (1): Last reviewed commit: "Merge branch 'master' into worktree-mypy..." | Re-trigger Greptile

Comment thread .github/workflows/ci-python.yml
Comment on lines +166 to +167
assert bedbg.loaded_batch_exports == loaded # type: ignore[comparison-overlap]
assert all(batch_export.name == "test-batch-export-S3-False-False" for batch_export in loaded) # type: ignore[unreachable]
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 comparison-overlap + unreachable silenced in a live assertion

The same assertion pattern assert bedbg.loaded_batch_exports == loaded on lines 154 and 160 (destination-filtered calls) passes mypy without ignores, but here — on the name-filtered call — mypy flags a comparison-overlap, meaning it believes the two types can never be equal. That would make the assert always raise AssertionError, explaining why the following line is unreachable. Silencing both errors hides a potential real type mismatch: if load_batch_exports(name=...) returns a type genuinely incompatible with loaded_batch_exports, the test may be asserting something that mypy knows can never pass.

Prompt To Fix With AI
This is a comment left during a code review.
Path: posthog/batch_exports/tests/debug/test_debugger.py
Line: 166-167

Comment:
**`comparison-overlap` + `unreachable` silenced in a live assertion**

The same assertion pattern `assert bedbg.loaded_batch_exports == loaded` on lines 154 and 160 (destination-filtered calls) passes mypy without ignores, but here — on the name-filtered call — mypy flags a `comparison-overlap`, meaning it believes the two types can never be equal. That would make the `assert` always raise `AssertionError`, explaining why the following line is `unreachable`. Silencing both errors hides a potential real type mismatch: if `load_batch_exports(name=...)` returns a type genuinely incompatible with `loaded_batch_exports`, the test may be asserting something that mypy knows can never pass.

How can I resolve this? If you propose a fix, please make it concise.

Copy link
Copy Markdown
Member

@gantoine gantoine left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice!

@rnegron rnegron merged commit 10e88f9 into master May 20, 2026
236 of 238 checks passed
@rnegron rnegron deleted the worktree-mypy-2-upgrade branch May 20, 2026 17:04
@deployment-status-posthog
Copy link
Copy Markdown

deployment-status-posthog Bot commented May 20, 2026

Deploy status

Environment Status Deployed At Workflow
dev ✅ Deployed 2026-05-20 17:50 UTC Run
prod-us ✅ Deployed 2026-05-20 18:03 UTC Run
prod-eu ✅ Deployed 2026-05-20 18:04 UTC Run

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants