René's URL Explorer Experiment


Title: HIDE_WINDOWS_*_ERRORS environment variables are interpreted strangely · Issue #1698 · gitpython-developers/GitPython · GitHub

Open Graph Title: HIDE_WINDOWS_*_ERRORS environment variables are interpreted strangely · Issue #1698 · gitpython-developers/GitPython

X Title: HIDE_WINDOWS_*_ERRORS environment variables are interpreted strangely · Issue #1698 · gitpython-developers/GitPython

Description: Summary As noted in #1697: The HIDE_WINDOWS_KNOWN_ERRORS and HIDE_WINDOWS_FREEZE_ERRORS variables are intended to be affected by the same-named environment variables, but this does not work properly. They are True by default, but the onl...

Open Graph Description: Summary As noted in #1697: The HIDE_WINDOWS_KNOWN_ERRORS and HIDE_WINDOWS_FREEZE_ERRORS variables are intended to be affected by the same-named environment variables, but this does not work properl...

X Description: Summary As noted in #1697: The HIDE_WINDOWS_KNOWN_ERRORS and HIDE_WINDOWS_FREEZE_ERRORS variables are intended to be affected by the same-named environment variables, but this does not work properl...

Opengraph URL: https://github.com/gitpython-developers/GitPython/issues/1698

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"HIDE_WINDOWS_*_ERRORS environment variables are interpreted strangely","articleBody":"### Summary\r\n\r\nAs noted in #1697:\r\n\r\n\u003e The `HIDE_WINDOWS_KNOWN_ERRORS` and `HIDE_WINDOWS_FREEZE_ERRORS` variables are intended to be affected by the same-named environment variables, but this does not work properly. They are `True` by default, but the only way to use environment variables to set them to a false value is *to define the environment variable with an empty value* (since everything else, as a string, is truthy). In addition to being very unlikely to have been the intended behavior, this is also hard to do on Windows when using typical shells, because in both `cmd.exe` and PowerShell setting an environment variable as empty actually removes the variable altogether.\r\n\r\n### Details\r\n\r\nThe attributes have type `bool` outside native Windows systems (where they are `False`) and in native Windows systems where the environment variables don't exist (they are `True`):\r\n\r\nhttps://github.com/gitpython-developers/GitPython/blob/8107cbfeb1d56b2587d347c7f3d509ebef079950/git/util.py#L122-L126\r\n\r\nOtherwise they are the `str` values of the same-named environment variables. They are always used as conditions, and as such, the only ways to set them `False` on a native Windows system--besides editing that code, which in practice seems to be what is done--is to write to the attributes with Python code or to set the environment variables to the empty string.\r\n\r\nIn `bash` on Windows, such as Git Bash, this is easy to do, though not at all obvious that it should be done and also very unintuitive. In shells meant for Windows, `cmd.exe` and PowerShell, setting an environment variable to the empty string causes it to be automatically *unset*, and extra effort is required to actually set the empty string.\r\n\r\n### The tricky part\r\n\r\n`HIDE_WINDOWS_KNOWN_ERRORS` is defined in `git.util` [**and listed in `__all__`**](https://github.com/gitpython-developers/GitPython/blob/8107cbfeb1d56b2587d347c7f3d509ebef079950/git/util.py#L114). So it is a breaking change to remove or rename it. Because code that uses the GitPython library is explicitly allowed to assume the attribute will continue to exist, it's worth considering the subjective question of what, if anything, users can reasonably assume *about* it.\r\n\r\nAlthough comments shown above explains its original purpose, its semantics are not really documented anywhere, and nothing makes any statements about how it is set. Furthermore, if people are setting nonempty values that intuitively feel like they express falsehood--such as `0`--then they probably expect that this is setting it to `False` or some falsy value. Therefore, I think it's reasonable to regard the current behavior as a bug and fix it, even though actually removing or even officially deprecating the attribute should wait until later because it currently affects the behavior of `git.util.rmtree`, through [the callback](https://github.com/gitpython-developers/GitPython/blob/8107cbfeb1d56b2587d347c7f3d509ebef079950/git/util.py#L185-L196) it passes to `shutil.rmtree`.\r\n\r\nIn contrast, `HIDE_WINDOWS_FREEZE_ERRORS` is not listed in `__all__` and could be renamed, removed, or arbitrarily changed at any time. But as long as `HIDE_WINDOWS_KNOWN_ERRORS` remains in `git.util`, I don't think the presence `HIDE_WINDOWS_FREEZE_ERRORS` should be seen as any special problem.\r\n\r\nAlthough I don't advocate formally deprecating the `HIDE_WINDOWS_KNOWN_ERRORS` *attribute* just yet, the environment variable is another story. In addition to being parsed differently, the presence of either environment variable could cause a warning to be printed when `git.util` is loaded (which happens when the `git` module is loaded).\r\n\r\n### Context\r\n\r\nThis relates to the deeper issue #790. Fixing this narrower issue won't solve the problem that raising `SkipTest` as a result of failing to delete files can produce unpredictable effects in production--because it signals a condition that would typically be signaled by `PermissionError` or some other exception derived from `OSError`, and would bypass exception handling meant for that--as well as masking bugs in applications or other libraries that use GitPython by causing their automated tests to be skipped. But solving that will carry its own challenge. The main problem is not how to provide the functionality to the test suite, but instead that there may be code using GitPython that has come to rely on exceptions from deleting files being wrapped in `SkipTest`.\r\n\r\nAlthough I definitely think #790 *should* be solved, and there are various approaches to mitigating disruption from doing so, I think it is worth fixing this narrower issue of how the environment variables are interpreted now. I've included such a fix in #1700 (which also would fix #1699).","author":{"url":"https://github.com/EliahKagan","@type":"Person","name":"EliahKagan"},"datePublished":"2023-10-09T11:11:17.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/1698/GitPython/issues/1698"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:97c38826-f6f6-e9b1-b9e5-7ba51223868c
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-idB09E:12FBBB:9A308:CED8E:69684AFC
html-safe-nonce3ef22e0448cc6ff4e5dba1afc9332d705d64ad331761bac493c856ad18153471
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCMDlFOjEyRkJCQjo5QTMwODpDRUQ4RTo2OTY4NEFGQyIsInZpc2l0b3JfaWQiOiI3Mzk2ODIyOTQxMjc5MjEwMjM2IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=
visitor-hmac0e4b20be5b1332d03665128f59c446f69c6a13178761b928f016b7f4002d6b60
hovercard-subject-tagissue:1932829369
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/gitpython-developers/GitPython/1698/issue_layout
twitter:imagehttps://opengraph.githubassets.com/1afc17c98ae9c5a0c02cd6c1287c15dd0e5422c9445021286c8889c52e58efaf/gitpython-developers/GitPython/issues/1698
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/1afc17c98ae9c5a0c02cd6c1287c15dd0e5422c9445021286c8889c52e58efaf/gitpython-developers/GitPython/issues/1698
og:image:altSummary As noted in #1697: The HIDE_WINDOWS_KNOWN_ERRORS and HIDE_WINDOWS_FREEZE_ERRORS variables are intended to be affected by the same-named environment variables, but this does not work properl...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernameEliahKagan
hostnamegithub.com
expected-hostnamegithub.com
Nonef16c57f41ed243e5b4dfe9b9bcd6828bd83080b1b6dbb4ff239bbe9745f12e0c
turbo-cache-controlno-preview
go-importgithub.com/gitpython-developers/GitPython git https://github.com/gitpython-developers/GitPython.git
octolytics-dimension-user_id503709
octolytics-dimension-user_logingitpython-developers
octolytics-dimension-repository_id1126087
octolytics-dimension-repository_nwogitpython-developers/GitPython
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id1126087
octolytics-dimension-repository_network_root_nwogitpython-developers/GitPython
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
releasecfa7062cc6d4fe8fcb156bd33f4c97bd3b2470af
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/gitpython-developers/GitPython/issues/1698#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fgitpython-developers%2FGitPython%2Fissues%2F1698
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub SparkBuild and deploy intelligent appshttps://github.com/features/spark
GitHub ModelsManage and compare promptshttps://github.com/features/models
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
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
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/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%2Fgitpython-developers%2FGitPython%2Fissues%2F1698
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%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=gitpython-developers%2FGitPython
Reloadhttps://github.com/gitpython-developers/GitPython/issues/1698
Reloadhttps://github.com/gitpython-developers/GitPython/issues/1698
Reloadhttps://github.com/gitpython-developers/GitPython/issues/1698
gitpython-developers https://github.com/gitpython-developers
GitPythonhttps://github.com/gitpython-developers/GitPython
Please reload this pagehttps://github.com/gitpython-developers/GitPython/issues/1698
Notifications https://github.com/login?return_to=%2Fgitpython-developers%2FGitPython
Fork 964 https://github.com/login?return_to=%2Fgitpython-developers%2FGitPython
Star 5k https://github.com/login?return_to=%2Fgitpython-developers%2FGitPython
Code https://github.com/gitpython-developers/GitPython
Issues 169 https://github.com/gitpython-developers/GitPython/issues
Pull requests 8 https://github.com/gitpython-developers/GitPython/pulls
Discussions https://github.com/gitpython-developers/GitPython/discussions
Actions https://github.com/gitpython-developers/GitPython/actions
Security Uh oh! There was an error while loading. Please reload this page. https://github.com/gitpython-developers/GitPython/security
Please reload this pagehttps://github.com/gitpython-developers/GitPython/issues/1698
Insights https://github.com/gitpython-developers/GitPython/pulse
Code https://github.com/gitpython-developers/GitPython
Issues https://github.com/gitpython-developers/GitPython/issues
Pull requests https://github.com/gitpython-developers/GitPython/pulls
Discussions https://github.com/gitpython-developers/GitPython/discussions
Actions https://github.com/gitpython-developers/GitPython/actions
Security https://github.com/gitpython-developers/GitPython/security
Insights https://github.com/gitpython-developers/GitPython/pulse
New issuehttps://github.com/login?return_to=https://github.com/gitpython-developers/GitPython/issues/1698
New issuehttps://github.com/login?return_to=https://github.com/gitpython-developers/GitPython/issues/1698
#1700https://github.com/gitpython-developers/GitPython/pull/1700
HIDE_WINDOWS_*_ERRORS environment variables are interpreted strangelyhttps://github.com/gitpython-developers/GitPython/issues/1698#top
#1700https://github.com/gitpython-developers/GitPython/pull/1700
acknowledgedhttps://github.com/gitpython-developers/GitPython/issues?q=state%3Aopen%20label%3A%22acknowledged%22
https://github.com/EliahKagan
https://github.com/EliahKagan
EliahKaganhttps://github.com/EliahKagan
on Oct 9, 2023https://github.com/gitpython-developers/GitPython/issues/1698#issue-1932829369
#1697https://github.com/gitpython-developers/GitPython/pull/1697
GitPython/git/util.pyhttps://github.com/gitpython-developers/GitPython/blob/8107cbfeb1d56b2587d347c7f3d509ebef079950/git/util.py#L122-L126
8107cbfhttps://github.com/gitpython-developers/GitPython/commit/8107cbfeb1d56b2587d347c7f3d509ebef079950
and listed in __all__https://github.com/gitpython-developers/GitPython/blob/8107cbfeb1d56b2587d347c7f3d509ebef079950/git/util.py#L114
the callbackhttps://github.com/gitpython-developers/GitPython/blob/8107cbfeb1d56b2587d347c7f3d509ebef079950/git/util.py#L185-L196
#790https://github.com/gitpython-developers/GitPython/issues/790
#790https://github.com/gitpython-developers/GitPython/issues/790
#1700https://github.com/gitpython-developers/GitPython/pull/1700
#1699https://github.com/gitpython-developers/GitPython/issues/1699
acknowledgedhttps://github.com/gitpython-developers/GitPython/issues?q=state%3Aopen%20label%3A%22acknowledged%22
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.