Bruno Oliveira
07f5f6fd4a
Merge pull request #7481 from bluetech/tw-unicode-escape
...
terminalwriter: bring back handling of printing characters not supported by stdout
2020-07-11 16:01:45 -03:00
Ran Benita
7b65b2337b
Merge pull request #7472 from bluetech/cleanups-4
...
Some minor fixes & type annotations
2020-07-11 19:05:07 +03:00
Ran Benita
113339b029
terminalwriter: bring back handling of printing characters not supported by stdout
2020-07-11 18:59:00 +03:00
Hugo van Kemenade
c1c5a2b34a
Add support for NO_COLOR and FORCE_COLOR ( #7466 )
...
Co-authored-by: Bruno Oliveira <nicoddemus@gmail.com >
2020-07-10 08:49:10 -03:00
Ran Benita
a2f021b6f3
Remove no longer needed noqa: F821 uses
...
Not needed since pyflakes 2.2.0.
2020-07-10 13:08:56 +03:00
gdhameeja
03230b4002
Fix-6906: Added code-highlight option to disable highlighting optionally
...
Co-authored-by: Ran Benita <ran@unusedvar.com >
2020-06-26 13:24:56 -07:00
Ran Benita
30e3d473c4
Type annotate _pytest._io.saferepr
2020-06-05 11:34:19 +03:00
Ran Benita
aca534c67d
Improve our own wcwidth implementation and remove dependency on wcwidth package
...
`TerminalWriter`, imported recently from `py`, contains its own
incomplete wcwidth (`char_with`/`get_line_width`) implementation. The
`TerminalReporter` also needs this, but uses the external `wcwidth`
package.
This commit brings the `TerminalWriter` implementation up-to-par with
`wcwidth`, moves to implementation to a new file `_pytest._io.wcwidth`
which is used everywhere, and removes the dependency.
The differences compared to the `wcwidth` package are:
- Normalizes the string before counting.
- Uses Python's `unicodedata` instead of vendored Unicode tables. This
means the data corresponds to the Python's version Unicode version
instead of the `wcwidth`'s package version.
- Apply some optimizations.
2020-05-26 17:14:01 +03:00
Bruno Oliveira
6c2d358918
Merge pull request #7135 from pytest-dev/terminalwriter
2020-05-06 18:26:44 -03:00
Bruno Oliveira
d0022b5a13
'saferepr' handles classes with broken __getattribute__
...
Fix #7145
2020-05-05 19:22:39 -03:00
Ran Benita
d8558e87c5
terminalwriter: clean up markup function a bit
2020-04-30 16:44:03 +03:00
Ran Benita
414a87a53f
config/argparsing: use our own get_terminal_width()
2020-04-30 16:44:03 +03:00
Ran Benita
d5584c7207
terminalwriter: compute width_of_current_line lazily
...
Currently this property is computed eagerly, which means
get_line_width() is computed on everything written, but that is a slow
function.
Compute it lazily, so that get_line_width() only runs when needed.
2020-04-30 16:44:03 +03:00
Ran Benita
dd32c72ff0
terminalwriter: remove unused property chars_on_current_line
2020-04-30 16:44:03 +03:00
Ran Benita
1bc4170e63
terminalwriter: don't flush implicitly; add explicit flushes
...
Flushing on every write is somewhat expensive.
Rely on line buffering instead (if line buffering for stdout is
disabled, there must be some reason...), and add explicit flushes when
not outputting lines.
This is how regular `print()` e.g. work so should be familiar.
2020-04-30 16:44:03 +03:00
Ran Benita
d9b43647b7
terminalwriter: inline function _update_chars_on_current_line
2020-04-30 16:44:03 +03:00
Ran Benita
8e04d35a33
terminalwriter: remove unneeded hasattr use
2020-04-30 16:44:03 +03:00
Ran Benita
e8fc5f99fa
terminalwriter: add type annotations
2020-04-30 16:44:03 +03:00
Ran Benita
f6564a548a
terminalwriter: remove win32 specific code in favor of relying on colorama
...
On Windows we already depend on colorama, which takes care of all of
this custom code on its own.
2020-04-30 16:44:03 +03:00
Ran Benita
8d2d1c40f8
terminalwriter: inline function _escaped
...
Doesn't add much.
2020-04-30 16:44:03 +03:00
Ran Benita
66ee755649
terminalwriter: remove TerminalWriter's stringio argument
...
Had a mark indicating it should be removed, and I agree, it's better to
just use the `file` argument.
2020-04-30 16:44:02 +03:00
Ran Benita
94a57d2353
io: combine _io.TerminalWriter and _io.terminalwriter.TerminalWriter
...
Previously it extended an external type but now it come move to the type
itself.
2020-04-30 16:44:02 +03:00
Ran Benita
dac05ccd9a
terminalwriter: remove support for passing callable as file in TerminalWriter
...
Not used.
2020-04-30 16:44:02 +03:00
Ran Benita
0528307ebf
terminalwriter: remove unused function TerminalWriter.reline
2020-04-30 16:44:02 +03:00
Ran Benita
a6819726cd
terminalwriter: remove unused function ansi_print
2020-04-30 16:44:02 +03:00
Ran Benita
b6cc90e0af
terminalwriter: remove support for writing bytes directly
...
It is not used and slows things down.
2020-04-30 16:44:02 +03:00
Ran Benita
9a59970cad
terminalwriter: optimize get_line_width() a bit
...
This function is called a lot when printing a lot of text, and is very
slow -- this speeds it up a bit.
2020-04-30 16:44:02 +03:00
Ran Benita
6c1b6a09b8
terminalwriter: simplify get_terminal_width()
...
The shutil.get_terminal_size() handles everything this did already.
2020-04-30 16:44:02 +03:00
Ran Benita
c749e44efc
terminalwriter: remove custom win32 screen width code
...
Python 3 does this on its own so we can use the shared code:
bcf2b59fb5
2020-04-30 16:44:02 +03:00
Ran Benita
1d596b27a7
terminalwriter: move Win32ConsoleWriter definition under win32 conditional
...
This way non-Windows platforms skip it. It also uses things defined
inside the `if`.
2020-04-30 16:44:02 +03:00
Ran Benita
5e2d820308
terminalwriter: fix lints
2020-04-30 16:44:02 +03:00
Ran Benita
3014d9a3f7
terminalwriter: auto-format
2020-04-30 16:43:55 +03:00
Ran Benita
276405a039
terminalwriter: vendor TerminalWriter from py
...
Straight copy from py 1.8.1. Doesn't pass linting yet.
2020-04-30 16:43:54 +03:00
Bruno Oliveira
c91abe48ba
Assorted improvements following up #6658
2020-02-20 18:51:41 -03:00
Daniel Hahler
b7ad4c2bed
_pformat_dispatch: pass through args ( #6715 )
2020-02-12 16:07:57 +01:00
Bruno Oliveira
4209ad6fca
Use code highlighting if pygments is installed ( #6658 )
...
* Use code highlighting if pygments is installed
* Use colorama constants instead of bare ascii codes
Could not find the exact equivalent of 'hl-reset' code using colorama
constants though.
* Refactor ASCII color handling into a fixture
* Revert back to using explicit color codes
* In Python 3.5 skip rest of tests that require ordered markup in colored output
2020-02-12 08:32:37 -03:00
Daniel Hahler
09bdbffbde
Merge master into features
...
Conflicts:
src/_pytest/_code/code.py
src/_pytest/main.py
2020-01-24 23:44:50 +01:00
Daniel Hahler
03bc8aba4e
config: typing for create_terminal_writer, re-export TerminalWriter
...
This also imports `TerminalWriter` explicitly via `_pytest._io`,
allowing for easier extending / replacing it.
2020-01-23 14:09:37 +01:00
Daniel Hahler
c0b1a39192
minor: move internal _pformat_dispatch function
2019-11-20 17:57:14 +01:00
Daniel Hahler
eb7a4e32ad
saferepr: handle BaseExceptions
...
This causes INTERNALERRORs with pytest-django, which uses
`pytest.fail` (derived from `BaseException`) to prevent DB access, when
pytest then tries to e.g. display the `repr()` for a Django `QuerySet`
etc.
Ref: https://github.com/pytest-dev/pytest-django/pull/776
2019-11-06 22:08:10 +01:00
Ran Benita
dc30d78845
Add type annotations to _pytest._io.saferepr
2019-11-03 20:28:43 +02:00
Ran Benita
129600d698
saferepr: Avoid indirect function calls
...
The DRY savings they provide are rather small, while they make it harder
to type-check, and IMO harder to understand.
2019-07-15 17:07:58 +03:00
Ran Benita
c7aacc96bb
saferepr: Remove unused setting of max_other
...
max_other is used by the superclass repr_instance, but we override it
and use maxsize instead.
2019-07-14 22:50:14 +03:00
Ran Benita
0394ebffee
saferepr: Use an __init__ instead of setting attributes after construction
...
This will be easier to type-check, and also somewhat clearer.
2019-07-14 22:50:14 +03:00
Ran Benita
0225be53a2
saferepr: Remove dead SafeRepr.repr_unicode
...
This function is not called anywhere directly, and cannot be called by
the dynamic `repr_<type>()` dispatch mechanism because unicode is no
longer a type in Python 3.
2019-07-14 22:13:57 +03:00
Anthony Sottile
a91fe1fedd
pre-commit run pyupgrade --all-files
2019-06-03 12:08:02 -03:00
Anthony Sottile
3f1ec520fc
pre-commit run reorder-python-imports --all-files
2019-06-03 12:08:01 -03:00
Anthony Sottile
5034399d7a
pre-commit run fix-encoding-pragma --all-files
2019-06-03 12:08:01 -03:00
Anthony Sottile
dc75b6af47
Use fix-encoding-pragma pre-commit hook
2019-05-14 15:56:31 -07:00
Nikolay Kondratyev
bc00d0f7db
Fix handle repr error with showlocals and verbose output
2019-04-19 18:54:21 +03:00