NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #448 most downloaded on PyPI
library with cross-python path, ini-parsing, io, code, log facilities
Last release 5 years ago
no release in 18 months
Ships fairly regularly
a new release about every 4 months
Nearly every release is documented
notes for 57 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
19 years old
65 releases · first in 2008
Co-authored-by: Hugo van Kemenade hugovk@users.noreply.github.com
Co-authored-by: Hugo van Kemenade hugovk@users.noreply.github.com
Support Python 3.11
Support NO_COLOR environment variable
Update vendored apipkg: 1.5 => 2.0
Fix a regular expression DoS vulnerability in the py.path.svnwc SVN blame functionality (CVE-2020-29651)
Fix a regular expression DoS vulnerability in the py.path.svnwc SVN blame functionality (CVE-2020-29651)
Update vendored apipkg: 1.4 => 1.5
Update vendored iniconfig: 1.0.0 => 1.1.1
One column per quarter.
Add type annotation stubs for the following modules:
Add type annotation stubs for the following modules:
py.error
py.iniconfig
py.path (not including SVN paths)
py.io
py.xml
There are no plans to type other modules at this time.
The type annotations are provided in external .pyi files, not inline in the code, and may therefore contain small errors or omissions. If you use py in conjunction with a type checker, and encounter any type errors you believe should be accepted, please report it in an issue.
Update CHANGELOG for 1.8.2
Update CHANGELOG for 1.8.2
On Windows, ``py.path.local``s which differ only in case now have the same Python hash value. Previously, such paths were considered equal but had different hashes, which is not allowed and breaks the assumptions made by dicts, sets and other users of hashes.
Update CHANGELOG for 1.8.1
Update CHANGELOG for 1.8.1
Handle FileNotFoundError when trying to import pathlib in path.common on Python 3.4 (#207).
py.path.local.samefile now works correctly in Python 3 on Windows when dealing with symlinks.
add "importlib" pyimport mode for python3.5+, allowing unimportable test suites to contain identically named modules.
add "importlib" pyimport mode for python3.5+, allowing unimportable test suites to contain identically named modules.
fix LocalPath.as_cwd() not calling os.chdir() with None, when being invoked from a non-existing directory.
Update CHANGELOG for 1.7.0
Update CHANGELOG for 1.7.0
fix #174: use shutil.get_terminal_size() in Python 3.3+ to determine the size of the terminal, which produces more accurate results than the previous method.
fix pytest-dev/pytest#2042: introduce new PY_IGNORE_IMPORTMISMATCH environment variable that suppresses ImportMismatchError exceptions when set to 1.
add TerminalWriter.width_of_current_line (i18n version of TerminalWriter.chars_on_current_line), a read-only property that tracks how wide the current
add TerminalWriter.width_of_current_line (i18n version of TerminalWriter.chars_on_current_line), a read-only property that tracks how wide the current line is, attempting to take into account international characters in the calculation.
Remove old hg files (ignore and tags)
Remove old hg files (ignore and tags)
fix pytest-dev/pytest#3451: don't make assumptions about fs case sensitivity in make_numbered_dir.
fix #179: ensure we can support 'from py.error import ...'
fix #179: ensure we can support 'from py.error import ...'
fix #169, #170: error importing py.log on Windows: no module named syslog.
fix #169, #170: error importing py.log on Windows: no module named syslog.
fix #167 - prevent pip from installing py in unsupported Python versions.
fix #167 - prevent pip from installing py in unsupported Python versions.
fix issue119 / pytest issue708 where tmpdir may fail to make numbered directories when the filesystem is case-insensitive.
fix issue119 / pytest issue708 where tmpdir may fail to make numbered directories when the filesystem is case-insensitive.
avoid imports in calls to py.path.local().fnmatch(). Thanks Andreas Pelme for the PR.
avoid imports in calls to py.path.local().fnmatch(). Thanks Andreas Pelme for the PR.
fix issue106: Naive unicode encoding when calling fspath() in python2. Thanks Tiago Nobrega for the PR.
fix issue110: unittest.TestCase.assertWarns fails with py imported.
fix issue70: added ability to copy all stat info in py.path.local.copy.
fix issue70: added ability to copy all stat info in py.path.local.copy.
make TerminalWriter.fullwidth a property. This results in the correct value when the terminal gets resized.
update supported html tags to include recent additions. Thanks Denis Afonso for the PR.
Remove internal code in Source.compile meant to support earlier Python 3 versions that produced the side effect of leaving None in sys.modules when called (see pytest-dev/pytest#2103). Thanks Bruno Oliveira for the PR.
Nothing published for this version
fix local().copy(dest, mode=True) to also work with unicode.
fix local().copy(dest, mode=True) to also work with unicode.
pass better error message with svn EEXIST paths
fix issue68 an assert with a multiline list comprehension was not reported correctly. Thanks Henrik Heibuerger.
fix issue68 an assert with a multiline list comprehension was not reported correctly. Thanks Henrik Heibuerger.
fix issue55: revert a change to the statement finding algorithm which is used by pytest for generating tracebacks. Thanks Daniel Hahler for initial an
fix issue55: revert a change to the statement finding algorithm which is used by pytest for generating tracebacks. Thanks Daniel Hahler for initial analysis.
fix pytest issue254 for when traceback rendering can't find valid source code. Thanks Ionel Cristian Maries.
fix issue64 -- dirpath regression when "abs=True" is passed. Thanks Gilles Dartiguelongue.
fix issue64 -- dirpath regression when "abs=True" is passed. Thanks Gilles Dartiguelongue.
fix issue59: point to new repo site
fix issue59: point to new repo site
allow a new ensuresyspath="append" mode for py.path.local.pyimport() so that a neccessary import path is appended instead of prepended to sys.path
strike undocumented, untested argument to py.path.local.pypkgpath
speed up py.path.local.dirpath by a factor of 10
avoid calling normpath twice in py.path.local
avoid calling normpath twice in py.path.local
py.builtin._reraise properly reraises under Python3 now.
fix issue53 - remove module index, thanks jenisys.
allow posix path separators when "fnmatch" is called. Thanks Christian Long for the complete PR.
fix issue52: vaguely fix py25 compat of py.path.local (it's not officially supported), also fix docs
fix issue52: vaguely fix py25 compat of py.path.local (it's not officially supported), also fix docs
fix pytest issue 589: when checking if we have a recursion error check for the specific "maximum recursion depth" text of the exception.
Fix retrieving source when an else: line has an other statement on the same line.
Fix retrieving source when an else: line has an other statement on the same line.
add localpath read_text/write_text/read_bytes/write_bytes methods as shortcuts and clearer bytes/text interfaces for read/write. Adapted from a PR from Paul Moore.
use newer apipkg version which makes attribute access on alias modules resolve to None rather than an ImportError. This helps with code that uses insp
use newer apipkg version which makes attribute access on alias modules resolve to None rather than an ImportError. This helps with code that uses inspect.getframeinfo() on py34 which causes a complete walk on sys.modules thus triggering the alias module to resolve and blowing up with ImportError. The negative side is that something like "py.test.X" will now result in None instead of "importerror: pytest" if pytest is not installed. But you shouldn't import "py.test" anyway anymore.
adapt one svn test to only check for any exception instead of specific ones because different svn versions cause different errors and we don't care.
refactor class-level registry on ForkedFunc child start/finish event to become instance based (i.e. passed into the constructor)
refactor class-level registry on ForkedFunc child start/finish event to become instance based (i.e. passed into the constructor)
ForkedFunc now has class-level register_on_start/on_exit() methods to allow adding information in the boxed process. Thanks Marc Schlaich.
ForkedFunc now has class-level register_on_start/on_exit() methods to allow adding information in the boxed process. Thanks Marc Schlaich.
ForkedFunc in the child opens in "auto-flush" mode for stdout/stderr so that when a subprocess dies you can see its output even if it didn't flush itself.
refactor traceback generation in light of pytest issue 364 (shortening tracebacks). you can now set a new traceback style on a per-entry basis such that a caller can force entries to be isplayed as short or long entries.
win32: py.path.local.sysfind(name) will preferrably return files with extensions so that if "X" and "X.bat" or "X.exe" is on the PATH, one of the latter two will be returned.
ignore unicode decode errors in xmlescape. Thanks Anatoly Bubenkoff.
ignore unicode decode errors in xmlescape. Thanks Anatoly Bubenkoff.
on python2 modify traceback.format_exception_only to match python3 behaviour, namely trying to print unicode for Exception instances
use a safer way for serializing exception reports (helps to fix pytest issue413)
Nothing published for this version
some micro-optimizations in py/_code/code.py for speeding up pytest runs. Thanks Alex Gaynor for initiative.
merge in apipkg fixes
some micro-optimizations in py/_code/code.py for speeding up pytest runs. Thanks Alex Gaynor for initiative.
check PY_COLORS=1 or PY_COLORS=0 to force coloring/not-coloring for py.io.TerminalWriter() independently from capabilities of the output file. Thanks Marc Abramowitz for the PR.
some fixes to unicode handling in assertion handling. Thanks for the PR to Floris Bruynooghe. (This helps to fix pytest issue 319).
depend on setuptools presence, remove distribute_setup
introduce path.ensure_dir() as a synonym for ensure(..., dir=1)
introduce path.ensure_dir() as a synonym for ensure(..., dir=1)
some unicode/python3 related fixes wrt to path manipulations (if you start passing unicode particular in py2 you might still get problems, though)
make py.io.TerminalWriter() prefer colorama if it is available and avoid empty lines when separator-lines are printed by being defensive and reducing
make py.io.TerminalWriter() prefer colorama if it is available and avoid empty lines when separator-lines are printed by being defensive and reducing the working terminalwidth by 1
introduce optional "expanduser" argument to py.path.local to that local("~", expanduser=True) gives the home directory of "user".
fix issue35 - define __gt__ ordering between a local path and strings
fix issue35 - define __gt__ ordering between a local path and strings
fix issue36 - make chdir() work even if os.getcwd() fails.
add path.exists/isdir/isfile/islink shortcuts
introduce local path.as_cwd() context manager.
introduce p.write(ensure=1) and p.open(ensure=1) where ensure triggers creation of neccessary parent dirs.
majorly speed up some common calling patterns with LocalPath.listdir()/join/check/stat functions considerably.
majorly speed up some common calling patterns with LocalPath.listdir()/join/check/stat functions considerably.
fix an edge case with fnmatch where a glob style pattern appeared in an absolute path.
fix dupfile to work with files that don't carry a mode. Thanks Jason R. Coombs.
fix dupfile to work with files that don't carry a mode. Thanks Jason R. Coombs.
fix getting statementrange/compiling a file ending in a comment line without newline (on python2.5)
fix getting statementrange/compiling a file ending in a comment line without newline (on python2.5)
for local paths you can pass "mode=True" to a copy() in order to copy permission bits (underlying mechanism is using shutil.copymode)
add paths arguments to py.path.local.sysfind to restrict search to the diretories in the path.
add isdir/isfile/islink to path.stat() objects allowing to perform multiple checks without calling out multiple times
drop py.path.local.__new__ in favour of a simpler __init__
iniconfig: allow "name:value" settings in config files, no space after "name" required
fix issue 27 - NameError in unlikely untested case of saferepr
fix python2.4 support - for pre-AST interpreters re-introduce old way to find statements in exceptions (closes pytest issue 209)
fix python2.4 support - for pre-AST interpreters re-introduce old way to find statements in exceptions (closes pytest issue 209)
add tox.ini to distribution
fix issue23 - print ,* args information in tracebacks, thanks Manuel Jacob
use _ast to determine statement ranges when printing tracebacks - avoiding multi-second delays on some large test modules
use _ast to determine statement ranges when printing tracebacks - avoiding multi-second delays on some large test modules
fix an internal test to not use class-denoted pytest_funcarg__
fix a doc link to bug tracker
try to make terminal.write() printing more robust against unicodeencode/decode problems, amend according test
introduce py.builtin.text and py.builtin.bytes to point to respective str/unicode (py2) and bytes/str (py3) types
fix error handling on win32/py33 for ENODIR
terminalwriter: default to encode to UTF8 if no encoding is defined on the output stream
terminalwriter: default to encode to UTF8 if no encoding is defined on the output stream
issue22: improve heuristic for finding the statementrange in exceptions
fix bug of path.visit() which would not recognize glob-style patterns for the "rec" recursion argument
fix bug of path.visit() which would not recognize glob-style patterns for the "rec" recursion argument
changed iniconfig parsing to better conform, now the chars ";" and "#" only mark a comment at the stripped start of a line
include recent apipkg-1.2
change internal terminalwriter.line/reline logic to more nicely support file spinners
fix issue 13 - correct handling of the tag name object in xmlgen
fix issue 13 - correct handling of the tag name object in xmlgen
fix issue 14 - support raw attribute values in xmlgen
fix windows terminalwriter printing/re-line problem
update distribute_setup.py to 0.6.27
Nothing published for this version
fix issue11 - own test failure with python3.3 / Thanks Benjamin Peterson
fix issue11 - own test failure with python3.3 / Thanks Benjamin Peterson
help fix pytest issue 102
help to fix pytest issue99: unify output of ExceptionInfo.getrepr(style="native") with ...(style="long")
help to fix pytest issue99: unify output of ExceptionInfo.getrepr(style="native") with ...(style="long")
fix issue7: source.getstatementrange() now raises proper error if no valid statement can be found
fix issue8: fix code and tests of svnurl/svnwc to work on subversion 1.7 - note that path.status(updates=1) will not properly work svn-17's status --xml output is broken.
make source.getstatementrange() more resilent about non-python code frames (as seen from jnja2)
make trackeback recursion detection more resilent about the eval magic of a decorator library
iniconfig: add support for ; as comment starter
properly handle lists in xmlgen on python3
normalize py.code.getfslineno(obj) to always return a (string, int) tuple defaulting to ("", -1) respectively if no source code can be found for obj.
improve some unicode handling in terminalwriter and capturing (used by pytest)
improve some unicode handling in terminalwriter and capturing (used by pytest)
a few fixes and assertion related refinements for pytest-2.1
a few fixes and assertion related refinements for pytest-2.1
guard py.code.Code and getfslineno against bogus input and make py.code.Code objects for object instance by looking up their __call__ function.
make exception presentation robust against invalid current cwd
fix terminal coloring issue for skipped tests (thanks Amaury)
fix terminal coloring issue for skipped tests (thanks Amaury)
fix issue4 - large calls to ansi_print (thanks Amaury)
fix (pytest) issue23 - tmpdir argument now works on Python3.2 and WindowsXP (which apparently starts to offer os.symlink now)
fix (pytest) issue23 - tmpdir argument now works on Python3.2 and WindowsXP (which apparently starts to offer os.symlink now)
better error message for syntax errors from compiled code
small fix to better deal with (un-)colored terminal output on windows
fix issue1 - py.error.* classes to be pickleable
fix issue1 - py.error.* classes to be pickleable
fix issue2 - on windows32 use PATHEXT as the list of potential extensions to find find binaries with py.path.local.sysfind(commandname)
fix (pytest-) issue10 and refine assertion reinterpretation to avoid breaking if the __nonzero__ of an object fails
fix (pytest-) issue17 where python3 does not like "import *" leading to misrepresentation of import-errors in test modules
fix py.error.* attribute pypy access issue
allow path.samefile(arg) to succeed when arg is a relative filename
fix (pytest-) issue20 path.samefile(relpath) works as expected now
fix (pytest-) issue8 len(long_list) now shows the lenght of the list
removed the old and deprecated "py.magic" namespace
py.test was moved to a separate "pytest" package. What remains is a stub hook which will proxy import py.test to pytest.
all command line tools ("py.cleanup/lookup/countloc/..." moved to "pycmd" package)
removed the old and deprecated "py.magic" namespace
use apipkg-1.1 and make py.apipkg.initpkg|ApiModule available
add py.iniconfig module for brain-dead easy ini-config file parsing
introduce py.builtin.any()
path objects have a .dirname attribute now (equivalent to os.path.dirname(path))
path.visit() accepts breadthfirst (bf) and sort options
remove deprecated py.compat namespace
fix issue111: improve install documentation for windows
fix issue111: improve install documentation for windows
fix issue119: fix custom collectability of __init__.py as a module
fix issue116: --doctestmodules work with __init__.py files as well
fix issue115: unify internal exception passthrough/catching/GeneratorExit
fix issue118: new --tb=native for presenting cpython-standard exceptions
fix issue113: assertion representation problem with triple-quoted strings (and possibly other cases)
fix issue113: assertion representation problem with triple-quoted strings (and possibly other cases)
make conftest loading detect that a conftest file with the same content was already loaded, avoids surprises in nested directory structures which can be produced e.g. by Hudson. It probably removes the need to use --confcutdir in most cases.
fix terminal coloring for win32 (thanks Michael Foord for reporting)
fix weirdness: make terminal width detection work on stdout instead of stdin (thanks Armin Ronacher for reporting)
remove trailing whitespace in all py/text distribution files
New features ++++++++++++++++++
fix issue103: introduce py.test.raises as context manager, examples:
with py.test.raises(ZeroDivisionError):
x = 0
1 / x
with py.test.raises(RuntimeError) as excinfo:
call_something()
# you may do extra checks on excinfo.value|type|traceback here
(thanks Ronny Pfannschmidt)
Funcarg factories can now dynamically apply a marker to a test invocation. This is for example useful if a factory provides parameters to a test which are expected-to-fail:
def pytest_funcarg__arg(request):
request.applymarker(py.test.mark.xfail(reason="flaky config"))
...
def test_function(arg):
...
improved error reporting on collection and import errors. This makes use of a more general mechanism, namely that for custom test item/collect nodes node.repr_failure(excinfo) is now uniformly called so that you can override it to return a string error representation of your choice which is going to be reported as a (red) string.
introduce '--junitprefix=STR' option to prepend a prefix to all reports in the junitxml file.
make tests and the pytest_recwarn plugin in particular fully compatible to Python2.7 (if you use the recwarn funcarg warnings will be enabled so that you can properly check for their existence in a cross-python manner).
refine --pdb: ignore xfailed tests, unify its TB-reporting and don't display failures again at the end.
fix assertion interpretation with the ** operator (thanks Benjamin Peterson)
fix issue105 assignment on the same line as a failing assertion (thanks Benjamin Peterson)
fix issue104 proper escaping for test names in junitxml plugin (thanks anonymous)
fix issue57 -f|--looponfail to work with xpassing tests (thanks Ronny)
fix issue92 collectonly reporter and --pastebin (thanks Benjamin Peterson)
fix py.code.compile(source) to generate unique filenames
fix assertion re-interp problems on PyPy, by defering code compilation to the (overridable) Frame.eval class. (thanks Amaury Forgeot)
fix py.path.local.pyimport() to work with directories
streamline py.path.local.mkdtemp implementation and usage
don't print empty lines when showing junitxml-filename
add optional boolean ignore_errors parameter to py.path.local.remove
fix terminal writing on win32/python2.4
py.process.cmdexec() now tries harder to return properly encoded unicode objects on all python versions
install plain py.test/py.which scripts also for Jython, this helps to get canonical script paths in virtualenv situations
make path.bestrelpath(path) return ".", note that when calling X.bestrelpath the assumption is that X is a directory.
make initial conftest discovery ignore "--" prefixed arguments
fix resultlog plugin when used in an multicpu/multihost xdist situation (thanks Jakub Gustak)
perform distributed testing related reporting in the xdist-plugin rather than having dist-related code in the generic py.test distribution
fix homedir detection on Windows
ship distribute_setup.py version 0.6.13
New features ++++++++++++++++++
issue91: introduce new py.test.xfail(reason) helper to imperatively mark a test as expected to fail. Can be used from within setup and test functions. This is useful especially for parametrized tests when certain configurations are expected-to-fail. In this case the declarative approach with the @py.test.mark.xfail cannot be used as it would mark all configurations as xfail.
issue102: introduce new --maxfail=NUM option to stop test runs after NUM failures. This is a generalization of the '-x' or '--exitfirst' option which is now equivalent to '--maxfail=1'. Both '-x' and '--maxfail' will now also print a line near the end indicating the Interruption.
issue89: allow py.test.mark decorators to be used on classes (class decorators were introduced with python2.6) and also allow to have multiple markers applied at class/module level by specifying a list.
improve and refine letter reporting in the progress bar: . pass f failed test s skipped tests (reminder: use for dependency/platform mismatch only) x xfailed test (test that was expected to fail) X xpassed test (test that was expected to fail but passed)
You can use any combination of 'fsxX' with the '-r' extended reporting option. The xfail/xpass results will show up as skipped tests in the junitxml output - which also fixes issue99.
make py.test.cmdline.main() return the exitstatus instead of raising SystemExit and also allow it to be called multiple times. This of course requires that your application and tests are properly teared down and don't have global state.
improved traceback presentation: - improved and unified reporting for "--tb=short" option - Errors during test module imports are much shorter, (using --tb=short style) - raises shows shorter more relevant tracebacks - --fulltrace now more systematically makes traces longer / inhibits cutting
improve support for raises and other dynamically compiled code by manipulating python's linecache.cache instead of the previous rather hacky way of creating custom code objects. This makes it seemlessly work on Jython and PyPy where it previously didn't.
fix issue96: make capturing more resilient against Control-C interruptions (involved somewhat substantial refactoring to the underlying capturing functionality to avoid race conditions).
fix chaining of conditional skipif/xfail decorators - so it works now as expected to use multiple @py.test.mark.skipif(condition) decorators, including specific reporting which of the conditions lead to skipping.
fix issue95: late-import zlib so that it's not required for general py.test startup.
fix issue94: make reporting more robust against bogus source code (and internally be more careful when presenting unexpected byte sequences)
deprecate --report option in favour of a new shorter and easier to remember -r option: it takes a string argument consisting of any combination of 'xf…
deprecate --report option in favour of a new shorter and easier to remember -r option: it takes a string argument consisting of any combination of 'xfsX' characters. They relate to the single chars you see during the dotted progress printing and will print an extra line per test at the end of the test run. This extra line indicates the exact position or test ID that you directly paste to the py.test cmdline in order to re-run a particular test.
allow external plugins to register new hooks via the new pytest_addhooks(pluginmanager) hook. The new release of the pytest-xdist plugin for distributed and looponfailing testing requires this feature.
add a new pytest_ignore_collect(path, config) hook to allow projects and plugins to define exclusion behaviour for their directory structure - for example you may define in a conftest.py this method:
def pytest_ignore_collect(path):
return path.check(link=1)
to prevent even a collection try of any tests in symlinked dirs.
new pytest_pycollect_makemodule(path, parent) hook for allowing customization of the Module collection object for a matching test module.
extend and refine xfail mechanism: @py.test.mark.xfail(run=False) do not run the decorated test @py.test.mark.xfail(reason="...") prints the reason string in xfail summaries specifiying --runxfail on command line virtually ignores xfail markers
expose (previously internal) commonly useful methods: py.io.get_terminal_with() -> return terminal width py.io.ansi_print(...) -> print colored/bold text on linux/win32 py.io.saferepr(obj) -> return limited representation string
expose test outcome related exceptions as py.test.skip.Exception, py.test.raises.Exception etc., useful mostly for plugins doing special outcome interpretation/tweaking
(issue85) fix junitxml plugin to handle tests with non-ascii output
fix/refine python3 compatibility (thanks Benjamin Peterson)
fixes for making the jython/win32 combination work, note however: jython2.5.1/win32 does not provide a command line launcher, see http://bugs.jython.org/issue1491 . See pylib install documentation for how to work around.
fixes for handling of unicode exception values and unprintable objects
(issue87) fix unboundlocal error in assertionold code
(issue86) improve documentation for looponfailing
refine IO capturing: stdin-redirect pseudo-file now has a NOP close() method
ship distribute_setup.py version 0.6.10
added links to the new capturelog and coverage plugins
Nothing published for this version
try harder to have deprecation warnings for py.compat.* accesses report a correct location
introduce automatic plugin registration via 'pytest11' entrypoints via setuptools' pkg_resources.iter_entry_points
fix py.test dist-testing to work with execnet >= 1.0.0b4
re-introduce py.test.cmdline.main() for better backward compatibility
svn paths: fix a bug with path.check(versioned=True) for svn paths, allow '%' in svn paths, make svnwc.update() default to interactive mode like in 1.0.x and add svnwc.update(interactive=False) to inhibit interaction.
refine distributed tarball to contain test and no pyc files
try harder to have deprecation warnings for py.compat.* accesses report a correct location
deprecate parser.addgroup in favour of getgroup which creates option group
adjust and improve docs
remove py.rest tool and internal namespace - it was never really advertised and can still be used with the old release if needed. If there is interest it could be revived into its own tool i guess.
fix issue48 and issue59: raise an Error if the module from an imported test file does not seem to come from the filepath - avoids "same-name" confusion that has been reported repeatedly
merged Ronny's nose-compatibility hacks: now nose-style setup_module() and setup() functions are supported
introduce generalized py.test.mark function marking
reshuffle / refine command line grouping
deprecate parser.addgroup in favour of getgroup which creates option group
add --report command line option that allows to control showing of skipped/xfailed sections
generalized skipping: a new way to mark python functions with skipif or xfail at function, class and modules level based on platform or sys-module attributes.
extend py.test.mark decorator to allow for positional args
introduce and test "py.cleanup -d" to remove empty directories
fix issue #59 - robustify unittest test collection
make bpython/help interaction work by adding an __all__ attribute to ApiModule, cleanup initpkg
use MIT license for pylib, add some contributors
remove py.execnet code and substitute all usages with 'execnet' proper
fix issue50 - cached_setup now caches more to expectations for test functions with multiple arguments.
merge Jarko's fixes, issue #45 and #46
add the ability to specify a path for py.lookup to search in
fix a funcarg cached_setup bug probably only occuring in distributed testing and "module" scope with teardown.
many fixes and changes for making the code base python3 compatible, many thanks to Benjamin Peterson for helping with this.
consolidate builtins implementation to be compatible with >=2.3, add helpers to ease keeping 2 and 3k compatible code
deprecate py.compat.doctest|subprocess|textwrap|optparse
deprecate py.magic.autopath, remove py/magic directory
move pytest assertion handling to py/code and a pytest_assertion plugin, add "--no-assert" option, deprecate py.magic namespaces in favour of (less) py.code ones.
consolidate and cleanup py/code classes and files
cleanup py/misc, move tests to bin-for-dist
introduce delattr/delitem/delenv methods to py.test's monkeypatch funcarg
consolidate py.log implementation, remove old approach.
introduce py.io.TextIO and py.io.BytesIO for distinguishing between text/unicode and byte-streams (uses underlying standard lib io.* if available)
make py.unittest_convert helper script available which converts "unittest.py" style files into the simpler assert/direct-test-classes py.test/nosetests style. The script was written by Laura Creighton.
simplified internal localpath implementation
Nothing published for this version
fixing packaging issues, triggered by fedora redhat packaging, also added doc, examples and contrib dirs to the tarball.
fixing packaging issues, triggered by fedora redhat packaging, also added doc, examples and contrib dirs to the tarball.
added a documentation link to the new django plugin.
Your coding agent can read these notes before it upgrades. Set up the MCP server →