* Fix regex globbing for paths that contain special regex characters
* Skip regex globbing asterisk character tests on Windows
Asterisks are forbidden in Windows filenames. Plus signs are allowed in Windows filenames, so the plus sign tests run properly.
* feat: initial match statement support
* refactor assignment exprs for <3.8 compatibility; sort imports
* remove match extensions
* bump qa-workflow python version, minor alterations for qa-pipeline
* add mypy exception
* update mypy version
* Bump workflow main python version to 3.10
* remove outdated note
Co-authored-by: Alexander Firbas <alexander.firbas@gmail.com>
* make env_name aware of prompt in pyvenv.cfg
prompt.env.env_name is now aware of the "prompt" key in pyvenv.cfg - search order from first to last is: $VIRTUAL_ENV_PROMPT, pyvenv.cfg, $VIRTUAL_ENV.
fixes#4670
* make env_name aware of prompt in pyvenv.cfg
prompt.env.env_name is now aware of the "prompt" key in pyvenv.cfg - search order from first to last is: $VIRTUAL_ENV_PROMPT, pyvenv.cfg, $VIRTUAL_ENV.
As the env_name is generated every time the prompt is generated, caching is used to only calculate it once for every venv path.
This introduces the possibility that the user will not get a correct env_name, when they change the cfg file or replace the whole venv and use different prompt settings the second time around. Although this is annoying and potentially confusing, it is still better than the situation before, where the prompt setting was simply ignored, although it is part of venv since python3.6 - so or now this might be seen as acceptable trade-off between speed and correctness.
fixes#4670
* make env_name aware of prompt in pyvenv.cfg
prompt.env.env_name is now aware of the "prompt" key in pyvenv.cfg - search order from first to last is: $VIRTUAL_ENV_PROMPT, pyvenv.cfg, $VIRTUAL_ENV.
As the env_name is generated every time the prompt is generated, caching is used to only calculate it once for every venv path.
This introduces the possibility that the user will not get a correct env_name, when they change the cfg file or replace the whole venv and use different prompt settings the second time around. Although this is annoying and potentially confusing, it is still better than the situation before, where the prompt setting was simply ignored, although it is part of venv since python3.6 - so or now this might be seen as acceptable trade-off between speed and correctness.
fixes#4670
* add type annotations
* always return str
This is more consistent and might also deal with a mypy error only observed on Ubuntu Linux python3.9
* remove unnecessary import
* adapt code to not break the documented API
When restructuring the code, I did not know that this was part of a documented API. This restores the API functions and updates the doc strings. New helper functions have been made private.
* feat: better stacktraces
* reraise SystemExit to enable proper exit codes and maintain old
behaviour in repl
* dont ignore exceptions when loading rc-files
* update tests with new SyntaxError formatting, new behavior that main
does not throw user exceptions
* pull return out of finally (flake8, B012)
* hide XonshError traces, fix mypy error, enable circumvention of trace suppression
with XONSH_DEBUG in non-interactive use
* fix mypy error
Co-authored-by: Alexander Firbas <alexander.firbas@gmail.com>
* fix: pip -r appends spaces at the end
modularize completing output from subproc-out
* docs:
* fix: flake8
* fix: failing pip comp tests
* refactor: naming xonsh conflicts with actual package
the IDE completions don't work.
we add this naming convention instead.
* feat: option to filter after completion returned
this will help reduce some boilerplate, and we can enrich the filtering
behaviour
* feat: add gh completions
* fix: filtering out completions
* refactor: simplify invoking completer interface
* test: add fixture for xsh with os-env
* test: add tests for gh-completions
* fix: flake error
* fix: mypy errors and update gh completer tests
* fix: handle cross-platform line endings
* feat: include man,bash completer only if available
* todo: improve man page completions
* fix: failing man page tests
* fix: py 3.7 compatibility
* fix: qa error
* fix: stop dir completions
* feat: improve man page completions
now shows descriptions, recognizes more number of options correctly
* fix: update man page completions
* feat: support filtering based on display as well
* Update xonsh/completer.py
Co-authored-by: Gil Forsyth <gforsyth@users.noreply.github.com>
* style:
* test: xfail ptk-shell tests on windows
Co-authored-by: Gil Forsyth <gforsyth@users.noreply.github.com>
* Add uname support
* Changelog addition
* Migration to platform module
* Update uptime.py for the last version
Merge the original uptime module to a single file
Change the bootime() return be stay compatible with xonsh
Add support for Haiku , suppose to close#3882
Add dependency from uptime to support to MacOS 10.10 by add _posix.c file.
* Update uptime.py for the last version
Merge the original uptime module to a single file
Change the bootime() return be stay compatible with xonsh
Add support for Haiku , suppose to close#3882
Add dependency from uptime to support to MacOS 10.10 by add _posix.c file.
* typo fix
* black reformat
* remove usage of print
* black is black
* add original test for uptime
convert original test via 2to3
black reformat tests
* strange syntaxe fixe for flaske8
* black the incredible tool it stop a bug fixe just because it THE tool it want a return for make less readable code
* flake8 the famous tool it permit to stop a big fixe without any information's about the trouble
* workaround about xonsh CI don't respect docstring specs
* RISC OS only comment thing
* black is a good jock in a CI
* black is a good jock in a CI
* roll back uptime.py
* look if we can make it work
* fixe all i understand
* add command in corutils alias
* reformat uptime.py with black
* fixe version
* try with xonsh xp.LIBC lib
* black in a CI is a stupid thing
* stupid Windows and it \r
* use os.linestep
* use newline simple wrapper
* use newline simple wrapper
* use newline simple wrapper
* use newline simple wrapper
* try osx rollback method
* fixe
* fixe
* a test on window via the CI because i haven't the OS
* a test on window via the CI because i haven't the OS
* a test on window via the CI because i haven't the OS
* fix: black: format
* refactor: update uname command
now has auto-completions
* docs: update news item and fix qa error
* refactor: remove unused file
* fix: qa imports
* refactor: update getting boottime
fallback to monotonic time on unix
* fix: update haiku compatibility in uptime
* refactor: add uptime to aliases
* refactor: move xoreutils tests
* fix: call aliases using xonsh
Co-authored-by: Tuux <tuxa@rtnp.org>
Co-authored-by: Noortheen Raja <jnoortheen@gmail.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.
* Refactor: Don't modify XSH in Execer
This is not an invariant change - the __del__ method of the execer now does not unload the session. This is probably what we want - the session should be the final arbiter of when it goes out of scope, and we might need an explicit mechanism to handle this.
* Refactor: make import hook Execer explicit
This is ugly for now, but helps raise the global state modifications to the surface
* Style: run black
* Refactor: add `update_cache` to `CommandsCache`
Previously a lot of internal usage of `all_commands` was for the updating side-effect. Now we make that a separate routine.
* Refactor: remove args from XonshSession constructor
* Refactor: move non stateful XonshSession methods to __init__
* Refactor: don't create custom class for namespace
* Refactor: auto-generate set of default builtins
* Refactor: set session attributes to None in constructor
* Refactor: don't test hasattr for known attribute
* Refactor: add methods to restore and disable Python exit
* Refactor: add initial value for XSH.aliases
* Refactor: don't default getattr for known attribute
* Refactor: make _lastflush a closer and move to `load()`
* Fix: catch $path even if empty.
This shouldn't ever actually manifest itself, but whilst we're here!
* Refactor: support existing usage of install_import_hooks
* Style: run black
* Refactor: remove unneeded import
* Docs: add news item
* Fix: news item
* Refactor: remove unused arg
* docs: fix news item
* fix: no duplicate calls
add helpers properties to completion-context
* refactor: importing a module should not affect the session
the user has to have XSH loaded before
* fix: todo item for testing imphooks
Co-authored-by: Noortheen Raja <jnoortheen@gmail.com>
* feat: update command completions to show description as well
closes#3823
* test: fix failing tests on windows
* fix: failing tests on windows machine
* feat: auto-completion support for source-foreign
* feat: add completions for source-bash/zsh/cmd
* refactor: change the boolean flags names that defaults to True
* feat: create field to define alias-completer
this will resolve checking parser or alias. Now the alias can define how
it completes.
will solve
https://github.com/xonsh/xonsh/pull/4267#discussion_r676066853
* docs:
* fix: mypy error
* fix: rst qa
* style:
* feat: use NumpyDoc to represent Parsed docstring
in cli_utils.py
* feat: set argparse boolean option from default values
* refactor: shorter Arg in annotation
by following convention in cli_utils.py
* fix: get description without Parameters
* fix: qa errors
If a directory was named for example '{RED}', that would get
interpreted as a color string and the prompt would not show the
direcotry name and would color it instead. Using dir names like
'{{foo}}' or simply '{' would break the prompt outright.
There was not much documentation on the prompt formating, but it seems
that escaping a curly by doubling it makes the prompt display all
curlies correctly.
fixes#4381
* feat: improve pip completer
* refactor: optimize imports
* fix: update tests for other completers
* fix: failing tests
* test: fix failing tests
* refactor: make error message clear
exception like KeyError will be more clear now
* qs import
* fix: failing tests on windows
* fix: failing tests on windows
* fix: failing tests on windows
* refactor: optimize imports
* specs: Make sure sub-specs are always captured regardless of $XONSH_CAPTURE_ALWAYS
* procs: Ensure env is used in functional aliases
* news: Add always-capture-aliases
* tests: procs: Skip known issues
* tests: Restore all builtins in the 'xonsh_builtins' fixture
* tests: vc: Use monkeypatch to mock CommandsCache functions
* tests: main: Don't use the local machine's xonshrc
* Fix: EnvPath.add() not maintain uniqueness with Path objects on replace
* Update tools.py
Removed commented out code left in originally
* Add tests for EnvPath.add() function
* Add test for EnvPath.add() function with pathlib path
* Update tests for EnvPath.add() function to support winblows paths
* Fix xontribs meta page so github links clickable and one minor typo
* Update xonsh/xontribs_meta.py
updated as requested
Co-authored-by: Gil Forsyth <gforsyth@users.noreply.github.com>
Co-authored-by: Gil Forsyth <gforsyth@users.noreply.github.com>
* 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
* feat: use ArgParserAlias for history command
* feat: cli-utils: support parsing unknown args
* feat: use _unparsed for getting history slices
* fix: use show cmd as default
* fix: update history-diff to allow new format
* fix: make sure that history files are flushed
* fix: remove unused imports
* docs:
* fix: annotation error in older py versions
* refactor: split dispatch function
so that one can intervene before final call
* fix: py3.6-7 has no mock.call_args.kwargs properties
* fix: update _dispatch_func signature
* test: update tests for history-show parser
* fix: amalgam different import path
* fix: cli_utils not amalgamated
when importing as `from xonsh.cli_utils import ...` it is not lazy
loading
* feat: use ArgparserAlias for xontrib
* test: add test for xontrib-name-completer
* fix: bashisms tests should unload module after tests
* test: make assertion failure message obvious
* fix: failing tests because autovox is already loaded in some py versions