pkgsrc changes:
- Remove dependency to py-typing, no longer needed since version 0.14.9
- Reset USE_LANGUAGES, C parts were splitted in py-ruamel-yaml-clib and a C
compiler is no longer needed
Changes:
[0, 16, 5]: 2019-08-18
- allow for ``YAML(typ=['unsafe', 'pytypes'])``
[0, 16, 4]: 2019-08-16
- fix output of TAG directives with # (reported by `Thomas Smith
<https://bitbucket.org/%7Bd4c57a72-f041-4843-8217-b4d48b6ece2f%7D/>`__)
[0, 16, 3]: 2019-08-15
- move setting of version based on YAML directive to scanner, allowing to
check for file version during TAG directive scanning
[0, 16, 2]: 2019-08-15
- preserve YAML and TAG directives on roundtrip, correctly output #
in URL for YAML 1.2 (both reported by `Thomas Smith
<https://bitbucket.org/%7Bd4c57a72-f041-4843-8217-b4d48b6ece2f%7D/>`__)
[0, 16, 1]: 2019-08-08
- Force the use of new version of ruamel.yaml.clib (reported by `Alex Joz
<https://bitbucket.org/%7B9af55900-2534-4212-976c-61339b6ffe14%7D/>`__)
- Allow '#' in tag URI as these are allowed in YAML 1.2 (reported by
`Thomas Smith
<https://bitbucket.org/%7Bd4c57a72-f041-4843-8217-b4d48b6ece2f%7D/>`__)
[0, 16, 0]: 2019-07-25
- split of C source that generates .so file to ruamel.yaml.clib
- duplicate keys are now an error when working with the old API as well
Carry over the same patch from the Boost meta-pkg to fix this same
file in this version of the asio implementation. (The patch looks a
little ungainly in isolation, but is simpler than creating multiple
#if/#else blocks in the target file.)
(TBD: this package is likely redundant, as a newer version of it is
subsumed within the Boost libraries. The only package depending on it
is abiword-plugins. At first glance, it appears that abiword-plugins
could simply be patched to reference the Boost namespace for this
functionality. But I haven't confirmed if there are any specific
functional gaps between the two implementations, so I'm making this
quick build fix for now.)
This fixes errors about gl_HOST_CPU_C_ABI_32BIT not being defined when
running autoreconf, and errors about such a command not being found when
the generated configure script is run.
configure.ac:20: warning: gl_HOST_CPU_C_ABI_32BIT is m4_require'd but not m4_defun'd
Based on only a cursory understanding of autoconf, it seems like all
the files in share/aclocal are always included. Therefore it should be
possible to detect errors like this by running autoconf or autoreconf,
before committing to pkgsrc.
8.0:
Backwards incompatible changes
- Drop support for pytest version 3.10, 4.0, 4.1, 4.2 and 4.3
- Drop support for Python 3.4.
Features
- Add support for pytest version 4.4, 4.5, 4.6, 5.0, 5.1 and 5.2.
Bug fixes
- Explicitly depend on setuptools to ensure installation when working in
environments without it.
- Bugfixes.
- Better support for GNU Hurd.
- Added path_canonicalize().
- Better support of out-of-path toolchains (among other things, that
means better autotools emulation).
- Build more friendly to recent glibc.
- Refactoring and optimization of scanning and formatting functions.
- Refactoring of stopwatch/wallclock functions. The --enable-clock and
--enable-monotonic configure switches have been removed. tain_now()
can now be set at run time to use a wall clock (default, or via
tain_now_set_wallclock()) or a stopwatch (via
tain_now_set_stopwatch()), instead of it being fixed at build time.
- Easy cross-compilation: no need to provide a whole sysdeps directory
anymore. Only a few sysdeps have to be provided manually, via a
--with-sysdep-K=V option to configure. Currently, that means one:
--with-sysdep-devurandom=yes|no
pkgsrc changes:
- Libtoolize for shared libraries on Darwin.
Version 3.0.9
* Workaround multi-interpreter initialization with tracemalloc so we don't
deadlock, by temporarily restoring to the default raw domain allocator.
* Collapse Glue.py exception tracebacks for less intimidation
* Add assertion during Share initialization so we don't get a surprise like
in View.root
* Changes to object hiding tag mechanism; guppy internals are again
properly hidden from heap traversal.
* Restore Interface attribute caching, and set View.root as chgable so that
the root attribute is not cached
* Python 3.8 support
* Fix richcompare for NodeTuple
* Warn, not error, when we get _NyHeapDefs_ from imported modules that
contain non-capsules
8.0.2:
Bug fixes
* The type stub files are now part of the wheel distribution
8.0.1:
Bug fixes
* The type stub files now work for functions imported from the root package
8.0.0:
New itertools and other additions
* This library now ships type hints for use with mypy.
* :func:`split_when`
* :func:`repeat_last`
Changes to existing itertools:
* The implementation for :func:`set_partitions` was improved.
* :func:`partition` was optimized for expensive predicates.
* :func:`unique_everseen` and :func:`groupby_transform` were re-factored.
* The implementation for :func:`difference` was improved.
Other changes
* Python 3.4 has reached its end of life and is no longer supported.
* Python 3.8 is officially supported.
* The collate function has been deprecated. It raises a DeprecationWarning if used, and will be removed in a future release.
* :func:`one` and :func:`only` now provide more informative error messages.
* Unit tests were moved outside of the main package
* Various documentation fixes
Major changes in 5.0
This is an overview of the changes in 5.0 since the last version of 4.5.x. This is not a complete list of all changes. See the complete change history for all the details.
Open Questions
How to support SQL access to data? The database schema has to be convenient and efficient for coverage.py’s execution, which would naturally make it an internal implementation detail. But the coverage data is now more complex, and SQL access could be a powerful way to access it, pointing toward a public guaranteed schema. What’s the right balance?
Backward Incompatibilities
Python 2.6, 3.3 and 3.4 are no longer supported.
The CoverageData interface is still public, but has changed.
The data file is now created earlier than it used to be. In some circumstances, you may need to use parallel=true to avoid multiple processes overwriting each others’ data.
When constructing a coverage.Coverage object, data_file can be specified as None to prevent writing any data file at all. In previous versions, an explicit data_file=None argument would use the default of “.coverage”. Fixes issue 871.
The [run] note setting has been deprecated. Using it will result in a warning, and the note will not be written to the data file. The corresponding CoverageData methods have been removed.
The deprecated Reporter.file_reporters property has been removed.
The reporting methods used to permanently apply their arguments to the configuration of the Coverage object. Now they no longer do. The arguments affect the operation of the method, but do not persist.
New Features
Coverage.py can now record the context in which each line was executed. The contexts are stored in the data file and can be used to drill down into why a particular line was run. Static contexts let you specify a label for an entire coverage run, for example to separate coverage for different operating systems or versions of Python. Dynamic contexts can change during a single measurement run. This can be used to record the names of the tests that executed each line. See Measurement contexts for full information.
Coverage’s data storage has changed. In version 4.x, .coverage files were basically JSON. Now, they are SQLite databases. The database schema is documented (Coverage.py database schema), but might still be in flux.
Data can now be “reported” in JSON format, for programmatic use, as requested in issue 720. The new coverage json command writes raw and summarized data to a JSON file. Thanks, Matt Bachmann.
Configuration can now be read from TOML files. This requires installing coverage.py with the [toml] extra. The standard “pyproject.toml” file will be read automatically if no other configuration file is found, with settings in the [tool.coverage.] namespace. Thanks to Frazer McLean for implementation and persistence. Finishes issue 664.
The HTML and textual reports now have a --skip-empty option that skips files with no statements, notably __init__.py files. Thanks, Reya B.
You can specify the command line to run your program with the [run] command_line configuration setting, as requested in issue 695.
An experimental [run] relative_files setting tells coverage to store relative file names in the data file. This makes it easier to run tests in one (or many) environments, and then report in another. It has not had much real-world testing, so it may change in incompatible ways in the future.
Environment variable substitution in configuration files now supports two syntaxes for controlling the behavior of undefined variables: if VARNAME is not defined, ${VARNAME?} will raise an error, and ${VARNAME-default value} will use “default value”.
The location of the configuration file can now be specified with a COVERAGE_RCFILE environment variable, as requested in issue 650.
A new warning (already-imported) is issued if measurable files have already been imported before coverage.py started measurement. See Warnings for more information.
Error handling during reporting has changed slightly. All reporting methods now behave the same. The --ignore-errors option keeps errors from stopping the reporting, but files that couldn’t parse as Python will always be reported as warnings. As with other warnings, you can suppress them with the [run] disable_warnings configuration setting.
Added the classmethod Coverage.current() to get the latest started Coverage instance.
Bugs Fixed
The coverage run command has always adjusted the first entry in sys.path, to properly emulate how Python runs your program. Now this adjustment is skipped if sys.path[0] is already different than Python’s default. This fixes issue 715.
Python files run with -m now have __spec__ defined properly. This fixes issue 745 (about not being able to run unittest tests that spawn subprocesses), and issue 838, which described the problem directly.
Coverage will create directories as needed for the data file if they don’t exist, closing issue 721.
fail_under values more than 100 are reported as errors. Thanks to Mike Fiedler for closing issue 746.
The “missing” values in the text output are now sorted by line number, so that missing branches are reported near the other lines they affect. The values used to show all missing lines, and then all missing branches.
Coverage.py no longer fails if the user program deletes its current directory.
pytest 5.3.2:
Improvements
* Revert “A warning is now issued when assertions are made for None”.
The warning proved to be less useful than initially expected and had quite a few false positive cases.
Bug Fixes
* junitxml: Logs for failed test are now passed to junit report in case the test fails during call phase.
* The supporting files in the .pytest_cache directory are kept with --cache-clear, which only clears cached values now.
* Fix assertion rewriting for egg-based distributions and editable installs (pip install --editable).
4.53.3:
This patch fixes :func:`~hypothesis.strategies.from_type` with :class:`python:typing.Hashable` and :class:`python:typing.Sized`, which previously failed with an internal error on Python 3.7 or later.
4.53.2:
This release reorganises a number of the Hypothesis internal modules into a package structure. If you are only depending on the public API it should have no effect. If you are depending on the internal API (which you shouldn't be, and which we don't guarantee compatibility on) you may have to rename some imports.
4.53.1:
This release changes the size distribution of the number of steps run in stateful testing: It will now almost always run the maximum number of steps permitted.
4.53.0:
:ref:`statistics` now include the best score seen for each label, which can help avoid the threshold problem when the minimal example shrinks right down to the threshold of failure (:issue:`2180`).
4.52.0:
This release changes the stateful_step_count setting to raise an error if set to 0. This is a backwards compatible change because a value of 0 would never have worked and attempting to run it would have resulted in an internal assertion error.
4.51.1:
This release makes a small internal change to the distribution of test cases. It is unlikely to have much user visible impact.
4.51.0:
This release deprecates use of :func:`@example <hypothesis.example>`, :func:`@seed <hypothesis.seed>`, or :func:`@reproduce_failure <hypothesis.reproduce_failure>` without :func:`@given <hypothesis.given>`.
4.50.8:
This patch makes certain uses of Bundles more efficient in stateful testing (:issue:`2078`).
4.50.7:
This release refactors some of Hypothesis's internal interfaces for representing data generation. It should have no user visible effect.
4.50.6:
This patch removes some old debugging helpers in our Numpy extra which have not been needed since :issue:`1963` and :issue:`2245`.
4.50.5:
This patch fixes :issue:`2229`, where Numpy arrays of unsized strings would only ever have strings of size one due to an interaction between our generation logic and Numpy's allocation strategy.
4.50.4:
This patch fixes a rare internal error in strategies for a list of unique items sampled from a short non-unique sequence (:issue:`2247`). The bug was discovered via :pypi:`hypothesis-jsonschema`.
4.50.3:
This release improves the error message when :func:`@settings <hypothesis.settings>` tries to inherit settings from a parent argument that isn't a settings instance.
4.50.2:
This release improves Hypothesis's "Falsifying example" output, by breaking output across multiple lines where necessary, and by removing irrelevant information from the stateful testing output.
4.50.1:
This patch adds :pypi:`flake8-comprehensions` to our linter suite. There is no user-visible change - expect perhaps via some strange microbenchmarks - but certain parts of the code now have a clear and more consistent style.
4.50.0:
This release fixes some cases where we might previously have failed to run the validation logic for some strategies. As a result tests which would previously have been silently testing significantly less than they should may now start to raise InvalidArgument now that these errors are caught.
4.49.0:
This release significantly improves the data distribution in :doc:`rule based stateful testing <stateful>`, by using a technique called Swarm Testing (Groce, Alex, et al. "Swarm testing." Proceedings of the 2012 International Symposium on Software Testing and Analysis. ACM, 2012.) to select which rules are run in any given test case. This should allow it to find many issues that it would previously have missed.
This change is likely to be especially beneficial for stateful tests with large numbers of rules.
4.48.1:
This release adds some heuristics to test case generation that try to ensure that test cases generated early on will be relatively small.
This fixes a bug introduced in :ref:`Hypothesis 4.42.0 <v4.42.0>` which would cause occasional :obj:`~hypothesis.HealthCheck.too_slow` failures on some tests.
4.48.0:
This release revokes the deprecation of find, as we've now rebuilt it on top of @given, which means it has minimal maintenance burden and we're happy to support it.
4.47.5:
This release rebuilds find() on top of @given in order to have more code in common. It should have minimal user visible effect.
4.47.4:
This patch removes an internal compatibility shim that we no longer need.
4.47.3:
This patch fixes several typos in our docstrings and comments, with no change in behaviour.
4.47.2:
This release fixes an internal issue where Hypothesis would sometimes generate test cases that were above its intended maximum size. This would only have happened rarely and probably would not have caused major problems when it did.
Users of the new :ref:`targeted property-based testing <targeted-search>` might see minor impact (possibly slightly faster tests and slightly worse target scores), but only in the unlikely event that they were hitting this problem. Other users should not see any effect at all.
4.47.1:
This release removes some unused code from the core engine. There is no user-visible change.
4.47.0:
This release commonizes some code between running explicit examples and normal test execution. The main user visible impact of this is that deadlines are now enforced when running explicit examples.
4.46.1:
This patch ensures that a KeyboardInterrupt received during example generation is not treated as a mystery test failure but instead propagates to the top level, not recording the interrupted generation in the conjecture data tree.
4.46.0:
This release changes the behaviour of :func:`~hypothesis.strategies.floats` when excluding signed zeros - floats(max_value=0.0, exclude_max=True) can no longer generate -0.0 nor the much rarer floats(min_value=-0.0, exclude_min=True) generate +0.0.
The correct interaction between signed zeros and exclusive endpoints was unclear; we now enforce the invariant that :func:`~hypothesis.strategies.floats` will never generate a value equal to an excluded endpoint (:issue:`2201`).
If you prefer the old behaviour, you can pass floats(max_value=-0.0) or floats(min_value=0.0) which is exactly equivalent and has not changed. If you had two endpoints equal to zero, we recommend clarifying your tests by using :func:`~hypothesis.strategies.just` or :func:`~hypothesis.strategies.sampled_from` instead of :func:`~hypothesis.strategies.floats`.
4.45.1:
This patch improves the error message when invalid arguments are passed to :func:`~hypothesis.stateful.rule` or :func:`~hypothesis.stateful.invariant` (:issue:`2149`).
4.45.0:
This release supports :obj:`python:typing.Final` and :obj:`python:typing.TypedDict` in :func:`~hypothesis.strategies.from_type`.
4.44.5:
This patch disables our :pypi:`pytest` plugin when running on versions of :pypi:`pytest` before 4.3, the oldest our plugin supports. Note that at time of writing the Pytest developers only support 4.6 and later!
Hypothesis tests using :func:`@given() <hypothesis.given>` work on any test runner, but our integrations to e.g. avoid example database collisions when combined with @pytest.mark.parametrize eventually drop support for obsolete versions.
4.44.4:
This patch adds some internal comments and clarifications to the Hypothesis implementation. There is no user-visible change.
4.44.3:
This patch avoids importing test runners such as :pypi:`pytest`, :pypi:`unittest2`, or :pypi:`nose` solely to access their special "skip test" exception types - if the module is not in :obj:`sys.modules`, the exception can't be raised anyway.
This fixes a problem where importing an otherwise unused module could cause spurious errors due to import-time side effects (and possibly -Werror).
What's new in version 0.18.2:
=============================
This is a minor bug-fix release containing a number of fixes:
- Fix min/max functions with generators, and 'None' default
- Use BaseException in raise_()
- Fix builtins.round() for Decimals
- Fix raise_from() to prevent failures with immutable classes
- Make FixInput idempotent
- Fix type in newround
- Support mimetype guessing in urllib2 for Py3.8+
Python 3.8 is not yet officially supported.
What's new in version 0.18.1:
=============================
This is a minor bug-fix release containing a fix for raise_()
when passed an exception that's not an Exception (e.g. BaseException
subclasses)
What's new in version 0.18.0:
=============================
This is a major bug-fix and feature release, including:
- Fix collections.abc import for py38+
- Remove import for isnewbytes() function, reducing CPU cost significantly
- Fix bug with importing past.translation when importing past which breaks zipped python installations
- Fix an issue with copyreg import under Py3 that results in unexposed stdlib functionality
- Export and document types in future.utils
- Update behavior of newstr.__eq__() to match str.__eq__() as per reference docs
- Fix raising and the raising fixer to handle cases where the syntax is ambigious
- Allow "default" parameter in min() and max()
- Implement __hash__() in newstr
- Future proof some version checks to handle the fact that Py4 won't be a major breaking release
- Fix urllib.request imports for Python 3.8 compatibility
- Fix future import ordering
- Fixed bug in fix_division_safe fixture
- Do not globally destroy re.ASCII in PY3
- Fix a bug in email.Message.set_boundary()
- Implement format_map() in str
- Implement readinto() for socket.fp
As well as a number of corrections to a variety of documentation, and updates to
test infrastructure.
Release 0.14.1
Configure the loky workers' environment to mitigate oversubsription with nested multi-threaded code in the following case:
allow for a suitable number of threads for numba (NUMBA_NUM_THREADS);
enable Interprocess Communication for scheduler coordination when the nested code uses Threading Building Blocks (TBB) (ENABLE_IPC=1)
https://github.com/joblib/joblib/pull/951
Fix a regression where the loky backend was not reusing previously spawned workers. https://github.com/joblib/joblib/pull/968
Revert https://github.com/joblib/joblib/pull/847 to avoid using pkg_resources that introduced a performance regression under Windows: https://github.com/joblib/joblib/issues/965
v4.7.6:
Bug Fixes
- Fix handling of ``Sequence``, ``Mapping``, and ``namedtuple`` types in ``get`` so that their attributes aren't accessed during look-up.
v0.28.4
--------
This is a security release fixing the following issues:
- CVE-2019-1348: the fast-import stream command "feature
export-marks=path" allows writing to arbitrary file paths. As
libgit2 does not offer any interface for fast-import, it is not
susceptible to this vulnerability.
- CVE-2019-1349: by using NTFS 8.3 short names, backslashes or
alternate filesystreams, it is possible to cause submodules to
be written into pre-existing directories during a recursive
clone using git. As libgit2 rejects cloning into non-empty
directories by default, it is not susceptible to this
vulnerability.
- CVE-2019-1350: recursive clones may lead to arbitrary remote
code executing due to improper quoting of command line
arguments. As libgit2 uses libssh2, which does not require us
to perform command line parsing, it is not susceptible to this
vulnerability.
- CVE-2019-1351: Windows provides the ability to substitute
drive letters with arbitrary letters, including multi-byte
Unicode letters. To fix any potential issues arising from
interpreting such paths as relative paths, we have extended
detection of DOS drive prefixes to accomodate for such cases.
- CVE-2019-1352: by using NTFS-style alternative file streams for
the ".git" directory, it is possible to overwrite parts of the
repository. While this has been fixed in the past for Windows,
the same vulnerability may also exist on other systems that
write to NTFS filesystems. We now reject any paths starting
with ".git:" on all systems.
- CVE-2019-1353: by using NTFS-style 8.3 short names, it was
possible to write to the ".git" directory and thus overwrite
parts of the repository, leading to possible remote code
execution. While this problem was already fixed in the past for
Windows, other systems accessing NTFS filesystems are
vulnerable to this issue too. We now enable NTFS protecions by
default on all systems to fix this attack vector.
- CVE-2019-1354: on Windows, backslashes are not a valid part of
a filename but are instead interpreted as directory separators.
As other platforms allowed to use such paths, it was possible
to write such invalid entries into a Git repository and was
thus an attack vector to write into the ".git" dierctory. We
now reject any entries starting with ".git\" on all systems.
- CVE-2019-1387: it is possible to let a submodule's git
directory point into a sibling's submodule directory, which may
result in overwriting parts of the Git repository and thus lead
to arbitrary command execution. As libgit2 doesn't provide any
way to do submodule clones natively, it is not susceptible to
this vulnerability. Users of libgit2 that have implemented
recursive submodule clones manually are encouraged to review
their implementation for this vulnerability.
3.1.0:
Add plugins via entry points pytest_randomly.random_seeder to allow outside packages to register additional random generators to seed. This has added a dependency on the entrypoints package.
3.0.0:
Update Python support to 3.5-3.7, as 3.4 has reached its end of life.
Handle CollectErrors and ImportErrors during collection when accessing item.module.
samurai is a ninja-compatible build tool written in C99 with a focus on
simplicity, speed, and portability.
samurai implements the ninja build language through version 1.9.0 except
for MSVC dependency handling (`deps = msvc`). It uses the same format
for `.ninja_log` and `.ninja_deps` as ninja, currently version 5 and 4
respectively.
It is feature-complete and supports most of the same options as ninja.
samurai requires various POSIX.1-2008 interfaces.
At least with NetBSD (9.99.17) sh(1) the `streaming support for --stdin'
test of t0008-ignores.sh hangs. Force to use bash for tests and add it as a
test dependency. (This needs to be investigate further.)
The entire test suite is now runs but at least on NetBSD 9.99.17
t0301-credential-cache.sh test 29 `use user socket if user directory
exists' and test 30 `use user socket if user directory is a symlink to
a directory' fail.
Pyro 4.77
- dropped support for Python 3.4 (which has reached end-of-life status). Supported Python versions are now 2.7, and 3.5 or newer.
(the life cycle status of the Python versions can be seen here https://devguide.python.org/#status-of-python-branches)
- URIs now allow spaces in the location part. Useful for unix domain sockets.
0.19.14:
* Strip superfluous <> around email.
* Stop checking for ref validity client-side. Users can
still call check_wants manually.
* Switch over to Google-style docstrings.
* Add a ``dulwich.porcelain.active_branch`` function.
* Cleanup new directory if clone fails.
* Expand "~" in global exclude path.
v42.0.2
Fix support for easy_install's find-links option in setup.cfg.
Build dependencies (setup_requires and tests_require) now install transitive dependencies indicated by extras.