René's URL Explorer Experiment


Title: SK-2963: warn at startup when a beta/dev build targets a Production vault by Devesh-Skyflow · Pull Request #274 · skyflowapi/skyflow-python · GitHub

Open Graph Title: SK-2963: warn at startup when a beta/dev build targets a Production vault by Devesh-Skyflow · Pull Request #274 · skyflowapi/skyflow-python

X Title: SK-2963: warn at startup when a beta/dev build targets a Production vault by Devesh-Skyflow · Pull Request #274 · skyflowapi/skyflow-python

Description: Summary Corrective action from the Fifth Third Bank RCA (CUST-4287): a beta/pre-release SDK build ended up running in a customer's Production environment undetected. This adds a startup warning so that doesn't happen silently again. Adds a WARN-level log, emitted once in Skyflow.Builder.build(), when: the SDK's own version (SDK_VERSION) is non-GA — any PEP 440 bN or .devN+ suffix, and at least one configured vault's env is explicitly Env.PROD. Note on this SDK specifically: unlike Java/Node/Go, Python has no SDK-side default-to-PROD for a missing env — validate_vault_config only validates env if the key is present at all, and samples always set it explicitly. So any_vault_is_prod() here only fires on an explicit Env.PROD, matching this SDK's real behavior rather than assuming a default that doesn't exist in this codebase. Changes skyflow/utils/_utils.py: is_non_ga_version() and any_vault_is_prod() — small pure functions, exported through skyflow/utils/__init__.py for direct unit testing. skyflow/utils/_skyflow_messages.py: new SkyflowMessages.Warning.BETA_BUILD_WARNING. skyflow/client/skyflow.py: wires the check into Builder.build(), right before constructing Skyflow(self). Goes through the existing log_warn(..., self.__logger), so it respects the configured log level exactly like the existing UPDATE_LOG_LEVEL_DEPRECATED warning does. Testing tests/utils/test__utils.py: unit tests for is_non_ga_version (GA/beta/dev/None/garbage) and any_vault_is_prod (empty, none-prod, one-of-many-prod, missing-env). tests/client/test_skyflow.py (TestSkyflowBetaBuildWarning): patches skyflow.client.skyflow.SDK_VERSION to a fake beta value and exercises the real build() wiring end-to-end — confirms it warns for an explicit PROD vault and for one-of-several, stays silent when no vault is PROD, stays silent when env is omitted entirely, and (unpatched) stays silent against this checkout's real GA version. Verification caveat: I wasn't able to execute this repo's test suite in my sandbox — no pip/venv available and no way to install this project's dependencies (pydantic, httpx, cryptography, etc.) without sudo. I syntax-checked every changed file with python -m py_compile (all clean) and hand-verified the is_non_ga_version regex against the test cases with a dependency-free script, but please run pytest / your CI on this PR before merging — it hasn't had the equivalent of the full-suite verification the companion Java and Node PRs got. Related Cross-SDK design + task tracking: SK-2963 (this is the reference-pattern implementation for skyflow-java; skyflow-go/js/... follow the same shape in their own repos). SK-2977 owns the final public-facing message wording — the copy here is a placeholder pending that sign-off. 🤖 Generated with Claude Code

Open Graph Description: Summary Corrective action from the Fifth Third Bank RCA (CUST-4287): a beta/pre-release SDK build ended up running in a customer's Production environment undetected. This adds a startup warning...

X Description: Summary Corrective action from the Fifth Third Bank RCA (CUST-4287): a beta/pre-release SDK build ended up running in a customer's Production environment undetected. This adds a startup war...

Opengraph URL: https://github.com/skyflowapi/skyflow-python/pull/274

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/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:25b3d1e9-c367-1639-d386-81ad3cccdc88
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idB330:2F5FB1:738014:96F891:6AF83A71
html-safe-nonce2f3410c39fd95c289a04face71e3e63101144827b0f472d2c86d774ce83ee5a6
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCMzMwOjJGNUZCMTo3MzgwMTQ6OTZGODkxOjZBRjgzQTcxIiwidmlzaXRvcl9pZCI6Ijc3MTUyNDcyODExNDUzOTU4MjUiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmac6aad15aeb06f5c7554a816ae261d839cbd7d8bffdc314470e722fc0e7f7656dc
hovercard-subject-tagpull_request:4239785415
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/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/skyflowapi/skyflow-python/pull/274/files
twitter:imagehttps://avatars.githubusercontent.com/u/177972614?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/177972614?s=400&v=4
og:image:altSummary Corrective action from the Fifth Third Bank RCA (CUST-4287): a beta/pre-release SDK build ended up running in a customer's Production environment undetected. This adds a startup warning...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None5713ecd83001b2f55c3509fb7a292bf7d66d0f167c7ae87a9f7eaec5a52bf8db
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/skyflowapi/skyflow-python git https://github.com/skyflowapi/skyflow-python.git
octolytics-dimension-user_id72233674
octolytics-dimension-user_loginskyflowapi
octolytics-dimension-repository_id416989700
octolytics-dimension-repository_nwoskyflowapi/skyflow-python
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id416989700
octolytics-dimension-repository_network_root_nwoskyflowapi/skyflow-python
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release653be32ff5c755082a4db662491bfbbcfc9112c1
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/skyflowapi/skyflow-python/pull/274/files#start-of-content
https://github.com/
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fskyflowapi%2Fskyflow-python%2Fpull%2F274%2Ffiles
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%2Fskyflowapi%2Fskyflow-python%2Fpull%2F274%2Ffiles
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%2Ffiles&source=header-repo&source_repo=skyflowapi%2Fskyflow-python
Reloadhttps://github.com/skyflowapi/skyflow-python/pull/274/files
Reloadhttps://github.com/skyflowapi/skyflow-python/pull/274/files
Reloadhttps://github.com/skyflowapi/skyflow-python/pull/274/files
skyflowapihttps://github.com/skyflowapi
skyflow-pythonhttps://github.com/skyflowapi/skyflow-python
Codehttps://github.com/skyflowapi/skyflow-python
Issues1 (1)https://github.com/skyflowapi/skyflow-python/issues
Pull requests9 (9)https://github.com/skyflowapi/skyflow-python/pulls
Actionshttps://github.com/skyflowapi/skyflow-python/actions
Projectshttps://github.com/skyflowapi/skyflow-python/projects
Security and qualityhttps://github.com/skyflowapi/skyflow-python/security
Insightshttps://github.com/skyflowapi/skyflow-python/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fskyflowapi%2Fskyflow-python%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fskyflowapi%2Fskyflow-python%2Fissues%2Fnew%2Fchoose
Devesh-Skyflowhttps://github.com/Devesh-Skyflow
mainhttps://github.com/skyflowapi/skyflow-python/tree/main
devesh/SK-2963https://github.com/skyflowapi/skyflow-python/tree/devesh/SK-2963
Conversation 0 https://github.com/skyflowapi/skyflow-python/pull/274
Commits 1 https://github.com/skyflowapi/skyflow-python/pull/274/commits
Checks 8 https://github.com/skyflowapi/skyflow-python/pull/274/checks
Files changed https://github.com/skyflowapi/skyflow-python/pull/274/files
Please reload this pagehttps://github.com/skyflowapi/skyflow-python/pull/274/files
SK-2963: warn at startup when a beta/dev build targets a Production vault https://github.com/skyflowapi/skyflow-python/pull/274/files#top
Show all changes 1 commit https://github.com/skyflowapi/skyflow-python/pull/274/files
a41a274 SK-2963: warn at startup when a beta/dev build targets a Production v… Devesh-Skyflow Aug 9, 2026 https://github.com/skyflowapi/skyflow-python/pull/274/commits/a41a2748b15f1d5d9f7e335430f89a533236bb37
Clear filters https://github.com/skyflowapi/skyflow-python/pull/274/files
Please reload this pagehttps://github.com/skyflowapi/skyflow-python/pull/274/files
Please reload this pagehttps://github.com/skyflowapi/skyflow-python/pull/274/files
skyflow.py https://github.com/skyflowapi/skyflow-python/pull/274/files#diff-6fb9dd4cfe07be83703d8529b53a8b35ac3272316167b527d4bc9efb7b43f2c3
__init__.py https://github.com/skyflowapi/skyflow-python/pull/274/files#diff-a07544f9358db60db26352f203e9aa1d01bba89fd280365557c0712ca2e2e7b8
_skyflow_messages.py https://github.com/skyflowapi/skyflow-python/pull/274/files#diff-ca6aef9f7d732ba307852b80be10233670eb5fcf6721435891ea24b30d098f36
_utils.py https://github.com/skyflowapi/skyflow-python/pull/274/files#diff-f446eea080e42ed2ac1b914c256f8f097a931b0cc61e11bf2213942dbc9497cf
test_skyflow.py https://github.com/skyflowapi/skyflow-python/pull/274/files#diff-1b3e3d8bf297b886a5da67c60a093a7bc7484e1d70b3ab068ff07715cc2d24aa
test__utils.py https://github.com/skyflowapi/skyflow-python/pull/274/files#diff-8d1b53ef821ef2bc29e6594c65f6d659d53d14a42d56ab5e134455e3ecda8a7c
skyflow/client/skyflow.pyhttps://github.com/skyflowapi/skyflow-python/pull/274/files#diff-6fb9dd4cfe07be83703d8529b53a8b35ac3272316167b527d4bc9efb7b43f2c3
View file https://github.com/skyflowapi/skyflow-python/blob/a41a2748b15f1d5d9f7e335430f89a533236bb37/skyflow/client/skyflow.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/skyflowapi/skyflow-python/pull/274/{{ revealButtonHref }}
https://github.com/skyflowapi/skyflow-python/pull/274/files#diff-6fb9dd4cfe07be83703d8529b53a8b35ac3272316167b527d4bc9efb7b43f2c3
https://github.com/skyflowapi/skyflow-python/pull/274/files#diff-6fb9dd4cfe07be83703d8529b53a8b35ac3272316167b527d4bc9efb7b43f2c3
skyflow/utils/__init__.pyhttps://github.com/skyflowapi/skyflow-python/pull/274/files#diff-a07544f9358db60db26352f203e9aa1d01bba89fd280365557c0712ca2e2e7b8
View file https://github.com/skyflowapi/skyflow-python/blob/a41a2748b15f1d5d9f7e335430f89a533236bb37/skyflow/utils/__init__.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/skyflowapi/skyflow-python/pull/274/{{ revealButtonHref }}
https://github.com/skyflowapi/skyflow-python/pull/274/files#diff-a07544f9358db60db26352f203e9aa1d01bba89fd280365557c0712ca2e2e7b8
skyflow/utils/_skyflow_messages.pyhttps://github.com/skyflowapi/skyflow-python/pull/274/files#diff-ca6aef9f7d732ba307852b80be10233670eb5fcf6721435891ea24b30d098f36
View file https://github.com/skyflowapi/skyflow-python/blob/a41a2748b15f1d5d9f7e335430f89a533236bb37/skyflow/utils/_skyflow_messages.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/skyflowapi/skyflow-python/pull/274/{{ revealButtonHref }}
https://github.com/skyflowapi/skyflow-python/pull/274/files#diff-ca6aef9f7d732ba307852b80be10233670eb5fcf6721435891ea24b30d098f36
skyflow/utils/_utils.pyhttps://github.com/skyflowapi/skyflow-python/pull/274/files#diff-f446eea080e42ed2ac1b914c256f8f097a931b0cc61e11bf2213942dbc9497cf
View file https://github.com/skyflowapi/skyflow-python/blob/a41a2748b15f1d5d9f7e335430f89a533236bb37/skyflow/utils/_utils.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/skyflowapi/skyflow-python/pull/274/{{ revealButtonHref }}
https://github.com/skyflowapi/skyflow-python/pull/274/files#diff-f446eea080e42ed2ac1b914c256f8f097a931b0cc61e11bf2213942dbc9497cf
https://github.com/skyflowapi/skyflow-python/pull/274/files#diff-f446eea080e42ed2ac1b914c256f8f097a931b0cc61e11bf2213942dbc9497cf
https://github.com/skyflowapi/skyflow-python/pull/274/files#diff-f446eea080e42ed2ac1b914c256f8f097a931b0cc61e11bf2213942dbc9497cf
https://github.com/skyflowapi/skyflow-python/pull/274/files#diff-f446eea080e42ed2ac1b914c256f8f097a931b0cc61e11bf2213942dbc9497cf
tests/client/test_skyflow.pyhttps://github.com/skyflowapi/skyflow-python/pull/274/files#diff-1b3e3d8bf297b886a5da67c60a093a7bc7484e1d70b3ab068ff07715cc2d24aa
View file https://github.com/skyflowapi/skyflow-python/blob/a41a2748b15f1d5d9f7e335430f89a533236bb37/tests/client/test_skyflow.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/skyflowapi/skyflow-python/pull/274/{{ revealButtonHref }}
https://github.com/skyflowapi/skyflow-python/pull/274/files#diff-1b3e3d8bf297b886a5da67c60a093a7bc7484e1d70b3ab068ff07715cc2d24aa
tests/utils/test__utils.pyhttps://github.com/skyflowapi/skyflow-python/pull/274/files#diff-8d1b53ef821ef2bc29e6594c65f6d659d53d14a42d56ab5e134455e3ecda8a7c
View file https://github.com/skyflowapi/skyflow-python/blob/a41a2748b15f1d5d9f7e335430f89a533236bb37/tests/utils/test__utils.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/skyflowapi/skyflow-python/pull/274/{{ revealButtonHref }}
https://github.com/skyflowapi/skyflow-python/pull/274/files#diff-8d1b53ef821ef2bc29e6594c65f6d659d53d14a42d56ab5e134455e3ecda8a7c
https://github.com/skyflowapi/skyflow-python/pull/274/files#diff-8d1b53ef821ef2bc29e6594c65f6d659d53d14a42d56ab5e134455e3ecda8a7c
https://github.com/skyflowapi/skyflow-python/pull/274/files#diff-8d1b53ef821ef2bc29e6594c65f6d659d53d14a42d56ab5e134455e3ecda8a7c
https://github.com/skyflowapi/skyflow-python/pull/274/files#diff-8d1b53ef821ef2bc29e6594c65f6d659d53d14a42d56ab5e134455e3ecda8a7c
Please reload this pagehttps://github.com/skyflowapi/skyflow-python/pull/274/files
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.