René's URL Explorer Experiment


Title: feat(cli): add BigQuery Google OAuth authentication by tkislan · Pull Request #506 · deepnote/deepnote · GitHub

Open Graph Title: feat(cli): add BigQuery Google OAuth authentication by tkislan · Pull Request #506 · deepnote/deepnote

X Title: feat(cli): add BigQuery Google OAuth authentication by tkislan · Pull Request #506 · deepnote/deepnote

Description: Adds deepnote integrations auth, so a local deepnote run can execute SQL blocks against a big-query integration configured with authMethod: google-oauth. Today those blocks fail inside Python with a generic "not linked with a connected integration" message, because the synchronous env var generator emits no SQL_ variable for federated metadata. The CLI runs a PKCE authorization-code flow through Deepnote's existing OAuth proxy, exchanges the code locally, and stores the refresh token per integration under ~/.deepnote/federated-auth-tokens/. At run start it mints an access token for each federated integration a block that will actually execute references, and injects it as the SQL_ variable the generated Python reads. Chunks Seven commits, each independently reviewable; they are not independently shippable. Commit 1 0376fd7 PKCE, state, code exchange and refresh against Google's token endpoint 2 606d083 Per-integration token store, atomic writes, 0600 in 0700 3 09da370 Loopback callback server, plus two browser.ts prerequisite fixes 4 bf82bf1 The integrations auth command, CLI registration, completions 5 88e01bb getBigQueryOAuthSqlAlchemyInput in @deepnote/database-integrations 6 e1d336c The deepnote run credential gate and the deepnote lint false-positive fix 7 c1ae987 README and skills/deepnote references Plus 54a1163 and a473a4f, both from review feedback: extending the lint fix to run --context, and covering two run-level guarantees that had no test. Behaviour worth reviewing closely The gate runs before the execution engine. Ordering inside setupProject is now scope, interpreter, upstream block ids, credential gate, then the requirements check. A missing or stale credential fails the command with no kernel started and no block executed, so nothing the notebook would have done first can leave a side effect behind. Scoped to blocks that will actually execute, not the notebook. collectRequiredIntegrationIds is notebook-wide and stays that way for the API merge and the missing-integration check, but using it here would make deepnote run --block demand a browser login for an integration the run never touches. resolveUpstreamExecutionBlockIds is hoisted into setupProject so the gate and the execution agree on the block set by construction; it returns immediately without --block, so a normal run pays nothing. --dry-run contacts nothing and writes nothing. It reads the token store and compares the client fingerprint, and fails the same way a real run would if either is missing. The authorization-code grant is attempted exactly once, unlike the refresh grant. A code is single-use and a lost response is indistinguishable from an undelivered request, so a retry can replay a code Google has already consumed — which per RFC 6749 §4.1.2 lets Google revoke every token minted from it. The same invariant is defended one layer up by the loopback server's synchronous claim: nothing after a claim can settle the flow, because any page open in the user's browser can reach a loopback port. Bugs found and fixed during review Each was reproduced before being fixed, and each has a test that fails against the old code. One --domain produced two different hosts. redirectUri was interpolated while the start URL went through new URL(), which strips a default port and lowercases the host — so --domain deepnote.com:443 sent Google a redirect_uri the proxy never used, failing only after the user consented. A post-claim callback with a bad state killed the legitimate in-flight flow, burning the authorization code. The token store did not own version/integrationId: Omit is a structural supertype of StoredToken, so spreading the payload last let a caller reinstate them and write an entry readToken then rejects. The lint fix reached deepnote lint but not run --context, which runs the same check. Not done No end-to-end run against a real GCP OAuth client. Every Google and proxy interaction is exercised against a local stub server only. The --domain bug above is exactly the class this would catch. The two --block scope cases are verified at the resolver level and by manual execution, not by an automated run-level test. Deliberate exclusions are recorded rather than fixed: no integrations logout, no SSH tunnelling, no keychain encryption. Note that getEnvironmentVariablesForIntegrations already emits BQ_CLIENTSECRET for these integrations into the kernel environment. That is pre-existing generic behaviour for every integration type and is untouched here, but it is worth tracking separately. Verification pnpm test 3219 passed / 1 skipped / 181 files · pnpm typecheck exit 0 · pnpm biome:check clean on all source · pnpm prettier:check clean. New behaviour was mutation-tested rather than assumed: each assertion was checked against a deliberately broken implementation, and the survivors are documented in the test comments as understood non-gaps rather than papered over. Summary by CodeRabbit New Features Added integrations auth [id] for browser-based authentication of Google OAuth BigQuery integrations. Authentication credentials are stored locally and refreshed for local runs. Dry runs check stored credentials without contacting Google or refreshing tokens. Added shell completions for the authentication command. Local runs check credentials for integrations used by selected blocks; cloud runs are unaffected. Linting recognizes configured Google OAuth BigQuery integrations without checking stored credentials. Bug Fixes Improved browser-launch handling across platforms and credential validation and error reporting. Documentation Updated CLI help and guides with authentication steps, environment-file options, and local-run credential requirements.

Open Graph Description: Adds deepnote integrations auth, so a local deepnote run can execute SQL blocks against a big-query integration configured with authMethod: google-oauth. Today those blocks fail inside Python with ...

X Description: Adds deepnote integrations auth, so a local deepnote run can execute SQL blocks against a big-query integration configured with authMethod: google-oauth. Today those blocks fail inside Python with ...

Opengraph URL: https://github.com/deepnote/deepnote/pull/506

X: @github

direct link

Domain: github.com

react-profiling0
react-import-mapreact,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@d5750093facf
route-pattern/:user_id/:repository/pull/:id/commits/:range(.:format)
route-controllerpull_requests
route-actioncommits
fetch-noncev2:6d99a525-9004-ce98-e1b8-8384c7131a03
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idCEE0:8FA3F:930A26:C35AED:6AEDCBE5
html-safe-nonce081e24e5d6174363fd7170a037f6d2192efb20f1056e57acf7f56f11a4616e6a
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDRUUwOjhGQTNGOjkzMEEyNjpDMzVBRUQ6NkFFRENCRTUiLCJ2aXNpdG9yX2lkIjoiNzE5NDI0NTk1OTc3MDgxOTU1NyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmaceb3347973326b47484a8c2bab0a6ae2263b220af7f833b653fa890f028e24641
hovercard-subject-tagpull_request:4413845890
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/commits
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/deepnote/deepnote/pull/506/commits/8552a69512cf03aac13567172cfb8b79dfb7921d
twitter:imagehttps://avatars.githubusercontent.com/u/5370798?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/5370798?s=400&v=4
og:image:altAdds deepnote integrations auth, so a local deepnote run can execute SQL blocks against a big-query integration configured with authMethod: google-oauth. Today those blocks fail inside Python with ...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Nonef60373873bb1ef795e8511ea1f2a76997e9c649d72b02942aedf2def3423a0ce
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/deepnote/deepnote git https://github.com/deepnote/deepnote.git
octolytics-dimension-user_id45339858
octolytics-dimension-user_logindeepnote
octolytics-dimension-repository_id1066509034
octolytics-dimension-repository_nwodeepnote/deepnote
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id1066509034
octolytics-dimension-repository_network_root_nwodeepnote/deepnote
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release0f55cfa61438c7dc93d1024a1e5e5182b36830e2
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/deepnote/deepnote/pull/506/commits/8552a69512cf03aac13567172cfb8b79dfb7921d#start-of-content
https://github.com/
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fdeepnote%2Fdeepnote%2Fpull%2F506%2Fcommits%2F8552a69512cf03aac13567172cfb8b79dfb7921d
GitHubRepository hosting, code review, and collaborationhttps://github.com/platform
CopilotAI coding agent for tasks, projects, and automated workhttps://github.com/features/copilot
ActionsCI/CD and automationhttps://github.com/features/actions
Code QualityQuality analysis, fixes, and enforcementhttps://github.com/features/code-quality
CodespacesCloud development environmentshttps://github.com/features/codespaces
Code SecurityVulnerability detection and remediationhttps://github.com/security/advanced-security/code-security
Secret ProtectionSecret scanning and leak preventionhttps://github.com/security/advanced-security/secret-protection
All Featureshttps://github.com/features
Documentationhttps://docs.github.com/en
Traininghttps://learn.github.com/skills
Certificationshttps://learn.github.com/credentials
Build with Copilothttps://github.com/features/ai
Customize Copilothttps://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/customize-copilot-overview
Integrationshttps://github.com/marketplace
Trending reposhttps://github.com/trending
GitHub Sponsorshttps://github.com/open-source/sponsors
Developer articleshttps://github.com/resources/articles
ChangelogYour source for the latest features, improvements, and fixes across GitHub products, all in one place.https://github.blog/changelog/
Enterpriseshttps://github.com/enterprise
Teamhttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
See all industrieshttps://github.com/solutions/industry
Why GitHubhttps://github.com/why-github
Customer Storieshttps://github.com/customer-stories
Business insightshttps://github.com/solutions/executive-insights
Trust Centerhttps://github.com/trust-center
GitHub Advanced SecurityEnterprise-grade code securityhttps://github.com/security/advanced-security
Copilot for businessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Documentationhttps://docs.github.com/en
Resource centerhttps://github.com/resources
Bloghttps://github.blog/
Events & webinarshttps://github.com/resources/events
Community Forumhttps://github.com/orgs/community/discussions
Customer Storieshttps://github.com/customer-stories
Integrationshttps://github.com/marketplace
Customer supporthttps://help.github.com/
Traininghttps://learn.github.com/skills
GitHub Statushttps://www.githubstatus.com/
Abouthttps://github.com/about
Partnershttps://github.com/partners
Changeloghttps://github.blog/changelog/
GitHub UniverseThe event for developers, by developers — talks, workshops, and what’s next for GitHub.https://githubuniverse.com/
Pricinghttps://github.com/pricing
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fdeepnote%2Fdeepnote%2Fpull%2F506%2Fcommits%2F8552a69512cf03aac13567172cfb8b79dfb7921d
Sign uphttps://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Fcommits&source=header-repo&source_repo=deepnote%2Fdeepnote
Reloadhttps://github.com/deepnote/deepnote/pull/506/commits/8552a69512cf03aac13567172cfb8b79dfb7921d
Reloadhttps://github.com/deepnote/deepnote/pull/506/commits/8552a69512cf03aac13567172cfb8b79dfb7921d
Reloadhttps://github.com/deepnote/deepnote/pull/506/commits/8552a69512cf03aac13567172cfb8b79dfb7921d
deepnotehttps://github.com/deepnote
deepnotehttps://github.com/deepnote/deepnote
Codehttps://github.com/deepnote/deepnote
Issues14 (14)https://github.com/deepnote/deepnote/issues
Pull requests24 (24)https://github.com/deepnote/deepnote/pulls
Discussionshttps://github.com/deepnote/deepnote/discussions
Actionshttps://github.com/deepnote/deepnote/actions
Security and qualityhttps://github.com/deepnote/deepnote/security
Insightshttps://github.com/deepnote/deepnote/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fdeepnote%2Fdeepnote%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fdeepnote%2Fdeepnote%2Fissues%2Fnew%2Fchoose
tkislanhttps://github.com/tkislan
mainhttps://github.com/deepnote/deepnote/tree/main
feat/bigquery-google-oauth-clihttps://github.com/deepnote/deepnote/tree/feat/bigquery-google-oauth-cli
Conversation 25 https://github.com/deepnote/deepnote/pull/506
Commits 37 https://github.com/deepnote/deepnote/pull/506/commits
Checks 21 https://github.com/deepnote/deepnote/pull/506/checks
Files changed https://github.com/deepnote/deepnote/pull/506/files
Please reload this pagehttps://github.com/deepnote/deepnote/pull/506/commits/8552a69512cf03aac13567172cfb8b79dfb7921d
feat(cli): add BigQuery Google OAuth authentication https://github.com/deepnote/deepnote/pull/506/commits/8552a69512cf03aac13567172cfb8b79dfb7921d#top
Show all changes 37 commits https://github.com/deepnote/deepnote/pull/506/files
0376fd7 feat(cli): add Google OAuth token exchange for federated integrations tkislan Aug 31, 2026 https://github.com/deepnote/deepnote/pull/506/commits/0376fd7a43e3cfaf7fa81e36b4d2e02c18c9df0f
606d083 feat(cli): add per-integration token store for federated auth tkislan Aug 31, 2026 https://github.com/deepnote/deepnote/pull/506/commits/606d08319bb8e953d1364e89bbbc3fb3b4531881
09da370 feat(cli): add OAuth loopback callback server tkislan Sep 1, 2026 https://github.com/deepnote/deepnote/pull/506/commits/09da3700cf1acab1f806cc39aee0c2d1a3c9aa35
88e01bb feat(database-integrations): add BigQuery Google OAuth SQLAlchemy input tkislan Sep 1, 2026 https://github.com/deepnote/deepnote/pull/506/commits/88e01bb7cdb14d5b2d9ca97fa419134cc02b187d
bf82bf1 feat(cli): add `deepnote integrations auth` for BigQuery Google OAuth tkislan Sep 1, 2026 https://github.com/deepnote/deepnote/pull/506/commits/bf82bf15f42ed203725df93c3c9a218acb007643
e1d336c feat(cli): gate `deepnote run` on federated BigQuery credentials tkislan Sep 1, 2026 https://github.com/deepnote/deepnote/pull/506/commits/e1d336c3bd26583e56d93249d543921c91e2cbf9
c1ae987 docs(cli): document `integrations auth` and the run credential gate tkislan Sep 1, 2026 https://github.com/deepnote/deepnote/pull/506/commits/c1ae9872261ca3da4b715295265f48eb2974803f
54a1163 fix(cli): apply the federated-integration lint fix to `run --context`… tkislan Sep 1, 2026 https://github.com/deepnote/deepnote/pull/506/commits/54a11635f845d323ca429fcb2c0a9a2af8e89524
a473a4f test(cli): cover the two run-level guarantees the plan defines as done tkislan Sep 1, 2026 https://github.com/deepnote/deepnote/pull/506/commits/a473a4f323fd4419ee393f76a9dd1749bf71fa4c
7ee8601 test(cli): cover the review fixes and the SIGINT handler tkislan Sep 1, 2026 https://github.com/deepnote/deepnote/pull/506/commits/7ee8601cc7c9a3a5f351bb6cdccd4e5d04c847fd
1c20d51 fix(cli): keep a revoked refresh token instead of deleting it tkislan Sep 2, 2026 https://github.com/deepnote/deepnote/pull/506/commits/1c20d51c737d43b8ca13abc743ccfcc15f0aac3b
8ad8451 fix(cli): reject a URL-shaped --domain before the OAuth flow starts tkislan Sep 2, 2026 https://github.com/deepnote/deepnote/pull/506/commits/8ad8451f398c4ff0732a2ea23dfb844f7fa62749
97c7704 fix(cli): scope the zsh integrations completion to its subcommand tkislan Sep 2, 2026 https://github.com/deepnote/deepnote/pull/506/commits/97c77043188045d458fd955ca2b4337800e303e8
b8e36c7 refactor(cli): parse a retryable error's name with zod, not a cast tkislan Sep 2, 2026 https://github.com/deepnote/deepnote/pull/506/commits/b8e36c70534d2333a48fc6925b54713aab0c5887
d51d5e7 test(cli): pin which integrations the run credential gate checks tkislan Sep 2, 2026 https://github.com/deepnote/deepnote/pull/506/commits/d51d5e7a0b759108bbaa9690aef56e61d4cf4e01
fd65c19 chore: make the spell check pass on this branch tkislan Sep 2, 2026 https://github.com/deepnote/deepnote/pull/506/commits/fd65c1903cfc30a72d24a4f687a89a3b00f7b7c4
5a84806 Merge remote-tracking branch 'origin/main' into feat/bigquery-google-… tkislan Sep 30, 2026 https://github.com/deepnote/deepnote/pull/506/commits/5a84806de8ba4475019319a231bc20cfad1182a3
09db188 fix(cli): read DEEPNOTE_TOKEN from --env-file in integrations auth tkislan Sep 30, 2026 https://github.com/deepnote/deepnote/pull/506/commits/09db18846a9d7d04bd733a10f2231504991b8ee5
375983b docs(skill): drop the MCP sentence from the cli-run reference tkislan Sep 30, 2026 https://github.com/deepnote/deepnote/pull/506/commits/375983bc787f01287be2ccd2f295af021b82e011
a06c919 docs: document running BigQuery OAuth notebooks with the Deepnote CLI tkislan Sep 30, 2026 https://github.com/deepnote/deepnote/pull/506/commits/a06c919412b203e5d27e131665554f0d8df18d9e
0e2793d docs(cli): say the auth consent URL needs a browser on this machine tkislan Oct 22, 2026 https://github.com/deepnote/deepnote/pull/506/commits/0e2793d5d4b62148751f83b527e23cac0f25c813
79b11aa refactor(cli): name the run credential gate for what it does tkislan Oct 22, 2026 https://github.com/deepnote/deepnote/pull/506/commits/79b11aa262ed50f50719e33401ce386083361fb1
438b8b5 refactor(cli): trim the OAuth comments and tests to what they protect tkislan Oct 22, 2026 https://github.com/deepnote/deepnote/pull/506/commits/438b8b57b2d223a78c8318bfb117aa3c8af0b17b
2b4aa7a test(cli): cover the OAuth review gaps and handle rejections before a… tkislan Oct 22, 2026 https://github.com/deepnote/deepnote/pull/506/commits/2b4aa7aba47fc650e1757c6ce1734c7ab44b3090
37f7766 refactor(cli): name each token file after the lowercased integration id tkislan Oct 22, 2026 https://github.com/deepnote/deepnote/pull/506/commits/37f7766793f17f426c31b588bef39ed9d29cefcc
1b57961 refactor(cli): drop the blank env: walker from integrations auth tkislan Oct 22, 2026 https://github.com/deepnote/deepnote/pull/506/commits/1b57961d70fc6aa11a9e4243cb024f5119248bfc
e1a8713 Merge remote-tracking branch 'origin/main' into feat/bigquery-google-… tkislan Oct 22, 2026 https://github.com/deepnote/deepnote/pull/506/commits/e1a87130b72788fc02f9915e4c6d4c69f9344823
b9768ca docs(cli): say when a stored BigQuery OAuth credential carries over tkislan Oct 22, 2026 https://github.com/deepnote/deepnote/pull/506/commits/b9768ca7e4bdb4f2b4b8f6317ba283a209a0ad81
27779f0 Merge remote-tracking branch 'origin/main' into feat/bigquery-google-… tkislan Oct 30, 2026 https://github.com/deepnote/deepnote/pull/506/commits/27779f05d507eb430f7f4fe6fcfd1eef190f43fc
ed12da4 fix(cli): scope the integrations auth --domain example to local integ… tkislan Oct 30, 2026 https://github.com/deepnote/deepnote/pull/506/commits/ed12da41870f00efec5f4e71f4118579d4194f8d
a5ce29d fix(cli): keep federated integrations' OAuth client secret out of the… tkislan Nov 1, 2026 https://github.com/deepnote/deepnote/pull/506/commits/a5ce29dd54e86160f90b19a536f5a2a7840c6a3a
a2669f6 fix(cli): treat unauthorized_client as a rejected OAuth client tkislan Nov 1, 2026 https://github.com/deepnote/deepnote/pull/506/commits/a2669f6ec41b21d7f0b697a57c4e89a8d1799fd6
bd3bbd1 refactor(cli): write federated auth tokens with a plain writeFile tkislan Nov 1, 2026 https://github.com/deepnote/deepnote/pull/506/commits/bd3bbd14e23f796ec5daaeb4bb43752cacb1808a
77302c6 test(cli): use template-string YAML fixtures and Headers in auth tests tkislan Nov 1, 2026 https://github.com/deepnote/deepnote/pull/506/commits/77302c6d1ab0eafaa0227a57fffc5b777c3f900c
8552a69 test(cli): cover an upstream SQL block reaching the run credential gate tkislan Nov 1, 2026 https://github.com/deepnote/deepnote/pull/506/commits/8552a69512cf03aac13567172cfb8b79dfb7921d
c6aa21e refactor(cli): rename the credential gate's federatedIds parameter tkislan Nov 1, 2026 https://github.com/deepnote/deepnote/pull/506/commits/c6aa21eccc47b1835511f1daabb71bcf1a55695c
56d4db2 Merge branch 'main' into feat/bigquery-google-oauth-cli tkislan Nov 5, 2026 https://github.com/deepnote/deepnote/pull/506/commits/56d4db253d351276d3432ce445b47e765917eef6
Clear filters https://github.com/deepnote/deepnote/pull/506/commits/8552a69512cf03aac13567172cfb8b79dfb7921d
Please reload this pagehttps://github.com/deepnote/deepnote/pull/506/commits/8552a69512cf03aac13567172cfb8b79dfb7921d
Please reload this pagehttps://github.com/deepnote/deepnote/pull/506/commits/8552a69512cf03aac13567172cfb8b79dfb7921d
Prev https://github.com/deepnote/deepnote/pull/506/commits/77302c6d1ab0eafaa0227a57fffc5b777c3f900c
Next https://github.com/deepnote/deepnote/pull/506/commits/c6aa21eccc47b1835511f1daabb71bcf1a55695c
https://claude.ai/code/session_013Y9ynBkZNNHhdxuKcXL5Eshttps://claude.ai/code/session_013Y9ynBkZNNHhdxuKcXL5Es
Please reload this pagehttps://github.com/deepnote/deepnote/pull/506/commits/8552a69512cf03aac13567172cfb8b79dfb7921d
https://github.com/tkislan
https://github.com/claude
tkislanhttps://github.com/deepnote/deepnote/commits?author=tkislan
claudehttps://github.com/deepnote/deepnote/commits?author=claude
https://github.com/deepnote/deepnote/blob/main/.github/CODEOWNERS#L2
packages/cli/src/commands/run.test.tshttps://github.com/deepnote/deepnote/pull/506/commits/8552a69512cf03aac13567172cfb8b79dfb7921d#diff-230f6aaa853030f701f82028ebd0815847e138377fb2aa3b9ca5f24e39a1b19d
View file https://github.com/deepnote/deepnote/blob/8552a69512cf03aac13567172cfb8b79dfb7921d/packages/cli/src/commands/run.test.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/deepnote/deepnote/pull/506/commits/{{ revealButtonHref }}
https://github.com/deepnote/deepnote/pull/506/commits/8552a69512cf03aac13567172cfb8b79dfb7921d#diff-230f6aaa853030f701f82028ebd0815847e138377fb2aa3b9ca5f24e39a1b19d
https://github.com/deepnote/deepnote/pull/506/commits/8552a69512cf03aac13567172cfb8b79dfb7921d#diff-230f6aaa853030f701f82028ebd0815847e138377fb2aa3b9ca5f24e39a1b19d
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.