René's URL Explorer Experiment


Title: fix: Retry constructors methods support None by daniel-sanche · Pull Request #592 · googleapis/python-api-core · GitHub

Open Graph Title: fix: Retry constructors methods support None by daniel-sanche · Pull Request #592 · googleapis/python-api-core

X Title: fix: Retry constructors methods support None by daniel-sanche · Pull Request #592 · googleapis/python-api-core

Description: Fixes #591 v2.16.0 did some refactoring of the Retry class, including adding a _replace helper method to simplify the constructors with_deadline, with_timeout, with_predicate, and with_delay. But it was noticed there is a bug in the implementation, where falsy values are ignored, with the existing value silently used instead. Note that None is technically not supported by the type annotations, and 0 is typically not a valid value for these fields, which is likely why there was a gap in the tests around this. But the annotations were added recently, and existing code use pass None in for a timeouts, and None is supported by the internal retry code down the stack. For this reason, I changed the type annotation for the timeout field to support None as part of this fix, and added tests to ensure that it will be supported in the future

Open Graph Description: Fixes #591 v2.16.0 did some refactoring of the Retry class, including adding a _replace helper method to simplify the constructors with_deadline, with_timeout, with_predicate, and with_delay. But i...

X Description: Fixes #591 v2.16.0 did some refactoring of the Retry class, including adding a _replace helper method to simplify the constructors with_deadline, with_timeout, with_predicate, and with_delay. But i...

Opengraph URL: https://github.com/googleapis/python-api-core/pull/592

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:9e39eb46-ca9f-5280-337b-4606366a4611
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idD76E:C0192:8F263B:C963BA:6A4E7B7B
html-safe-nonce54fd8ba5affdd156b0879f7576a749e533242331d1ac5ba3b84db78346549c2a
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJENzZFOkMwMTkyOjhGMjYzQjpDOTYzQkE6NkE0RTdCN0IiLCJ2aXNpdG9yX2lkIjoiMzA2OTg3NzcyMzk4OTk2NTY5MSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmaceded30edcfcb370d69c39213aed93d65f9b0cc3b949c823fdfb95b0c401067a7
hovercard-subject-tagpull_request:1705057012
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/googleapis/python-api-core/pull/592/files
twitter:imagehttps://avatars.githubusercontent.com/u/3914119?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/3914119?s=400&v=4
og:image:altFixes #591 v2.16.0 did some refactoring of the Retry class, including adding a _replace helper method to simplify the constructors with_deadline, with_timeout, with_predicate, and with_delay. But i...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None41b6ab3ba6d20a71766ac245b5a4a94c6fc672a9cd4da7d44c1b33ab8bf6a21c
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/googleapis/python-api-core git https://github.com/googleapis/python-api-core.git
octolytics-dimension-user_id16785467
octolytics-dimension-user_logingoogleapis
octolytics-dimension-repository_id226992456
octolytics-dimension-repository_nwogoogleapis/python-api-core
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id226992456
octolytics-dimension-repository_network_root_nwogoogleapis/python-api-core
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
releasee6a744804e8e70f97b4d5a18a94dcc63db22f97a
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/googleapis/python-api-core/pull/592/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fpython-api-core%2Fpull%2F592%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
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
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://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
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fpython-api-core%2Fpull%2F592%2Ffiles
Sign up https://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=googleapis%2Fpython-api-core
Reloadhttps://github.com/googleapis/python-api-core/pull/592/files
Reloadhttps://github.com/googleapis/python-api-core/pull/592/files
Reloadhttps://github.com/googleapis/python-api-core/pull/592/files
Please reload this pagehttps://github.com/googleapis/python-api-core/pull/592/files
googleapis https://github.com/googleapis
python-api-corehttps://github.com/googleapis/python-api-core
Notifications https://github.com/login?return_to=%2Fgoogleapis%2Fpython-api-core
Fork 97 https://github.com/login?return_to=%2Fgoogleapis%2Fpython-api-core
Star 144 https://github.com/login?return_to=%2Fgoogleapis%2Fpython-api-core
Code https://github.com/googleapis/python-api-core
Issues 0 https://github.com/googleapis/python-api-core/issues
Pull requests 0 https://github.com/googleapis/python-api-core/pulls
Actions https://github.com/googleapis/python-api-core/actions
Projects https://github.com/googleapis/python-api-core/projects
Security and quality 0 https://github.com/googleapis/python-api-core/security
Insights https://github.com/googleapis/python-api-core/pulse
Code https://github.com/googleapis/python-api-core
Issues https://github.com/googleapis/python-api-core/issues
Pull requests https://github.com/googleapis/python-api-core/pulls
Actions https://github.com/googleapis/python-api-core/actions
Projects https://github.com/googleapis/python-api-core/projects
Security and quality https://github.com/googleapis/python-api-core/security
Insights https://github.com/googleapis/python-api-core/pulse
daniel-sanchehttps://github.com/daniel-sanche
mainhttps://github.com/googleapis/python-api-core/tree/main
fix_replacehttps://github.com/googleapis/python-api-core/tree/fix_replace
Conversation 11 https://github.com/googleapis/python-api-core/pull/592
Commits 8 https://github.com/googleapis/python-api-core/pull/592/commits
Checks 0 https://github.com/googleapis/python-api-core/pull/592/checks
Files changed https://github.com/googleapis/python-api-core/pull/592/files
Please reload this pagehttps://github.com/googleapis/python-api-core/pull/592/files
fix: Retry constructors methods support None https://github.com/googleapis/python-api-core/pull/592/files#top
Show all changes 8 commits https://github.com/googleapis/python-api-core/pull/592/files
7984020 use sentinal value for _replace daniel-sanche Jan 31, 2024 https://github.com/googleapis/python-api-core/pull/592/commits/79840206d712f6412e0b9614974312facbc1adb2
d228d98 accept None in timeout daniel-sanche Jan 31, 2024 https://github.com/googleapis/python-api-core/pull/592/commits/d228d98cac4681bcd077d7d4db1b84ca1b1c4443
ed60cc1 remove _replace function daniel-sanche Jan 31, 2024 https://github.com/googleapis/python-api-core/pull/592/commits/ed60cc100c380205a5c69ff878969b8634447945
07ae10b added test daniel-sanche Jan 31, 2024 https://github.com/googleapis/python-api-core/pull/592/commits/07ae10bcfdaa2d5cf133a45d07d9f9fa34acf119
9d6fcef 🦉 Updates from OwlBot post-processor gcf-owl-bot[bot] Jan 31, 2024 https://github.com/googleapis/python-api-core/pull/592/commits/9d6fcefae2e69fc814e47eab8df623d555e20ce4
fba807b use Optional for type annotations daniel-sanche Feb 1, 2024 https://github.com/googleapis/python-api-core/pull/592/commits/fba807b61f83b33ac0f2861251e47afdd3b41c5b
acf7c43 added test cases to test_with_delay daniel-sanche Feb 2, 2024 https://github.com/googleapis/python-api-core/pull/592/commits/acf7c43f8cfbdaca330ce64059fd1f3a3b2470a8
f6cd411 Merge branch 'main' into fix_replace daniel-sanche Feb 5, 2024 https://github.com/googleapis/python-api-core/pull/592/commits/f6cd41146984d6be7b9aaf67cc5a3ecb85a1acfe
Clear filters https://github.com/googleapis/python-api-core/pull/592/files
Please reload this pagehttps://github.com/googleapis/python-api-core/pull/592/files
Please reload this pagehttps://github.com/googleapis/python-api-core/pull/592/files
retry_base.py https://github.com/googleapis/python-api-core/pull/592/files#diff-0c2b34f85d94509a7f96f3a5645a00654223d9f3657ca7d687264fcc9b81f522
retry_unary.py https://github.com/googleapis/python-api-core/pull/592/files#diff-136eb84e0322010c208395fe85d94cf83358b7b9479a51db7887f80cf3bf5828
test_retry_base.py https://github.com/googleapis/python-api-core/pull/592/files#diff-4bd2dfd3270f206ce10cdab2fbc438e4467dd82d55df7a2daa7e1c59029f101f
google/api_core/retry/retry_base.pyhttps://github.com/googleapis/python-api-core/pull/592/files#diff-0c2b34f85d94509a7f96f3a5645a00654223d9f3657ca7d687264fcc9b81f522
View file https://github.com/googleapis/python-api-core/blob/f6cd41146984d6be7b9aaf67cc5a3ecb85a1acfe/google/api_core/retry/retry_base.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/googleapis/python-api-core/pull/592/{{ revealButtonHref }}
https://github.com/googleapis/python-api-core/pull/592/files#diff-0c2b34f85d94509a7f96f3a5645a00654223d9f3657ca7d687264fcc9b81f522
https://github.com/googleapis/python-api-core/pull/592/files#diff-0c2b34f85d94509a7f96f3a5645a00654223d9f3657ca7d687264fcc9b81f522
https://github.com/googleapis/python-api-core/pull/592/files#diff-0c2b34f85d94509a7f96f3a5645a00654223d9f3657ca7d687264fcc9b81f522
https://github.com/googleapis/python-api-core/pull/592/files#diff-0c2b34f85d94509a7f96f3a5645a00654223d9f3657ca7d687264fcc9b81f522
https://github.com/googleapis/python-api-core/pull/592/files#diff-0c2b34f85d94509a7f96f3a5645a00654223d9f3657ca7d687264fcc9b81f522
vchudnov-ghttps://github.com/vchudnov-g
Feb 2, 2024https://github.com/googleapis/python-api-core/pull/592/files#r1476490338
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/googleapis/python-api-core/pull/592/files
daniel-sanchehttps://github.com/daniel-sanche
Feb 2, 2024https://github.com/googleapis/python-api-core/pull/592/files#r1476809026
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/googleapis/python-api-core/pull/592/files
vchudnov-ghttps://github.com/vchudnov-g
Feb 5, 2024https://github.com/googleapis/python-api-core/pull/592/files#r1479000233
Please reload this pagehttps://github.com/googleapis/python-api-core/pull/592/files
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/googleapis/python-api-core/pull/592/files
daniel-sanchehttps://github.com/daniel-sanche
Feb 6, 2024https://github.com/googleapis/python-api-core/pull/592/files#r1479204874
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/googleapis/python-api-core/pull/592/files
vchudnov-ghttps://github.com/vchudnov-g
Feb 2, 2024https://github.com/googleapis/python-api-core/pull/592/files#r1476493588
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/googleapis/python-api-core/pull/592/files
daniel-sanchehttps://github.com/daniel-sanche
Feb 2, 2024https://github.com/googleapis/python-api-core/pull/592/files#r1476827410
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
pre-2.16.0 behaviourhttps://github.com/googleapis/python-api-core/blob/9866183b42f632dddade9ba6c69f9b3015118dd4/google/api_core/retry.py#L457
Please reload this pagehttps://github.com/googleapis/python-api-core/pull/592/files
partheahttps://github.com/parthea
Feb 4, 2024https://github.com/googleapis/python-api-core/pull/592/files#r1477430042
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
@daniel-sanchehttps://github.com/daniel-sanche
#592 (comment)https://github.com/googleapis/python-api-core/pull/592#discussion_r1476827410
Please reload this pagehttps://github.com/googleapis/python-api-core/pull/592/files
daniel-sanchehttps://github.com/daniel-sanche
Feb 5, 2024https://github.com/googleapis/python-api-core/pull/592/files#r1478941085
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/googleapis/python-api-core/pull/592/files
https://github.com/googleapis/python-api-core/pull/592/files#diff-0c2b34f85d94509a7f96f3a5645a00654223d9f3657ca7d687264fcc9b81f522
google/api_core/retry/retry_unary.pyhttps://github.com/googleapis/python-api-core/pull/592/files#diff-136eb84e0322010c208395fe85d94cf83358b7b9479a51db7887f80cf3bf5828
View file https://github.com/googleapis/python-api-core/blob/f6cd41146984d6be7b9aaf67cc5a3ecb85a1acfe/google/api_core/retry/retry_unary.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/googleapis/python-api-core/pull/592/{{ revealButtonHref }}
https://github.com/googleapis/python-api-core/pull/592/files#diff-136eb84e0322010c208395fe85d94cf83358b7b9479a51db7887f80cf3bf5828
https://github.com/googleapis/python-api-core/pull/592/files#diff-136eb84e0322010c208395fe85d94cf83358b7b9479a51db7887f80cf3bf5828
tests/unit/retry/test_retry_base.pyhttps://github.com/googleapis/python-api-core/pull/592/files#diff-4bd2dfd3270f206ce10cdab2fbc438e4467dd82d55df7a2daa7e1c59029f101f
View file https://github.com/googleapis/python-api-core/blob/f6cd41146984d6be7b9aaf67cc5a3ecb85a1acfe/tests/unit/retry/test_retry_base.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/googleapis/python-api-core/pull/592/{{ revealButtonHref }}
https://github.com/googleapis/python-api-core/pull/592/files#diff-4bd2dfd3270f206ce10cdab2fbc438e4467dd82d55df7a2daa7e1c59029f101f
https://github.com/googleapis/python-api-core/pull/592/files#diff-4bd2dfd3270f206ce10cdab2fbc438e4467dd82d55df7a2daa7e1c59029f101f
vchudnov-ghttps://github.com/vchudnov-g
Feb 2, 2024https://github.com/googleapis/python-api-core/pull/592/files#r1476484692
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/googleapis/python-api-core/pull/592/files
daniel-sanchehttps://github.com/daniel-sanche
Feb 2, 2024https://github.com/googleapis/python-api-core/pull/592/files#r1476813850
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/googleapis/python-api-core/pull/592/files
https://github.com/googleapis/python-api-core/pull/592/files#diff-4bd2dfd3270f206ce10cdab2fbc438e4467dd82d55df7a2daa7e1c59029f101f
https://github.com/googleapis/python-api-core/pull/592/files#diff-4bd2dfd3270f206ce10cdab2fbc438e4467dd82d55df7a2daa7e1c59029f101f
https://github.com/googleapis/python-api-core/pull/592/files#diff-4bd2dfd3270f206ce10cdab2fbc438e4467dd82d55df7a2daa7e1c59029f101f
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.