### Motivation
Closes#4636
In fact`Env` manages two lists: explicitly set values and Xettings. When
we operate with env we have no detyping for Xettings. The `detype_all`
function doint detyping for all possible env variables.
### Before
```xsh
# No way to get all detyped variables e.g.
'PROMPT' in __xonsh__.env.detype()
# False
```
### After
```xsh
'PROMPT' in __xonsh__.env.detype_all()
# True
```
## For community
⬇️ **Please click the 👍 reaction instead of leaving a `+1` or 👍
comment**
---------
Co-authored-by: a <1@1.1>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* todo
* test: remove usage of DummyEnv and setting .env attribute on xession fixture
one step closer to making too much of tweaking to xession during tests
* test: fix tests vox and gitstatus-prompt
* docs: update test-fixture usage
* fix: import flake8 error
* test: remove direct access to XSH in tests
* test: remove usage of XSH in test files
* todo
* test: use tmp-dir to create stubs
* refactor: use fixture factory to mock out XonshSession
* refactor: remove direct access of XSH from functions
* refactor: remove direct access of XSH from functions
* fix: qa checks
* refactor: rename variables to match their values
* test: update failing tests because it had no PATH set previously
* fix: remove builtins usage from pyghooks.py
* style:
* refactor: update tests to use fixtures
* fix: env varialbe is setup per function
some tests accidentally update the env variables and that is leaking
into next tests
* fix: failing vox tests
* test: set commands_cache per test
* test: fix failing tests
* fix: failing tests on linux
ptk-highlight
* fix: failing tests on Windows
cwd-prompt
* test: copy env as to not affect original object
* fix: lazily evaluate cmds-cache in pyghooks
* test: fix failing tests
* fix: qa errors import
* test: set commands-cache per test
while caching path results
* test: speedup test_thread_local_swap
* fix: failing tests on windows
* refactor: Execer doesn't control session
* refactor: XSH.unload will take care of reversing builtins attrs set
* test: use env.update over monkeypatch
* Revert "test: use env.update over monkeypatch"
This reverts commit 010a5022247a098f1741966b8af1bf758663480e.
* environ: Implement InternalEnvironDict for thread-local overrides
* environ: Make `swap` thread-safe without leaks
Use thread-local storage to override the changes.
This way the changes can't leak to other threads.
* environ: Implement 'get/set_swapped_values' to pass to threads
* procs: Use swapped values in threaded subprocs
This is so the thread will use the same swapped values as the origin one.
* news: Add env-swap-thread-safety
* refactor: remove usage of global variables in abbrevs.py
* chore: add flake8-mutable to prevent mutable defaults
* fix: abbrevs expand test
* refactor: add xonsh session singleton
* refactor: fix circular errors when using xonshSession as singleton
* refactor: remove black magicked builtin attributes
* style: black format tests as well
* refactor: update tests to use xonsh-session singleton
* refactor: update abbrevs to not use builtins
* test: remove DummyCommandsCache and patch orig class
* fix: failing test_command_completers
* test: use monkeypatch to update xession fixture
* fix: failing test_pipelines
* fix: failing test_main
* chore: run test suit as single invocation
* test: fix tests/test_xonsh.xsh
* refactor: remove builtins from docs/conf.py
* fix: mypy error in jobs
* fix: test error from test_main
* test: close xession error in test_command_completers
* chore: use pytest-cov for reporting coverage
this will include subprocess calls, and will increase coverage
* style:
* First attempt at register/deregister machinery for envvars
* Added detailed docstring, simplified ensurers
Also added some type checking that became clear from docstring writing.
* Changes in response to @scopatz review
Simplified kwarg names.
* defaultval -> default
* Created new Var namedtuple, as well as DEFAULT_VARS
We should now delete DEFAULT_ENSURERS, DEFAULT_VALUES, DEFAULT_DOCS, and
refactor Env to use the new single namedtuple and the DEFAULT_VARS dict
* Removed DEFAULT_ENSURERS, DEFAULT_VALUES, DEFAULT_DOCS
Now need to edit Env to use new DEFAULT_VARS, Var namedtuple
* Finished updating Env object to use new combined Var
Also made corresponding changes elsewhere ensurer was used
* Working on test failures
* More fixes in light of test failures
* Set default values for Var in register.
There's a bit of duplication here, but makes for a cleaner function.
* Black reformatting on environ.py
* Removed history replay
* Added register tests
* Added addtional deregistration test
* Removed all replay references, in docs too
* Added news item for env-reg-dereg
* trigger rebuild
* doc fix
* more doc fixes
* again
* attr names
* reorder imports
* fix flake error
Co-authored-by: Anthony Scopatz <scopatz@gmail.com>
* flake8 fixes -- tests only
* fix ci failure
* integrate fix from is_3551 so tests will pass.
* Update tests/test_builtins.py
Co-authored-by: Gil Forsyth <gforsyth@users.noreply.github.com>