recce-nightly 1.22.0.20251028__tar.gz → 1.27.0.20251201__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of recce-nightly might be problematic. Click here for more details.
- recce_nightly-1.27.0.20251201/.editorconfig +26 -0
- recce_nightly-1.27.0.20251201/.flake8 +37 -0
- recce_nightly-1.27.0.20251201/.github/ISSUE_TEMPLATE/bug_report.yml +67 -0
- recce_nightly-1.27.0.20251201/.github/ISSUE_TEMPLATE/custom.md +10 -0
- recce_nightly-1.27.0.20251201/.github/ISSUE_TEMPLATE/feature_request.yml +42 -0
- recce_nightly-1.27.0.20251201/.github/PULL_REQUEST_TEMPLATE.md +21 -0
- recce_nightly-1.27.0.20251201/.github/copilot-instructions.md +331 -0
- recce_nightly-1.27.0.20251201/.github/instructions/backend-instructions.md +541 -0
- recce_nightly-1.27.0.20251201/.github/instructions/frontend-instructions.md +317 -0
- recce_nightly-1.27.0.20251201/.github/workflows/build-statics.yaml +65 -0
- recce_nightly-1.27.0.20251201/.github/workflows/bump.yaml +40 -0
- recce_nightly-1.27.0.20251201/.github/workflows/integration-tests-cloud.yaml +98 -0
- recce_nightly-1.27.0.20251201/.github/workflows/integration-tests-sqlmesh.yaml +33 -0
- recce_nightly-1.27.0.20251201/.github/workflows/integration-tests.yaml +56 -0
- recce_nightly-1.27.0.20251201/.github/workflows/nightly.yaml +244 -0
- recce_nightly-1.27.0.20251201/.github/workflows/release.yaml +194 -0
- recce_nightly-1.27.0.20251201/.github/workflows/tests-js.yaml +54 -0
- recce_nightly-1.27.0.20251201/.github/workflows/tests-python.yaml +103 -0
- recce_nightly-1.27.0.20251201/.gitignore +21 -0
- recce_nightly-1.27.0.20251201/.pre-commit-config.yaml +25 -0
- recce_nightly-1.27.0.20251201/CLAUDE.md +343 -0
- recce_nightly-1.27.0.20251201/CODE_OF_CONDUCT.md +128 -0
- recce_nightly-1.27.0.20251201/CONTRIBUTING.md +107 -0
- recce_nightly-1.27.0.20251201/Makefile +135 -0
- {recce_nightly-1.22.0.20251028/recce_nightly.egg-info → recce_nightly-1.27.0.20251201}/PKG-INFO +31 -4
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/README.md +24 -2
- recce_nightly-1.27.0.20251201/RECCE_CLOUD.md +81 -0
- recce_nightly-1.27.0.20251201/SECURITY.md +25 -0
- recce_nightly-1.27.0.20251201/docs/PACKAGING.md +340 -0
- recce_nightly-1.27.0.20251201/docs/README.md +1 -0
- recce_nightly-1.27.0.20251201/integration_tests/dbt/.gitignore +9 -0
- recce_nightly-1.27.0.20251201/integration_tests/dbt/dbt_project.yml +26 -0
- recce_nightly-1.27.0.20251201/integration_tests/dbt/models/customers.sql +69 -0
- recce_nightly-1.27.0.20251201/integration_tests/dbt/models/docs.md +14 -0
- recce_nightly-1.27.0.20251201/integration_tests/dbt/models/orders.sql +56 -0
- recce_nightly-1.27.0.20251201/integration_tests/dbt/models/schema.yml +82 -0
- recce_nightly-1.27.0.20251201/integration_tests/dbt/models/staging/schema.yml +31 -0
- recce_nightly-1.27.0.20251201/integration_tests/dbt/models/staging/stg_customers.sql +22 -0
- recce_nightly-1.27.0.20251201/integration_tests/dbt/models/staging/stg_orders.sql +23 -0
- recce_nightly-1.27.0.20251201/integration_tests/dbt/models/staging/stg_payments.sql +25 -0
- recce_nightly-1.27.0.20251201/integration_tests/dbt/packages.yml +7 -0
- recce_nightly-1.27.0.20251201/integration_tests/dbt/profiles.yml +8 -0
- recce_nightly-1.27.0.20251201/integration_tests/dbt/seeds/raw_customers.csv +101 -0
- recce_nightly-1.27.0.20251201/integration_tests/dbt/seeds/raw_orders.csv +100 -0
- recce_nightly-1.27.0.20251201/integration_tests/dbt/seeds/raw_payments.csv +114 -0
- recce_nightly-1.27.0.20251201/integration_tests/dbt/seeds/raw_statuses.csv +5 -0
- recce_nightly-1.27.0.20251201/integration_tests/dbt/smoke_test.sh +72 -0
- recce_nightly-1.27.0.20251201/integration_tests/dbt/smoke_test_cloud.sh +71 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/.gitignore +3 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/audits/assert_item_price_above_zero.sql +9 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/audits/items.sql +7 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/audits/order_items.sql +7 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/config.py +171 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/helper.py +20 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/macros/macros.py +8 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/macros/macros.sql +8 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/macros/utils.py +11 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/metrics/metrics.sql +25 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/models/customer_revenue_by_day.sql +41 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/models/customer_revenue_lifetime.sql +60 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/models/customers.sql +32 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/models/items.py +95 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/models/marketing.sql +15 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/models/order_items.py +95 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/models/orders.py +70 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/models/raw_marketing.py +62 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/models/top_waiters.sql +23 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/models/waiter_as_customer_by_day.sql +29 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/models/waiter_names.sql +10 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/models/waiter_revenue_by_day.sql +29 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/models/waiters.py +62 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/prep_env.sh +16 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/recce.yml +13 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/schema.yaml +5 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/seeds/waiter_names.csv +11 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/test_server.sh +29 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/tests/test_customer_revenue_by_day.yaml +63 -0
- recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/tests/test_order_items.yaml +72 -0
- recce_nightly-1.27.0.20251201/js/.editorconfig +27 -0
- recce_nightly-1.27.0.20251201/js/.env.development +5 -0
- recce_nightly-1.27.0.20251201/js/.gitignore +38 -0
- recce_nightly-1.27.0.20251201/js/.husky/pre-commit +32 -0
- recce_nightly-1.27.0.20251201/js/.nvmrc +1 -0
- recce_nightly-1.27.0.20251201/js/README.md +39 -0
- recce_nightly-1.27.0.20251201/js/app/Providers.tsx +28 -0
- recce_nightly-1.27.0.20251201/js/app/global.css +23 -0
- recce_nightly-1.27.0.20251201/js/app/layout.tsx +24 -0
- recce_nightly-1.27.0.20251201/js/app/page.tsx +577 -0
- recce_nightly-1.27.0.20251201/js/biome.json +313 -0
- recce_nightly-1.27.0.20251201/js/jest.config.js +15 -0
- recce_nightly-1.27.0.20251201/js/jest.setup.js +2 -0
- recce_nightly-1.27.0.20251201/js/next.config.js +13 -0
- recce_nightly-1.27.0.20251201/js/package-lock.json +13843 -0
- recce_nightly-1.27.0.20251201/js/package.json +108 -0
- recce_nightly-1.27.0.20251201/js/pnpm-lock.yaml +7936 -0
- recce_nightly-1.27.0.20251201/js/pnpm-workspace.yaml +6 -0
- recce_nightly-1.27.0.20251201/js/postcss.config.js +5 -0
- recce_nightly-1.27.0.20251201/js/src/components/AuthModal/AuthModal.tsx +211 -0
- recce_nightly-1.27.0.20251201/js/src/components/app/AvatarDropdown.tsx +128 -0
- recce_nightly-1.27.0.20251201/js/src/components/app/EnvInfo.tsx +285 -0
- recce_nightly-1.27.0.20251201/js/src/components/app/Filename.tsx +400 -0
- recce_nightly-1.27.0.20251201/js/src/components/app/SetupConnectionPopover.tsx +89 -0
- recce_nightly-1.27.0.20251201/js/src/components/app/StateExporter.tsx +52 -0
- recce_nightly-1.27.0.20251201/js/src/components/app/StateImporter.tsx +180 -0
- recce_nightly-1.27.0.20251201/js/src/components/app/StateSharing.tsx +127 -0
- recce_nightly-1.27.0.20251201/js/src/components/app/StateSynchronizer.tsx +194 -0
- recce_nightly-1.27.0.20251201/js/src/components/charts/HistogramChart.tsx +267 -0
- recce_nightly-1.27.0.20251201/js/src/components/charts/SquareIcon.tsx +19 -0
- recce_nightly-1.27.0.20251201/js/src/components/charts/TopKSummaryList.tsx +382 -0
- recce_nightly-1.27.0.20251201/js/src/components/check/CheckBreadcrumb.tsx +97 -0
- recce_nightly-1.27.0.20251201/js/src/components/check/CheckDescription.tsx +109 -0
- recce_nightly-1.27.0.20251201/js/src/components/check/CheckDetail.tsx +656 -0
- recce_nightly-1.27.0.20251201/js/src/components/check/CheckEmptyState.tsx +74 -0
- recce_nightly-1.27.0.20251201/js/src/components/check/CheckList.tsx +311 -0
- recce_nightly-1.27.0.20251201/js/src/components/check/CheckPage.tsx +184 -0
- recce_nightly-1.27.0.20251201/js/src/components/check/LineageDiffView.tsx +32 -0
- recce_nightly-1.27.0.20251201/js/src/components/check/PresetCheckTemplateView.tsx +51 -0
- recce_nightly-1.27.0.20251201/js/src/components/check/SchemaDiffView.tsx +245 -0
- recce_nightly-1.27.0.20251201/js/src/components/check/check.ts +25 -0
- recce_nightly-1.27.0.20251201/js/src/components/check/timeline/CheckTimeline.tsx +133 -0
- recce_nightly-1.27.0.20251201/js/src/components/check/timeline/CommentInput.tsx +65 -0
- recce_nightly-1.27.0.20251201/js/src/components/check/timeline/TimelineEvent.tsx +426 -0
- recce_nightly-1.27.0.20251201/js/src/components/check/timeline/index.ts +12 -0
- recce_nightly-1.27.0.20251201/js/src/components/data-grid/ScreenshotDataGrid.tsx +45 -0
- recce_nightly-1.27.0.20251201/js/src/components/errorboundary/ErrorBoundary.tsx +65 -0
- recce_nightly-1.27.0.20251201/js/src/components/histogram/HistogramDiffForm.tsx +145 -0
- recce_nightly-1.27.0.20251201/js/src/components/histogram/HistogramDiffResultView.tsx +55 -0
- recce_nightly-1.27.0.20251201/js/src/components/icons/index.tsx +142 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/ActionControl.tsx +61 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/ActionTag.tsx +136 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/ChangeStatusLegend.tsx +37 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/ColumnLevelLineageControl.tsx +277 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/ColumnLevelLineageLegend.tsx +48 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/GraphColumnNode.tsx +193 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/GraphEdge.tsx +59 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/GraphNode.tsx +483 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/LineagePage.tsx +10 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/LineageView.tsx +1260 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/LineageViewContext.tsx +86 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/LineageViewContextMenu.tsx +554 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/LineageViewNotification.tsx +56 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/LineageViewTopBar.tsx +515 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/NodeSqlView.tsx +154 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/NodeTag.tsx +240 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/NodeView.tsx +538 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/SandboxView.tsx +426 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/SetupConnectionBanner.tsx +39 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/SeverDisconnectedModalContent.tsx +104 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/SingleEnvironmentQueryView.tsx +135 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/graph.test.ts +31 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/graph.ts +58 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/lineage.test.ts +169 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/lineage.ts +521 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/styles.css +9 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/styles.tsx +149 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/useMultiNodesAction.ts +314 -0
- recce_nightly-1.27.0.20251201/js/src/components/lineage/useValueDiffAlertDialog.tsx +90 -0
- recce_nightly-1.27.0.20251201/js/src/components/onboarding-guide/Notification.tsx +47 -0
- recce_nightly-1.27.0.20251201/js/src/components/profile/ProfileDiffForm.tsx +98 -0
- recce_nightly-1.27.0.20251201/js/src/components/profile/ProfileDiffResultView.tsx +216 -0
- recce_nightly-1.27.0.20251201/js/src/components/query/ChangedOnlyCheckbox.tsx +24 -0
- recce_nightly-1.27.0.20251201/js/src/components/query/DiffText.tsx +105 -0
- recce_nightly-1.27.0.20251201/js/src/components/query/QueryDiffResultView.tsx +430 -0
- recce_nightly-1.27.0.20251201/js/src/components/query/QueryForm.tsx +71 -0
- recce_nightly-1.27.0.20251201/js/src/components/query/QueryPage.tsx +263 -0
- recce_nightly-1.27.0.20251201/js/src/components/query/QueryResultView.tsx +357 -0
- recce_nightly-1.27.0.20251201/js/src/components/query/SetupConnectionGuide.tsx +45 -0
- recce_nightly-1.27.0.20251201/js/src/components/query/SqlEditor.tsx +266 -0
- recce_nightly-1.27.0.20251201/js/src/components/query/ToggleSwitch.tsx +79 -0
- recce_nightly-1.27.0.20251201/js/src/components/query/querydiff.test.ts +252 -0
- recce_nightly-1.27.0.20251201/js/src/components/query/querydiff.tsx +739 -0
- recce_nightly-1.27.0.20251201/js/src/components/query/styles.css +67 -0
- recce_nightly-1.27.0.20251201/js/src/components/rowcount/RowCountDiffResultView.tsx +177 -0
- recce_nightly-1.27.0.20251201/js/src/components/rowcount/delta.ts +11 -0
- recce_nightly-1.27.0.20251201/js/src/components/run/RunList.tsx +268 -0
- recce_nightly-1.27.0.20251201/js/src/components/run/RunModal.tsx +158 -0
- recce_nightly-1.27.0.20251201/js/src/components/run/RunPage.tsx +24 -0
- recce_nightly-1.27.0.20251201/js/src/components/run/RunResultPane.tsx +418 -0
- recce_nightly-1.27.0.20251201/js/src/components/run/RunStatusAndDate.tsx +90 -0
- recce_nightly-1.27.0.20251201/js/src/components/run/RunToolbar.tsx +40 -0
- recce_nightly-1.27.0.20251201/js/src/components/run/RunView.tsx +161 -0
- recce_nightly-1.27.0.20251201/js/src/components/run/registry.ts +214 -0
- recce_nightly-1.27.0.20251201/js/src/components/run/types.ts +14 -0
- recce_nightly-1.27.0.20251201/js/src/components/schema/ColumnNameCell.tsx +158 -0
- recce_nightly-1.27.0.20251201/js/src/components/schema/SchemaView.tsx +265 -0
- recce_nightly-1.27.0.20251201/js/src/components/schema/schema.test.ts +118 -0
- recce_nightly-1.27.0.20251201/js/src/components/schema/schema.tsx +201 -0
- recce_nightly-1.27.0.20251201/js/src/components/schema/schemaDiff.ts +32 -0
- recce_nightly-1.27.0.20251201/js/src/components/schema/style.css +82 -0
- recce_nightly-1.27.0.20251201/js/src/components/screenshot/ScreenshotBox.tsx +32 -0
- recce_nightly-1.27.0.20251201/js/src/components/shared/HistoryToggle.tsx +32 -0
- recce_nightly-1.27.0.20251201/js/src/components/split/Split.tsx +40 -0
- recce_nightly-1.27.0.20251201/js/src/components/split/styles.css +19 -0
- recce_nightly-1.27.0.20251201/js/src/components/summary/ChangeSummary.tsx +233 -0
- recce_nightly-1.27.0.20251201/js/src/components/summary/SchemaSummary.tsx +118 -0
- recce_nightly-1.27.0.20251201/js/src/components/summary/SummaryView.tsx +24 -0
- recce_nightly-1.27.0.20251201/js/src/components/timeout/IdleTimeoutBadge.tsx +45 -0
- recce_nightly-1.27.0.20251201/js/src/components/top-k/TopKDiffForm.tsx +57 -0
- recce_nightly-1.27.0.20251201/js/src/components/top-k/TopKDiffResultView.tsx +61 -0
- recce_nightly-1.27.0.20251201/js/src/components/ui/color-mode.tsx +108 -0
- recce_nightly-1.27.0.20251201/js/src/components/ui/markdown/ExternalLinkConfirmDialog.tsx +128 -0
- recce_nightly-1.27.0.20251201/js/src/components/ui/markdown/MarkdownContent.tsx +321 -0
- recce_nightly-1.27.0.20251201/js/src/components/ui/provider.tsx +16 -0
- recce_nightly-1.27.0.20251201/js/src/components/ui/theme.ts +224 -0
- recce_nightly-1.27.0.20251201/js/src/components/ui/toaster.tsx +43 -0
- recce_nightly-1.27.0.20251201/js/src/components/ui/tooltip.tsx +46 -0
- recce_nightly-1.27.0.20251201/js/src/components/valuediff/ValueDiffDetailResultView.tsx +195 -0
- recce_nightly-1.27.0.20251201/js/src/components/valuediff/ValueDiffForm.tsx +144 -0
- recce_nightly-1.27.0.20251201/js/src/components/valuediff/ValueDiffResultView.tsx +217 -0
- recce_nightly-1.27.0.20251201/js/src/components/valuediff/shared.ts +39 -0
- recce_nightly-1.27.0.20251201/js/src/components/valuediff/valuediff.tsx +520 -0
- recce_nightly-1.27.0.20251201/js/src/constants/tooltipMessage.ts +3 -0
- recce_nightly-1.27.0.20251201/js/src/constants/urls.ts +1 -0
- recce_nightly-1.27.0.20251201/js/src/lib/UrlHash.ts +12 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/adhocQuery.ts +65 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/axiosClient.ts +9 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/cacheKeys.ts +13 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/checkEvents.ts +240 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/checks.ts +111 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/cll.ts +50 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/connectToCloud.ts +10 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/flag.ts +34 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/info.ts +197 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/instanceInfo.ts +23 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/keepAlive.ts +104 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/lineagecheck.ts +34 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/localStorageKeys.ts +7 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/models.ts +54 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/profile.ts +62 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/rowcount.ts +16 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/runs.ts +159 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/schemacheck.ts +30 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/select.ts +22 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/sessionStorageKeys.ts +8 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/state.ts +114 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/track.ts +131 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/types.ts +297 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/user.ts +42 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/valuediff.ts +42 -0
- recce_nightly-1.27.0.20251201/js/src/lib/api/version.ts +33 -0
- recce_nightly-1.27.0.20251201/js/src/lib/const.ts +9 -0
- recce_nightly-1.27.0.20251201/js/src/lib/formatSelect.ts +50 -0
- recce_nightly-1.27.0.20251201/js/src/lib/hooks/IdleTimeoutContext.tsx +177 -0
- recce_nightly-1.27.0.20251201/js/src/lib/hooks/LineageGraphContext.tsx +480 -0
- recce_nightly-1.27.0.20251201/js/src/lib/hooks/RecceActionContext.tsx +257 -0
- recce_nightly-1.27.0.20251201/js/src/lib/hooks/RecceCheckContext.tsx +33 -0
- recce_nightly-1.27.0.20251201/js/src/lib/hooks/RecceContextProvider.tsx +34 -0
- recce_nightly-1.27.0.20251201/js/src/lib/hooks/RecceInstanceContext.tsx +129 -0
- recce_nightly-1.27.0.20251201/js/src/lib/hooks/RecceQueryContext.tsx +98 -0
- recce_nightly-1.27.0.20251201/js/src/lib/hooks/RecceShareStateContext.tsx +57 -0
- recce_nightly-1.27.0.20251201/js/src/lib/hooks/ScreenShot.tsx +357 -0
- recce_nightly-1.27.0.20251201/js/src/lib/hooks/useCheckEvents.ts +97 -0
- recce_nightly-1.27.0.20251201/js/src/lib/hooks/useCheckToast.tsx +14 -0
- recce_nightly-1.27.0.20251201/js/src/lib/hooks/useClipBoardToast.tsx +27 -0
- recce_nightly-1.27.0.20251201/js/src/lib/hooks/useCountdownToast.tsx +102 -0
- recce_nightly-1.27.0.20251201/js/src/lib/hooks/useFeedbackCollectionToast.tsx +124 -0
- recce_nightly-1.27.0.20251201/js/src/lib/hooks/useGuideToast.tsx +45 -0
- recce_nightly-1.27.0.20251201/js/src/lib/hooks/useHashLocation.ts +19 -0
- recce_nightly-1.27.0.20251201/js/src/lib/hooks/useIdleDetection.tsx +183 -0
- recce_nightly-1.27.0.20251201/js/src/lib/hooks/useModelColumns.tsx +113 -0
- recce_nightly-1.27.0.20251201/js/src/lib/hooks/useRecceInstanceInfo.tsx +10 -0
- recce_nightly-1.27.0.20251201/js/src/lib/hooks/useRecceServerFlag.tsx +10 -0
- recce_nightly-1.27.0.20251201/js/src/lib/hooks/useRun.tsx +87 -0
- recce_nightly-1.27.0.20251201/js/src/lib/mergeKeys.test.ts +89 -0
- recce_nightly-1.27.0.20251201/js/src/lib/mergeKeys.ts +86 -0
- recce_nightly-1.27.0.20251201/js/src/lib/utils/formatTime.ts +84 -0
- recce_nightly-1.27.0.20251201/js/src/lib/utils/urls.ts +16 -0
- recce_nightly-1.27.0.20251201/js/src/utils/DropdownValuesInput.tsx +235 -0
- recce_nightly-1.27.0.20251201/js/src/utils/formatters.tsx +237 -0
- recce_nightly-1.27.0.20251201/js/src/utils/transforms.ts +85 -0
- recce_nightly-1.27.0.20251201/js/theme/components/Checkbox.ts +108 -0
- recce_nightly-1.27.0.20251201/js/theme/components/Tooltip.ts +9 -0
- recce_nightly-1.27.0.20251201/js/tsconfig.json +37 -0
- recce_nightly-1.27.0.20251201/macros/README.md +8 -0
- recce_nightly-1.27.0.20251201/macros/recce_athena.sql +73 -0
- recce_nightly-1.27.0.20251201/pyproject.toml +15 -0
- recce_nightly-1.27.0.20251201/recce/VERSION +1 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/adapter/dbt_adapter/__init__.py +1 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/apis/check_api.py +20 -14
- recce_nightly-1.27.0.20251201/recce/apis/check_events_api.py +353 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/apis/check_func.py +5 -5
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/artifact.py +15 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/cli.py +281 -58
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/core.py +2 -2
- recce_nightly-1.27.0.20251201/recce/data/404.html +1 -0
- recce_nightly-1.27.0.20251201/recce/data/__next.__PAGE__.txt +10 -0
- recce_nightly-1.27.0.20251201/recce/data/__next._full.txt +23 -0
- recce_nightly-1.27.0.20251201/recce/data/__next._head.txt +8 -0
- recce_nightly-1.27.0.20251201/recce/data/__next._index.txt +8 -0
- recce_nightly-1.27.0.20251201/recce/data/__next._tree.txt +5 -0
- recce_nightly-1.27.0.20251201/recce/data/_next/static/chunks/010dc7b046d24155.js +1 -0
- recce_nightly-1.27.0.20251201/recce/data/_next/static/chunks/1113369ecd595fee.js +1 -0
- recce_nightly-1.27.0.20251201/recce/data/_next/static/chunks/252260356f9f28b4.js +1 -0
- recce_nightly-1.27.0.20251201/recce/data/_next/static/chunks/26d1bbec8cb25d22.js +1 -0
- recce_nightly-1.27.0.20251201/recce/data/_next/static/chunks/282fbdead4f6abb6.js +1 -0
- recce_nightly-1.27.0.20251201/recce/data/_next/static/chunks/29726c4c21cd3c10.js +11 -0
- recce_nightly-1.27.0.20251201/recce/data/_next/static/chunks/2e75de06b923cb9f.js +2 -0
- recce_nightly-1.27.0.20251201/recce/data/_next/static/chunks/4597309ba944063a.js +4 -0
- recce_nightly-1.27.0.20251201/recce/data/_next/static/chunks/4921356c9428e60f.js +1 -0
- recce_nightly-1.27.0.20251201/recce/data/_next/static/chunks/673a8e1204501586.js +1 -0
- recce_nightly-1.27.0.20251201/recce/data/_next/static/chunks/6b90bdb4fac82ca0.js +11 -0
- recce_nightly-1.27.0.20251201/recce/data/_next/static/chunks/79f882c54603eefb.js +110 -0
- recce_nightly-1.27.0.20251201/recce/data/_next/static/chunks/8feaa72f5cf4b1dc.css +1 -0
- recce_nightly-1.27.0.20251201/recce/data/_next/static/chunks/934383b854c83cf2.js +1 -0
- recce_nightly-1.27.0.20251201/recce/data/_next/static/chunks/a5314944adfcfe06.js +1 -0
- recce_nightly-1.27.0.20251201/recce/data/_next/static/chunks/c81b1e05f6b5f0cc.js +1 -0
- recce_nightly-1.27.0.20251201/recce/data/_next/static/chunks/f40141db1bdb46f0.css +6 -0
- recce_nightly-1.27.0.20251201/recce/data/_next/static/chunks/ffe5529fff9d6fe6.css +2 -0
- recce_nightly-1.27.0.20251201/recce/data/_next/static/chunks/turbopack-bf7cf1f7a9cb2ee5.js +3 -0
- recce_nightly-1.27.0.20251201/recce/data/_next/static/media/favicon.a8d38d84.ico +0 -0
- recce_nightly-1.27.0.20251201/recce/data/_next/static/yS8-HLAmuC0Dpp1LfRScp/_buildManifest.js +11 -0
- recce_nightly-1.27.0.20251201/recce/data/_next/static/yS8-HLAmuC0Dpp1LfRScp/_clientMiddlewareManifest.json +1 -0
- recce_nightly-1.27.0.20251201/recce/data/_not-found/__next._full.txt +17 -0
- recce_nightly-1.27.0.20251201/recce/data/_not-found/__next._head.txt +8 -0
- recce_nightly-1.27.0.20251201/recce/data/_not-found/__next._index.txt +8 -0
- recce_nightly-1.27.0.20251201/recce/data/_not-found/__next._not-found.__PAGE__.txt +5 -0
- recce_nightly-1.27.0.20251201/recce/data/_not-found/__next._not-found.txt +4 -0
- recce_nightly-1.27.0.20251201/recce/data/_not-found/__next._tree.txt +3 -0
- recce_nightly-1.27.0.20251201/recce/data/_not-found.html +1 -0
- recce_nightly-1.27.0.20251201/recce/data/_not-found.txt +17 -0
- recce_nightly-1.27.0.20251201/recce/data/auth_callback.html +68 -0
- recce_nightly-1.27.0.20251201/recce/data/favicon.ico +0 -0
- recce_nightly-1.27.0.20251201/recce/data/imgs/feedback/thumbs-down.png +0 -0
- recce_nightly-1.27.0.20251201/recce/data/imgs/feedback/thumbs-up.png +0 -0
- recce_nightly-1.27.0.20251201/recce/data/imgs/reload-image.svg +4 -0
- recce_nightly-1.27.0.20251201/recce/data/index.html +1 -0
- recce_nightly-1.27.0.20251201/recce/data/index.txt +23 -0
- recce_nightly-1.27.0.20251201/recce/data/logo/recce-logo-white.png +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/event/__init__.py +1 -1
- recce_nightly-1.27.0.20251201/recce/mcp_server.py +725 -0
- recce_nightly-1.27.0.20251201/recce/models/check.py +473 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/models/types.py +38 -2
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/run.py +14 -1
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/server.py +113 -2
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/state/cloud.py +12 -2
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/state/const.py +1 -1
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/state/state.py +1 -11
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/state/state_loader.py +3 -5
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/summary.py +23 -3
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/tasks/dataframe.py +63 -1
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/util/api_token.py +9 -2
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/util/breaking.py +1 -1
- recce_nightly-1.27.0.20251201/recce/util/cloud/__init__.py +15 -0
- recce_nightly-1.27.0.20251201/recce/util/cloud/base.py +115 -0
- recce_nightly-1.27.0.20251201/recce/util/cloud/check_events.py +190 -0
- recce_nightly-1.27.0.20251201/recce/util/cloud/checks.py +242 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/util/recce_cloud.py +48 -5
- recce_nightly-1.27.0.20251201/recce_cloud/README.md +479 -0
- recce_nightly-1.27.0.20251201/recce_cloud/__init__.py +24 -0
- recce_nightly-1.27.0.20251201/recce_cloud/api/__init__.py +17 -0
- recce_nightly-1.27.0.20251201/recce_cloud/api/base.py +111 -0
- recce_nightly-1.27.0.20251201/recce_cloud/api/client.py +150 -0
- recce_nightly-1.27.0.20251201/recce_cloud/api/exceptions.py +26 -0
- recce_nightly-1.27.0.20251201/recce_cloud/api/factory.py +63 -0
- recce_nightly-1.27.0.20251201/recce_cloud/api/github.py +76 -0
- recce_nightly-1.27.0.20251201/recce_cloud/api/gitlab.py +82 -0
- recce_nightly-1.27.0.20251201/recce_cloud/artifact.py +57 -0
- recce_nightly-1.27.0.20251201/recce_cloud/ci_providers/__init__.py +9 -0
- recce_nightly-1.27.0.20251201/recce_cloud/ci_providers/base.py +82 -0
- recce_nightly-1.27.0.20251201/recce_cloud/ci_providers/detector.py +147 -0
- recce_nightly-1.27.0.20251201/recce_cloud/ci_providers/github_actions.py +136 -0
- recce_nightly-1.27.0.20251201/recce_cloud/ci_providers/gitlab_ci.py +130 -0
- recce_nightly-1.27.0.20251201/recce_cloud/cli.py +245 -0
- recce_nightly-1.27.0.20251201/recce_cloud/upload.py +214 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201/recce_nightly.egg-info}/PKG-INFO +31 -4
- recce_nightly-1.27.0.20251201/recce_nightly.egg-info/SOURCES.txt +510 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce_nightly.egg-info/requires.txt +7 -1
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce_nightly.egg-info/top_level.txt +1 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/setup.py +7 -1
- recce_nightly-1.27.0.20251201/setup_cloud.py +63 -0
- recce_nightly-1.27.0.20251201/test.py +0 -0
- recce_nightly-1.27.0.20251201/tests/__init__.py +0 -0
- recce_nightly-1.27.0.20251201/tests/adapter/__init__.py +0 -0
- recce_nightly-1.27.0.20251201/tests/adapter/dbt_adapter/__init__.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/tests/adapter/dbt_adapter/test_dbt_cll.py +4 -2
- recce_nightly-1.27.0.20251201/tests/adapter/dbt_adapter/test_proj/.gitignore +5 -0
- recce_nightly-1.27.0.20251201/tests/adapter/dbt_adapter/test_proj/dbt_project.yml +4 -0
- recce_nightly-1.27.0.20251201/tests/adapter/dbt_adapter/test_proj/manifest.json +1 -0
- recce_nightly-1.27.0.20251201/tests/adapter/dbt_adapter/test_proj/package-lock.yml +8 -0
- recce_nightly-1.27.0.20251201/tests/adapter/dbt_adapter/test_proj/packages.yml +7 -0
- recce_nightly-1.27.0.20251201/tests/adapter/dbt_adapter/test_proj/profiles.yml +6 -0
- recce_nightly-1.27.0.20251201/tests/apis/__init__.py +0 -0
- recce_nightly-1.27.0.20251201/tests/apis/row_count_diff.json +59 -0
- recce_nightly-1.27.0.20251201/tests/apis/test_check_events_api.py +615 -0
- recce_nightly-1.27.0.20251201/tests/apis/test_run_func.py +21 -0
- recce_nightly-1.27.0.20251201/tests/catalog.json +527 -0
- recce_nightly-1.27.0.20251201/tests/data/config/recce.yml +11 -0
- recce_nightly-1.27.0.20251201/tests/data/manifest/base/catalog.json +1 -0
- recce_nightly-1.27.0.20251201/tests/data/manifest/base/manifest.json +1 -0
- recce_nightly-1.27.0.20251201/tests/data/manifest/pr2/catalog.json +1 -0
- recce_nightly-1.27.0.20251201/tests/data/manifest/pr2/manifest.json +1 -0
- recce_nightly-1.27.0.20251201/tests/manifest.json +10655 -0
- recce_nightly-1.27.0.20251201/tests/models/__init__.py +0 -0
- recce_nightly-1.27.0.20251201/tests/models/test_check.py +731 -0
- recce_nightly-1.27.0.20251201/tests/models/test_run_models.py +295 -0
- recce_nightly-1.27.0.20251201/tests/recce_cloud/__init__.py +0 -0
- recce_nightly-1.27.0.20251201/tests/recce_cloud/test_ci_providers.py +351 -0
- recce_nightly-1.27.0.20251201/tests/recce_cloud/test_cli.py +372 -0
- recce_nightly-1.27.0.20251201/tests/recce_cloud/test_client.py +273 -0
- recce_nightly-1.27.0.20251201/tests/recce_cloud/test_platform_clients.py +333 -0
- recce_nightly-1.27.0.20251201/tests/recce_state.json +1 -0
- recce_nightly-1.27.0.20251201/tests/state/test_cloud.py +719 -0
- recce_nightly-1.27.0.20251201/tests/state/test_local.py +164 -0
- recce_nightly-1.27.0.20251201/tests/state/test_state_loader.py +211 -0
- recce_nightly-1.27.0.20251201/tests/tasks/__init__.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/tests/test_cli.py +76 -0
- recce_nightly-1.27.0.20251201/tests/test_cli_mcp_optional.py +45 -0
- recce_nightly-1.27.0.20251201/tests/test_mcp_server.py +340 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/tests/test_server.py +37 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/tests/test_summary.py +14 -6
- recce_nightly-1.27.0.20251201/tests/util/__init__.py +0 -0
- recce_nightly-1.27.0.20251201/tests/util/cloud/__init__.py +0 -0
- recce_nightly-1.27.0.20251201/tests/util/cloud/test_check_events.py +255 -0
- recce_nightly-1.27.0.20251201/tests/util/cloud/test_checks.py +204 -0
- recce_nightly-1.27.0.20251201/tests/util/test_api_token.py +119 -0
- recce_nightly-1.27.0.20251201/tests/util/test_breaking.py +1427 -0
- recce_nightly-1.27.0.20251201/tests/util/test_cll.py +706 -0
- recce_nightly-1.27.0.20251201/tests/util/test_lineage.py +122 -0
- recce_nightly-1.27.0.20251201/tests/util/test_onboarding_state.py +84 -0
- recce_nightly-1.27.0.20251201/tests/util/test_recce_cloud.py +231 -0
- recce_nightly-1.27.0.20251201/tox.ini +39 -0
- recce_nightly-1.22.0.20251028/pyproject.toml +0 -5
- recce_nightly-1.22.0.20251028/recce/VERSION +0 -1
- recce_nightly-1.22.0.20251028/recce/data/404.html +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/_UQ-xjTAp8fsO_W6fwsWz/_buildManifest.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/12f8fac4-a2fd98f42126999f.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/272-058426d7d18ce061.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/3a92ee20-9c4519f55ecaa314.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/547-0ec2c77b7f7e3742.js +0 -30
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/55221f3c-eaedf9d5b94c318b.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/619-fd0da05da122117c.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/677-5a68b1f623380d78.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/6cb9c173-6146bae2149a20b1.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/6dc81886-2c18bc834d238e55.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/6df359e9-ccd3f03e27cb41e4.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/712d2a0e-d59bb436efdf3871.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/77857853-3a4914d4c1924f9e.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/8d700b6a.af7d9bc954a29fb6.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/970-48933b692b4e4bc0.js +0 -10
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/9bbc4e60-165ef790329d3a3d.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/aae12a84-32639a375ab447e3.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/ae307f12-a123e529f9bd8d8d.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/app/_not-found/page-7dfdcaecd78d5a88.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/app/layout-594789adafd14ff0.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/app/page-003e36b6a1f7dbe9.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/b2298382-ab7f7e8a190aa0e1.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/ccdbea1e-7c54ced4b2094514.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/ccf8a7b1-4355a32508e4e4fe.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/dc596880-f2eb5767d7b2e80f.js +0 -54
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/e1584f90-0dd0c9a249a22ae0.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/e16c186f-c48ddaa3b8db5c68.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/f3d5503b-20e63c48a8800ac9.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/f795c1dc-18eab1979a47ee7e.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/ffde7897-84586323376fd157.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/framework-e266f44d8130edb8.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/main-47abf61cd543b830.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/main-app-4af540da32cc16fb.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/pages/_app-18fd34a0bf45ecef.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/pages/_error-8bfabea04a6d876c.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/webpack-f09e551a68238929.js +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/css/5da8812af0008c76.css +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/css/8edca58d4abcf908.css +0 -14
- recce_nightly-1.22.0.20251028/recce/data/_next/static/css/abdb9814a3dd18bb.css +0 -1
- recce_nightly-1.22.0.20251028/recce/data/_next/static/css/af2813f12c8a4fd8.css +0 -1
- recce_nightly-1.22.0.20251028/recce/data/index.html +0 -1
- recce_nightly-1.22.0.20251028/recce/data/index.txt +0 -25
- recce_nightly-1.22.0.20251028/recce/models/check.py +0 -55
- recce_nightly-1.22.0.20251028/recce_nightly.egg-info/SOURCES.txt +0 -165
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/LICENSE +0 -0
- {recce_nightly-1.22.0.20251028/recce/adapter → recce_nightly-1.27.0.20251201/integration_tests/sqlmesh}/__init__.py +0 -0
- /recce_nightly-1.22.0.20251028/recce/apis/__init__.py → /recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/data/.keep +0 -0
- {recce_nightly-1.22.0.20251028/tests → recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/hooks}/__init__.py +0 -0
- {recce_nightly-1.22.0.20251028/tests/adapter → recce_nightly-1.27.0.20251201/integration_tests/sqlmesh/macros}/__init__.py +0 -0
- {recce_nightly-1.22.0.20251028/recce/data → recce_nightly-1.27.0.20251201/js/app}/favicon.ico +0 -0
- {recce_nightly-1.22.0.20251028/recce/data → recce_nightly-1.27.0.20251201/js/public}/auth_callback.html +0 -0
- {recce_nightly-1.22.0.20251028/recce/data → recce_nightly-1.27.0.20251201/js/public}/imgs/feedback/thumbs-down.png +0 -0
- {recce_nightly-1.22.0.20251028/recce/data → recce_nightly-1.27.0.20251201/js/public}/imgs/feedback/thumbs-up.png +0 -0
- {recce_nightly-1.22.0.20251028/recce/data → recce_nightly-1.27.0.20251201/js/public}/imgs/reload-image.svg +0 -0
- {recce_nightly-1.22.0.20251028/recce/data → recce_nightly-1.27.0.20251201/js/public}/logo/recce-logo-white.png +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/__init__.py +0 -0
- {recce_nightly-1.22.0.20251028/tests/adapter/dbt_adapter → recce_nightly-1.27.0.20251201/recce/adapter}/__init__.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/adapter/base.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/adapter/dbt_adapter/dbt_version.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/adapter/sqlmesh_adapter.py +0 -0
- {recce_nightly-1.22.0.20251028/tests/tasks → recce_nightly-1.27.0.20251201/recce/apis}/__init__.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/apis/run_api.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/apis/run_func.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/config.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/connect_to_cloud.py +0 -0
- /recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/polyfills-42372ed130431b0a.js → /recce_nightly-1.27.0.20251201/recce/data/_next/static/chunks/a6dad97d9634a72d.js +0 -0
- /recce_nightly-1.22.0.20251028/recce/data/_next/static/media/montserrat-cyrillic-800-normal.ffc85bb1.woff2 → /recce_nightly-1.27.0.20251201/recce/data/_next/static/media/montserrat-cyrillic-800-normal.d80d830d.woff2 +0 -0
- /recce_nightly-1.22.0.20251028/recce/data/_next/static/media/montserrat-cyrillic-800-normal.728ecd06.woff → /recce_nightly-1.27.0.20251201/recce/data/_next/static/media/montserrat-cyrillic-800-normal.f9d58125.woff +0 -0
- /recce_nightly-1.22.0.20251028/recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.622429c0.woff2 → /recce_nightly-1.27.0.20251201/recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.076c2a93.woff2 +0 -0
- /recce_nightly-1.22.0.20251028/recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.e6e0d8d0.woff → /recce_nightly-1.27.0.20251201/recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.a4fa76b5.woff +0 -0
- /recce_nightly-1.22.0.20251028/recce/data/_next/static/media/montserrat-latin-800-normal.cb2a73f0.woff2 → /recce_nightly-1.27.0.20251201/recce/data/_next/static/media/montserrat-latin-800-normal.cde454cc.woff2 +0 -0
- /recce_nightly-1.22.0.20251028/recce/data/_next/static/media/montserrat-latin-800-normal.03b5c539.woff → /recce_nightly-1.27.0.20251201/recce/data/_next/static/media/montserrat-latin-800-normal.d5761935.woff +0 -0
- /recce_nightly-1.22.0.20251028/recce/data/_next/static/media/montserrat-latin-ext-800-normal.b743ada6.woff2 → /recce_nightly-1.27.0.20251201/recce/data/_next/static/media/montserrat-latin-ext-800-normal.40ec0659.woff2 +0 -0
- /recce_nightly-1.22.0.20251028/recce/data/_next/static/media/montserrat-latin-ext-800-normal.9a203bee.woff → /recce_nightly-1.27.0.20251201/recce/data/_next/static/media/montserrat-latin-ext-800-normal.b671449b.woff +0 -0
- /recce_nightly-1.22.0.20251028/recce/data/_next/static/media/montserrat-vietnamese-800-normal.26be96a4.woff → /recce_nightly-1.27.0.20251201/recce/data/_next/static/media/montserrat-vietnamese-800-normal.9f7b8541.woff +0 -0
- /recce_nightly-1.22.0.20251028/recce/data/_next/static/media/montserrat-vietnamese-800-normal.5d0e1261.woff2 → /recce_nightly-1.27.0.20251201/recce/data/_next/static/media/montserrat-vietnamese-800-normal.f9eb854e.woff2 +0 -0
- /recce_nightly-1.22.0.20251028/recce/data/_next/static/media/reload-image.79aabb7d.svg → /recce_nightly-1.27.0.20251201/recce/data/_next/static/media/reload-image.7aa931c7.svg +0 -0
- {recce_nightly-1.22.0.20251028/recce/data/_next/static/_UQ-xjTAp8fsO_W6fwsWz → recce_nightly-1.27.0.20251201/recce/data/_next/static/yS8-HLAmuC0Dpp1LfRScp}/_ssgManifest.js +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/diff.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/event/CONFIG +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/event/SENTRY_DNS +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/event/collector.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/event/track.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/exceptions.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/git.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/github.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/models/__init__.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/models/run.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/pull_request.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/state/__init__.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/state/local.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/tasks/__init__.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/tasks/core.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/tasks/histogram.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/tasks/lineage.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/tasks/profile.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/tasks/query.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/tasks/rowcount.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/tasks/schema.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/tasks/top_k.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/tasks/valuediff.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/util/__init__.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/util/cache.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/util/cll.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/util/io.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/util/lineage.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/util/logger.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/util/onboarding_state.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/util/perf_tracking.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/util/pydantic_model.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/util/singleton.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce/yaml/__init__.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce_nightly.egg-info/dependency_links.txt +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/recce_nightly.egg-info/entry_points.txt +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/setup.cfg +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/tests/adapter/dbt_adapter/conftest.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/tests/adapter/dbt_adapter/dbt_test_helper.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/tests/adapter/dbt_adapter/test_dbt_adapter.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/tests/adapter/dbt_adapter/test_selector.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/tests/tasks/conftest.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/tests/tasks/test_histogram.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/tests/tasks/test_lineage.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/tests/tasks/test_preset_checks.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/tests/tasks/test_profile.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/tests/tasks/test_query.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/tests/tasks/test_row_count.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/tests/tasks/test_schema.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/tests/tasks/test_top_k.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/tests/tasks/test_valuediff.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/tests/test_cloud_listing_cli.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/tests/test_config.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/tests/test_connect_to_cloud.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/tests/test_core.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/tests/test_dbt.py +0 -0
- {recce_nightly-1.22.0.20251028 → recce_nightly-1.27.0.20251201}/tests/test_pull_request.py +0 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# EditorConfig is awesome: http://EditorConfig.org
|
|
2
|
+
|
|
3
|
+
# top-most EditorConfig file
|
|
4
|
+
root = true
|
|
5
|
+
|
|
6
|
+
# Unix-style newlines with a newline ending every file
|
|
7
|
+
[*]
|
|
8
|
+
end_of_line = lf
|
|
9
|
+
insert_final_newline = true
|
|
10
|
+
trim_trailing_whitespace = true
|
|
11
|
+
charset = utf-8
|
|
12
|
+
|
|
13
|
+
# 4 space indentation
|
|
14
|
+
[*.{py,java,r,R}]
|
|
15
|
+
indent_style = space
|
|
16
|
+
indent_size = 4
|
|
17
|
+
|
|
18
|
+
# 2 space indentation
|
|
19
|
+
[*.{js,json,yml,yaml,html,cwl,tsx}]
|
|
20
|
+
indent_style = space
|
|
21
|
+
indent_size = 2
|
|
22
|
+
|
|
23
|
+
[*.{md,Rmd,rst}]
|
|
24
|
+
trim_trailing_whitespace = false
|
|
25
|
+
indent_style = space
|
|
26
|
+
indent_size = 2
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
[flake8]
|
|
2
|
+
# Ignore rules with descriptions:
|
|
3
|
+
ignore =
|
|
4
|
+
# W605: Invalid escape sequence - Ignores invalid escape sequences like '\d' in regex
|
|
5
|
+
W605,
|
|
6
|
+
# E501: Line too long - Allows lines longer than specified max length
|
|
7
|
+
E501,
|
|
8
|
+
# E125: Continuation line with same indent as next logical line
|
|
9
|
+
E125,
|
|
10
|
+
# E126: Continuation line over-indented for hanging indent
|
|
11
|
+
E126,
|
|
12
|
+
# W504: Line break after binary operator
|
|
13
|
+
W504,
|
|
14
|
+
# E203: Whitespace before ':' - Conflicts with Black formatter
|
|
15
|
+
E203,
|
|
16
|
+
# W503: Line break before binary operator - Conflicts with Black formatter
|
|
17
|
+
W503,
|
|
18
|
+
# F811: Redefinition of unused name - Allows redefining imports
|
|
19
|
+
F811
|
|
20
|
+
|
|
21
|
+
max-line-length = 120
|
|
22
|
+
include = recce,
|
|
23
|
+
tests
|
|
24
|
+
exclude = docs,
|
|
25
|
+
.git,
|
|
26
|
+
.venv,
|
|
27
|
+
venv,
|
|
28
|
+
debug,
|
|
29
|
+
build,
|
|
30
|
+
dist,
|
|
31
|
+
images,
|
|
32
|
+
js,
|
|
33
|
+
*.egg-info
|
|
34
|
+
.tox
|
|
35
|
+
per-file-ignores =
|
|
36
|
+
# E402: Module level import not at top of file
|
|
37
|
+
recce/adapter/dbt_adapter.py: E402
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
name: 🐞 Bug Report
|
|
2
|
+
description: Report a bug or an issue you've found with recce
|
|
3
|
+
title: "[Bug] <title>"
|
|
4
|
+
labels: ["bug", "triage"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
Thanks for taking the time to fill out this bug report!
|
|
10
|
+
- type: textarea
|
|
11
|
+
attributes:
|
|
12
|
+
label: Current Behavior
|
|
13
|
+
description: A concise description of what you're experiencing.
|
|
14
|
+
validations:
|
|
15
|
+
required: true
|
|
16
|
+
- type: textarea
|
|
17
|
+
attributes:
|
|
18
|
+
label: Expected Behavior
|
|
19
|
+
description: A concise description of what you expected to happen.
|
|
20
|
+
validations:
|
|
21
|
+
required: true
|
|
22
|
+
- type: textarea
|
|
23
|
+
attributes:
|
|
24
|
+
label: Steps To Reproduce
|
|
25
|
+
description: Steps to reproduce the behavior.
|
|
26
|
+
placeholder: |
|
|
27
|
+
1. In this environment...
|
|
28
|
+
2. With this config...
|
|
29
|
+
3. Run '...'
|
|
30
|
+
4. See error...
|
|
31
|
+
validations:
|
|
32
|
+
required: true
|
|
33
|
+
- type: textarea
|
|
34
|
+
id: logs
|
|
35
|
+
attributes:
|
|
36
|
+
label: Relevant log output
|
|
37
|
+
description: >
|
|
38
|
+
Please copy and paste any relevant log output. This will be
|
|
39
|
+
automatically formatted into code, so no need for backticks.
|
|
40
|
+
Tip: you can find the executed sql in `logs/dbt.log`
|
|
41
|
+
render: shell
|
|
42
|
+
- type: textarea
|
|
43
|
+
attributes:
|
|
44
|
+
label: Environment
|
|
45
|
+
description: |
|
|
46
|
+
examples:
|
|
47
|
+
- recce: 0.1.0 (`recce version`)
|
|
48
|
+
- OS: MacOS 13.2.1
|
|
49
|
+
- Python: 3.9.12 (`python3 --version`)
|
|
50
|
+
- Data Warehouse: snowflake or postgresql 14.10
|
|
51
|
+
- dbt: (`dbt --version`)
|
|
52
|
+
|
|
53
|
+
value: |
|
|
54
|
+
- recce:
|
|
55
|
+
- OS:
|
|
56
|
+
- Python:
|
|
57
|
+
- Data Warehouse:
|
|
58
|
+
- dbt:
|
|
59
|
+
- type: textarea
|
|
60
|
+
attributes:
|
|
61
|
+
label: Additional Context
|
|
62
|
+
description: |
|
|
63
|
+
Links? References? Anything that will give us more context about the issue you are encountering!
|
|
64
|
+
|
|
65
|
+
Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
|
|
66
|
+
validations:
|
|
67
|
+
required: false
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
name: ✨ Feature
|
|
2
|
+
description: Propose a feature for recce
|
|
3
|
+
title: "[Feature] <title>"
|
|
4
|
+
labels: ["enhancement", "triage"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
Thanks for taking the time to fill out this feature request!
|
|
10
|
+
- type: textarea
|
|
11
|
+
attributes:
|
|
12
|
+
label: Describe the feature
|
|
13
|
+
description: A clear and concise description of what you want to happen.
|
|
14
|
+
validations:
|
|
15
|
+
required: true
|
|
16
|
+
- type: textarea
|
|
17
|
+
attributes:
|
|
18
|
+
label: Describe alternatives you've considered
|
|
19
|
+
description: |
|
|
20
|
+
A clear and concise description of any alternative solutions or features you've considered.
|
|
21
|
+
validations:
|
|
22
|
+
required: false
|
|
23
|
+
- type: textarea
|
|
24
|
+
attributes:
|
|
25
|
+
label: Who will this benefit?
|
|
26
|
+
description: |
|
|
27
|
+
What kind of use case will this feature be useful for? Please be specific and provide examples, this will help us prioritize properly.
|
|
28
|
+
validations:
|
|
29
|
+
required: false
|
|
30
|
+
- type: input
|
|
31
|
+
attributes:
|
|
32
|
+
label: Are you interested in contributing this feature?
|
|
33
|
+
description: Let us know if you want to write some code, and how we can help.
|
|
34
|
+
validations:
|
|
35
|
+
required: false
|
|
36
|
+
- type: textarea
|
|
37
|
+
attributes:
|
|
38
|
+
label: Anything else?
|
|
39
|
+
description: |
|
|
40
|
+
Links? References? Anything that will give us more context about the feature you are suggesting!
|
|
41
|
+
validations:
|
|
42
|
+
required: false
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<!-- Thanks for sending a pull request! Here are some check items for you: -->
|
|
2
|
+
|
|
3
|
+
**PR checklist**
|
|
4
|
+
|
|
5
|
+
- [ ] Ensure you have added or ran the appropriate tests for your PR.
|
|
6
|
+
- [ ] DCO signed
|
|
7
|
+
|
|
8
|
+
**What type of PR is this?**
|
|
9
|
+
|
|
10
|
+
**What this PR does / why we need it**:
|
|
11
|
+
|
|
12
|
+
**Which issue(s) this PR fixes**:
|
|
13
|
+
|
|
14
|
+
**Special notes for your reviewer**:
|
|
15
|
+
|
|
16
|
+
**Does this PR introduce a user-facing change?**:
|
|
17
|
+
<!--
|
|
18
|
+
If no, just write "NONE" in the release-note block below.
|
|
19
|
+
If yes, a release note is required:
|
|
20
|
+
Enter your extended release note in the block below. If the PR requires additional action from users switching to the new release, include the string "action required".
|
|
21
|
+
-->
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
# Recce Copilot Instructions
|
|
2
|
+
|
|
3
|
+
## Project Overview
|
|
4
|
+
|
|
5
|
+
Recce is a data validation and review tool for dbt and SQLMesh projects. It's a Python/TypeScript monorepo providing CLI
|
|
6
|
+
tools and a web UI for comparing data environments, performing diffs, and collaborative review.
|
|
7
|
+
|
|
8
|
+
**Key Info:**
|
|
9
|
+
|
|
10
|
+
- **Type:** Python package (main) + TypeScript/React frontend + lightweight recce-cloud CLI
|
|
11
|
+
- **Languages:** Python 3.9-3.13, TypeScript/React 19, Next.js 16
|
|
12
|
+
- **Size:** ~50K lines (Python: 30K, TypeScript: 20K)
|
|
13
|
+
- **Main Commands:** `recce server`, `recce run`, `recce-cloud upload`
|
|
14
|
+
- **Frameworks:** FastAPI, Next.js, React 19, Chakra UI, pnpm
|
|
15
|
+
|
|
16
|
+
## Build & Validation
|
|
17
|
+
|
|
18
|
+
### Python Backend - ALWAYS use these commands in order
|
|
19
|
+
|
|
20
|
+
**Installation (Development):**
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Always run these together - pre-commit hooks are required
|
|
24
|
+
make install-dev
|
|
25
|
+
# OR
|
|
26
|
+
pip install -e .[dev]
|
|
27
|
+
pre-commit install
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**Code Quality - Run before committing:**
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# Format code (Black + isort) - always run first
|
|
34
|
+
make format
|
|
35
|
+
|
|
36
|
+
# Check without modifying
|
|
37
|
+
make check # Runs black --check, isort --check, flake8
|
|
38
|
+
|
|
39
|
+
# Lint only
|
|
40
|
+
make flake8
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Testing:**
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# Basic tests - fast, run for every change
|
|
47
|
+
make test
|
|
48
|
+
# OR
|
|
49
|
+
pytest tests
|
|
50
|
+
|
|
51
|
+
# With coverage report (htmlcov/index.html)
|
|
52
|
+
make test-coverage
|
|
53
|
+
|
|
54
|
+
# Multi-version testing (dbt 1.6-1.9, Python 3.9-3.13)
|
|
55
|
+
make test-tox # ~5-10 minutes
|
|
56
|
+
make test-tox-python-versions # ~10-15 minutes
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**Common Errors & Fixes:**
|
|
60
|
+
|
|
61
|
+
- `ImportError` after adding dependencies: Run `pip install -e .[dev]` again
|
|
62
|
+
- `flake8` failures: Run `make format` first, then check `.flake8` config
|
|
63
|
+
- Test failures: Check if dbt artifacts exist in `integration_tests/dbt/target` and `integration_tests/dbt/target-base`
|
|
64
|
+
|
|
65
|
+
# Updated Section for .github/copilot-instructions.md
|
|
66
|
+
|
|
67
|
+
Replace the **TypeScript Frontend** section and the **CI/CD Validation Pipelines** sections with the updated content
|
|
68
|
+
below:
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
### TypeScript Frontend - CRITICAL build workflow
|
|
73
|
+
|
|
74
|
+
**Installation:**
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
cd js
|
|
78
|
+
pnpm install # Uses pnpm 10, NOT npm or yarn
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Development Server:**
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
cd js
|
|
85
|
+
pnpm dev # Runs Next.js with Turbopack on port 3000
|
|
86
|
+
# OR from root
|
|
87
|
+
make dev
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Build Process - MUST follow this sequence:**
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
cd js
|
|
94
|
+
pnpm run build
|
|
95
|
+
# This does:
|
|
96
|
+
# 1. Cleans ../recce/data/
|
|
97
|
+
# 2. Builds Next.js to js/out/
|
|
98
|
+
# 3. Moves js/out/ to ../recce/data/
|
|
99
|
+
# You MUST run this after ANY frontend changes before testing with 'recce server'
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**Linting & Type Checking:**
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
cd js
|
|
106
|
+
pnpm lint # Biome lint & format check
|
|
107
|
+
pnpm lint:fix # Auto-fix with Biome
|
|
108
|
+
pnpm type:check # TypeScript compiler
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Common Errors & Fixes:**
|
|
112
|
+
|
|
113
|
+
- Changes not appearing in `recce server`: Run `cd js && pnpm run build` then restart server
|
|
114
|
+
- `pnpm: command not found`: Install with `npm install -g corepack@latest && corepack enable`
|
|
115
|
+
- Build fails: Check Node version is >=20 (`node --version`)
|
|
116
|
+
- Type errors: Run `pnpm type:check` to see full error messages
|
|
117
|
+
- Biome lint failures: Run `pnpm lint:fix` for auto-fixable issues
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## CI/CD Validation Pipelines
|
|
122
|
+
|
|
123
|
+
**GitHub Actions workflows that MUST pass:**
|
|
124
|
+
|
|
125
|
+
1. **tests-python.yaml** - Runs on `recce/**` or `tests/**` changes
|
|
126
|
+
|
|
127
|
+
- Flake8 linting (Python 3.10)
|
|
128
|
+
- Tests across dbt 1.6-1.9 (Python 3.10)
|
|
129
|
+
- Tests across Python 3.11-3.13 (latest dbt)
|
|
130
|
+
- Codecov upload
|
|
131
|
+
|
|
132
|
+
2. **tests-js.yaml** - Runs on `js/**` changes
|
|
133
|
+
|
|
134
|
+
- Biome linting with frozen lockfile
|
|
135
|
+
- Frontend build verification
|
|
136
|
+
|
|
137
|
+
3. **integration-tests.yaml** - Full dbt smoke tests
|
|
138
|
+
|
|
139
|
+
- Matrix: Python 3.9-3.13 × dbt 1.6-latest
|
|
140
|
+
- Runs `integration_tests/dbt/smoke_test.sh`
|
|
141
|
+
- Tests: `recce run`, `recce summary`, `recce server`
|
|
142
|
+
|
|
143
|
+
4. **integration-tests-sqlmesh.yaml** - SQLMesh compatibility
|
|
144
|
+
|
|
145
|
+
- Python 3.11 + SQLMesh latest
|
|
146
|
+
- Runs `integration_tests/sqlmesh/test_server.sh`
|
|
147
|
+
|
|
148
|
+
**To replicate CI locally:**
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# Python style check
|
|
152
|
+
pip install flake8 && make flake8
|
|
153
|
+
|
|
154
|
+
# Python tests (single version)
|
|
155
|
+
make test
|
|
156
|
+
|
|
157
|
+
# Python tests (multi-version) - matches CI
|
|
158
|
+
make test-tox
|
|
159
|
+
|
|
160
|
+
# Frontend lint + build - matches CI
|
|
161
|
+
cd js && pnpm install --frozen-lockfile && pnpm lint && pnpm run build
|
|
162
|
+
|
|
163
|
+
# Integration test (dbt)
|
|
164
|
+
cd integration_tests/dbt && ./smoke_test.sh
|
|
165
|
+
|
|
166
|
+
# Integration test (SQLMesh)
|
|
167
|
+
cd integration_tests/sqlmesh && ./prep_env.sh && ./test_server.sh
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Project Layout
|
|
171
|
+
|
|
172
|
+
### Root Files
|
|
173
|
+
|
|
174
|
+
- `setup.py` - Main package (recce), installs `recce` command
|
|
175
|
+
- `setup_cloud.py` - Cloud CLI (recce-cloud), installs `recce-cloud` command
|
|
176
|
+
- `Makefile` - All build/test commands
|
|
177
|
+
- `tox.ini` - Multi-version testing (dbt 1.6-1.9)
|
|
178
|
+
- `pyproject.toml` - Black/isort config (line-length: 120)
|
|
179
|
+
- `.flake8` - Linting rules (ignores W605, E501, E203, W503, F811)
|
|
180
|
+
- `.pre-commit-config.yaml` - Git hooks (Black, isort, flake8, trailing whitespace)
|
|
181
|
+
|
|
182
|
+
### Python Backend (`recce/`)
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
recce/
|
|
186
|
+
├── cli.py # Main CLI entry point (click commands)
|
|
187
|
+
├── __init__.py # Version loading
|
|
188
|
+
├── VERSION # Single source of truth for version
|
|
189
|
+
├── adapter/ # dbt/SQLMesh adapters (BaseAdapter interface)
|
|
190
|
+
│ ├── dbt_adapter.py
|
|
191
|
+
│ └── sqlmesh_adapter.py
|
|
192
|
+
├── apis/ # FastAPI routes
|
|
193
|
+
│ ├── server.py # Main FastAPI app
|
|
194
|
+
│ ├── check_func.py # Check CRUD
|
|
195
|
+
│ └── run_func.py # Run execution
|
|
196
|
+
├── core.py # RecceContext singleton
|
|
197
|
+
├── models/ # Pydantic models (Check, Run, etc.)
|
|
198
|
+
├── tasks/ # Async task execution (QueryTask, DiffTask, etc.)
|
|
199
|
+
├── state/ # State persistence (FileStateLoader, CloudStateLoader)
|
|
200
|
+
├── config.py # recce.yml config loading
|
|
201
|
+
└── data/ # GENERATED - DO NOT EDIT (from js/out/)
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### TypeScript Frontend (`js/`)
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
js/
|
|
208
|
+
├── package.json # pnpm 10, Node >=20, React 19, Next.js 16
|
|
209
|
+
├── tsconfig.json # TypeScript config
|
|
210
|
+
├── next.config.mjs # Next.js config (output: 'export')
|
|
211
|
+
├── src/
|
|
212
|
+
│ ├── app/ # Next.js app router
|
|
213
|
+
│ ├── lib/
|
|
214
|
+
│ │ ├── api/ # API client (axios)
|
|
215
|
+
│ │ └── hooks/ # React hooks
|
|
216
|
+
│ ├── components/ # React components (Chakra UI)
|
|
217
|
+
│ ├── constants/
|
|
218
|
+
│ └── utils/
|
|
219
|
+
├── .husky/ # Git hooks for JS files
|
|
220
|
+
└── out/ # Build output (moved to ../recce/data/)
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Cloud CLI (`recce_cloud/`)
|
|
224
|
+
|
|
225
|
+
```
|
|
226
|
+
recce_cloud/
|
|
227
|
+
├── cli.py # recce-cloud CLI (click)
|
|
228
|
+
├── upload.py # Artifact upload logic
|
|
229
|
+
├── ci_providers.py # GitHub/GitLab detection
|
|
230
|
+
└── artifact.py # Artifact validation
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### Tests (`tests/`)
|
|
234
|
+
|
|
235
|
+
- Unit tests with pytest
|
|
236
|
+
- Integration tests in `integration_tests/dbt/` and `integration_tests/sqlmesh/`
|
|
237
|
+
- Test coverage report: `htmlcov/index.html`
|
|
238
|
+
|
|
239
|
+
### Configuration Files
|
|
240
|
+
|
|
241
|
+
- **Python linting:** `.flake8` (line-length 120, ignores E203/W503/E501)
|
|
242
|
+
- **Python formatting:** `pyproject.toml` (Black line-length 120, isort profile black)
|
|
243
|
+
- **Frontend:** `js/eslint.config.mjs`, `js/tsconfig.json`
|
|
244
|
+
- **Pre-commit:** `.pre-commit-config.yaml` (excludes `recce/data/`)
|
|
245
|
+
|
|
246
|
+
## Architecture Notes
|
|
247
|
+
|
|
248
|
+
**Dual Package Structure:**
|
|
249
|
+
|
|
250
|
+
- Main package (`recce`) has 20+ dependencies (FastAPI, dbt parsing, etc.)
|
|
251
|
+
- Cloud CLI (`recce-cloud`) has only 3 dependencies (click, requests, rich) for fast CI installs
|
|
252
|
+
- Both share `recce/VERSION` file
|
|
253
|
+
|
|
254
|
+
**State Management:**
|
|
255
|
+
|
|
256
|
+
- `RecceContext` singleton holds all runtime state
|
|
257
|
+
- Supports local (`FileStateLoader`) and cloud (`CloudStateLoader`) persistence
|
|
258
|
+
- State auto-saves to `recce_state.json` on server shutdown
|
|
259
|
+
- NEVER commit state files (user-specific runtime data)
|
|
260
|
+
|
|
261
|
+
**Frontend Build:**
|
|
262
|
+
|
|
263
|
+
- Next.js builds static export to `js/out/`
|
|
264
|
+
- Build script moves to `recce/data/` which Python serves
|
|
265
|
+
- Changes require rebuild: `cd js && pnpm run build`
|
|
266
|
+
|
|
267
|
+
**Adapter Pattern:**
|
|
268
|
+
|
|
269
|
+
- All adapters extend `BaseAdapter` abstract class
|
|
270
|
+
- Must implement: `get_lineage()`, `get_model()`, `execute_sql()`, etc.
|
|
271
|
+
- Loaded dynamically via CLI flags (`--sqlmesh`)
|
|
272
|
+
|
|
273
|
+
**Critical Paths:**
|
|
274
|
+
|
|
275
|
+
1. User creates check → POST `/api/checks` → `check_func.py`
|
|
276
|
+
2. User runs check → POST `/api/runs` → `run_func.py` → async task
|
|
277
|
+
3. Frontend polls `/api/runs/{id}/wait` → returns results
|
|
278
|
+
4. State auto-saves via `RecceContext.save()`
|
|
279
|
+
|
|
280
|
+
## Key Commands Reference
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
# Development setup
|
|
284
|
+
make install-dev # Install with dev dependencies + hooks
|
|
285
|
+
|
|
286
|
+
# Code quality
|
|
287
|
+
make format # Format Python (Black + isort)
|
|
288
|
+
make check # Check Python without changes
|
|
289
|
+
make flake8 # Lint Python
|
|
290
|
+
make format-cloud # Format recce-cloud
|
|
291
|
+
make check-cloud # Check recce-cloud
|
|
292
|
+
|
|
293
|
+
# Testing
|
|
294
|
+
make test # Fast unit tests
|
|
295
|
+
make test-coverage # Tests with HTML coverage
|
|
296
|
+
make test-tox # Multi-version dbt tests (~10 min)
|
|
297
|
+
|
|
298
|
+
# Frontend
|
|
299
|
+
cd js && pnpm install # Install dependencies
|
|
300
|
+
cd js && pnpm dev # Dev server (port 3000)
|
|
301
|
+
cd js && pnpm run build # REQUIRED after frontend changes
|
|
302
|
+
cd js && pnpm lint # ESLint
|
|
303
|
+
cd js && pnpm type:check # TypeScript check
|
|
304
|
+
|
|
305
|
+
# Running Recce
|
|
306
|
+
recce server # Start server (localhost:8000)
|
|
307
|
+
recce debug # Diagnose setup issues
|
|
308
|
+
recce run # Execute checks from recce.yml
|
|
309
|
+
|
|
310
|
+
# Cloud CLI
|
|
311
|
+
recce-cloud upload # Upload artifacts to Recce Cloud
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
## CRITICAL: Trust These Instructions
|
|
315
|
+
|
|
316
|
+
**Always prefer these documented commands over exploration.** The build process has specific ordering requirements:
|
|
317
|
+
|
|
318
|
+
1. Python changes: `make format` → `make check` → `make test`
|
|
319
|
+
2. Frontend changes: `cd js && pnpm run build` → restart `recce server`
|
|
320
|
+
3. Before committing: `make check` and `cd js && pnpm lint && pnpm type:check`
|
|
321
|
+
|
|
322
|
+
**When instructions are incomplete or incorrect:** Only then use search/exploration tools. Report findings so
|
|
323
|
+
instructions can be updated.
|
|
324
|
+
|
|
325
|
+
**Common pitfalls to avoid:**
|
|
326
|
+
|
|
327
|
+
- Don't edit `recce/data/` directly (regenerate with `cd js && pnpm run build`)
|
|
328
|
+
- Don't skip `make format` (Black/isort are enforced by CI)
|
|
329
|
+
- Don't use `npm` or `yarn` (must use `pnpm`)
|
|
330
|
+
- Don't commit `recce_state.json` or integration test outputs
|
|
331
|
+
- Don't forget to restart `recce server` after frontend builds
|