1.21.5:
BUG: Fix shadowed reference of `dtype` in type stub
BUG: Fix headers for universal2 builds
BUG: ``VOID_nonzero`` could sometimes mutate alignment flag
BUG: Do not use nonzero fastpath on unaligned arrays
BUG: Distutils patch to allow for 2 as a minor version (!)
BUG, SIMD: Fix 64-bit/8-bit integer division by a scalar
BUG, SIMD: Workaround broadcasting SIMD 64-bit integers on MSVC...
REL: Prepare for the NumPy 1.21.4 release.
TST: Fix a `Arrayterator` typing test failure
Release 3.4.5
=============
Changes
-------
- The deprecation warning when using :func:`rpy2.robjects.lib.grid.activate`
was missing (indirectly revealed through issue #804).
- The named argument `LINPACK` in :meth:`rpy2.robjects.vectors.Matrix.svd`
is no longer present in R.
Bugs fixed
----------
- SIGPIPE sent to a process running Python+rpy2 could result in a segfault.
This was caused by an incorrect setting of R signal handlers (issue #809).
Release 3.4.4
==============
Changes
-------
- `RRuntimeError` exceptions raised while evaluating R code
an R magic (ipython/jupyter) are now propagated (issue #792).
Release 3.4.3
=============
New features
------------
- :mod:`rpy2.robjects.lib.ggplot2` maps more functions in the
R package (issue #767)
- Utility function :func:`rpy2.robjects.lib.ggplot2.dict2rvec`
to convert a Python `Dict[str, str]` into an R named vector
of strings.
Bugs fixed
----------
- Calling mod:`rpy2.situation` to report on the environment no longer
stops with an uncaught exception when no R home can be determined
(issue #774)
- Converting pandas series with the older numpy types could result
in an error (issue #781)
- Numpy converter was not properly turing R integer or float arrays
into their numpy equivalent (issue #785)
- The HTML representation of R list without named element was
incorrect (issue #787)
Release 3.4.2
=============
Bugs fixed
----------
- Multithreading during the initialization of the embedded R no longer
triggers a fatal error (issue #729)
Changes
-------
- :mod:`pytest` is now an optional package. Optional sets of packages are
`numpy`, `pandas`, `test`, and `all` (all optional packages). They
can be specified during the installation. For example
`pip install rpy2[test]`. (issue #670)
Release 3.4.1
=============
Bugs fixed
----------
- The file `requirements.txt` was missing from the source distribution
on pypi (issue #764).
Release 3.4.0
=============
New Features
------------
- The mapping of the R C API now includes `Rf_isSymbol()`.
- Singleton class :class:`rpy2.rinterface_lib.sexp.RVersion` to report
the R version for the embedded R.
- :func:`rpy2.rinterface.local_context` to create a context manager
to evaluate R code within a local environment.
- The `staticmethod` :meth:`rpy2.robjects.vectors.DateVector.isrinstance`
will tell whether an R objects is an R `Date` array.
Changes
-------
- The dynamic generation of docstrings for R man pages
is now using R's `Rd2txt`.
- The :func:`rpy2.rinterface_lib._rinterface_capi._findVarInFrame`
is replaced by the function
:func:`rpy2.rinterface_lib._rinterface_capi._findvar_in_frame`
(see fix to issue #710).
- The functions :func:`rpy2.robjects.numpy.activate()` and
:func:`rpy2.robjects.pandas.activate()` are deprecated and will
be removed in rpy2-3.5.0.
- :func:`rpy2.rinterface_lib.embedded.setinitialized` was renamed to
:func:`rpy2.rinterface_lib.embedded._setinitialized` to indicate that
one should not use it.
- :meth:`rpy2.robjects.lib.ggplot2.vars` to map the R function
`ggplot2::vars` (issue #742).
- Report correctly the class of R matrix objects with R>=4.0: it is
now `('matrix', 'array')`. With R<4.0 `('matrix')` is still reported.
- The conversion of R/rpy2 objects to python objects using R class name mapping
is extended to more classes. The documentation about conversion covers the topic.
- If `R_NilValue` is not null when the initialization of the embedded R is attempted,
it is now assumed that R was initialized through other means (e.g., an other C library in the
same process) and the C-level initialization is be skipped.
- The conversion `rpy2py` is now working with any Python object inheriting
from `_rinterface_capi.SupportsSEXP`.
Bugs fixed
----------
- The C function `Rf_findVarInFrame()` in the R API can trigger
in an R-level error, and while this is rare, when it does
when embedded in Python it creates a segfault. Calls are
now wrapped in `R_ToplevelExec()` to limit the propagation
of R exceptions. This solved issue #710.
- More complete and correct mapping of R class names in
:func:`rpy2.rinterface_lib.sexp.rclass_get`.
- Initializing the embedded R caused the loss of ability to use Ctrl-C
to send SIGINT to a Python process (issue #723)
- :mod:`rpy2.sitation` is now working when the environment variable
`R_HOME` is set even though R is not in the `PATH` or in the Windows
registry (issue #744).
- Handling an R language objects could result in a segfault when its
R class was queried (issue #749).
- The conversion of R string arrays to `numpy` arrays was leaving
R's `NA` value as R NA objects. NAs in this type of arrays are now
turned to `None` in the resulting `numpy` array (issue #751).
- `rpy2.situation.get_rlib_path()` was returning an environment variable
with an invalid separator on Windows (mentioned in issue #754).
- R strings encoded with something else than 'utf-8' could result in
errors when trying to convert to Python strings (issue #754).
- Extracting documentation pages for R objects in packages could
generate spurious warnings when several "section" tags are present.
- R `Date` arrays/vectors were not wrapped into
:class:`rpy2.robjects.vectors.DateVector` objects but left as
R arrays of floats (which they are at the C level).
- The HTML representation of short R lists without names could
fail with an error.
- The :meth:`__repr__` of `robjects`-level objects was not displaying
the rpy2 class the R object is mapped to.
Release 3.3.6
=============
Bugs fixed
----------
- The unit tests for importing R packages with `lib_loc` were
broken (issue #720).
- Trying to create a memoryview for an R array with complex values
was failing with an attribute error.
- Fix the constructor of metaclass
:class:`rpy2.robjects.methods.RS4Auto_Type`.
- Fix call to end the embedded R in :class:`rpy2.robjects.R.__cleanup__`
(issue #734).
Release 3.3.5
=============
Bugs fixed
----------
- The callback handler to read input to R returned an
invalid result, leading to R asking for input
without ever acknowledging it received it.
Release 3.3.4
=============
Bugs fixed
----------
- Creating an R vector object from a Python object implementing
the buffer protocol could give incorrect results as C-level
incompatibilities could be missed (issue #702).
- :func:`rpy2.robjects.packages.importr` could fail when `lib_loc`
was specified (issue #705).
Release 3.3.3
=============
Bugs fixed
----------
- Fallback for when `str2lang` is missing (R < 3.6)
- Fix segfault with :meth:`PairListSexpVector.__getitem__` when
elements of the R pairlist have a `NILSXP` name (issue #700)
Release 3.3.2
=============
Bugs fixed
----------
- Initial fixes to have rpy2 running in ABI mode on Windows.
Few tests are not passing (many in callbacks for R's C API).
- System detection is now checking for FreeBSD.
Release 3.3.1
=============
Bugs fixed
-----------
- :meth:`rpy2.robjects.conversion.NameClassMap.update` can update
the mapping (:class:`dict`) or the default class.
Changes
-------
- Adding local converters was overwriting the base `NameClassMap`.
Release 3.3.0
=============
New features
------------
- Trying to import an R package that is not installed will now raise an
exception :class:`rpy2.robjects.packages.PackageNotInstalledError`.
- The R C API functions `void SET_FRAME(SEXP x, SEXP v)`,
`void SET_ENCLOS(SEXP x, SEXP v)` and `void SET_HASHTAB(SEXP x, SEXP v)`
are now accessible through rpy2.
- The module :mod:`rpy2.situation` can now return `LD_LIBRARY_PATH`
information about R. For example with
`python -m rpy2.situation LD_LIBRARY_PATH`
- :meth:`rpy2.robjects.methods.RS4.extends` lists the class names in the
inheritance line.
- The conversion of R objects to Python allows much more flexibility
and better allow the use of independent code converting different classes.
This is currently limited to R objects that are lists, environments, or
S4 objects. The Sphinx documentation contains an example. While this is
still work in progress this should already address concerns
at the origin of issue #539 about S4 classes.
- :class:`rpy2.robjects.language.LangVector` to map R language objects at
the `robjects` level.
- :class:`rpy2.robjects.vectors.PairlistVector` to map R pairlist objects at
the `robjects` level.
- An alternative function to display the output of R cells can be
specified using `-d` or `--display` in the magic arguments
(in :mod:`rpy2.ipython.rmagic`).
- Python classes representing underlying R objects no longer have to
exclusively rely on inheritance from :mod:`rpy2.rinterface` objects`.
An abstract class :class:`rpy2.rinterface_lib.sexp.SupportsSEXP` is added
to identify objects supporting a `__sexp__` protocol, and that abstract
class can also be used with type hints.
- :func:`rpy2.robjects.functions.wrap_r_functions` can create Python functions
with matching signature from R functions
- :func:`rpy2.robjects.functions.wrap_r_functions` can create Python functions
with matching signature from R functions.
- New class :class:`rpy2.rinterface_lib._rinterface_capi.UninitializedRCapsule`
to allow the instanciation of "placeholder" rpy2 objects before the
embedded R is initialized. This facilitate the use of static typing checks
such as mypy, mocking for tests that do not involve the execution of R
code, and allow cleaner implementations of module-level globals
that are R objects.
- New class :class:`rpy2.robjects.vectors.DateVector` to represent R dates.
- :class:`pandas.Series` containing date objects can now be converted to R
`Date` vectors.
Changes
-------
- When calling R C-API's `R_ParseVector` and a error occurs, the
exception message now contains the parsing status.
- :mod:`rpy2.rinterface_lib.embedded` has a module-level "constant"
`DEFAULT_C_STACK_LIMIT` used when initializing the embedded R.
- When creating a :mod:`rpy2.robjects.vectors.DataFrame` from (name, vector)
pairs, the names are no longer transformed to syntactically valid R
symbols (issue #660).
- The value `nan` in :mod:`pandas` Series with strings is now converted
to R NA (issue #668).
- Initial support for :const:`pandas.NA` (still experimental in pandas
at the time of writing, and rpy2 support is limited to arrays of strings).
- :mod:`pandas` series of dtype :class:`pandas.StringDType`, experimental in pandas 1.0,
are now supported by the converted (in the pandas-to-R direction) (issue #669)
- Version checking for the mapping of R packages in :mod:`rpy2.robjects.lib` is
now more permissive (check that version prefixes are matching).
Bugs fixed
-----------
- Building ABI only mode could require an API build environment (and fail
with an error when not present).
- SVG output for the R magic were incorrectly bytes objects.
- :meth:`rpy2.rinterface_lib.sexp.StrSexpVector.__getitem__` was returning the string
`'NA'` when an R NA value. Not it returns `rpy2.rinterface_lib.na_values.NA_Character`.
Release 3.2.7
=============
Bugs fixed
----------
- An f-string in `_rinterface_cffi_build.py` prevented installation
on Python 3.5 (issue #654).
Release 3.2.6
=============
Bugs fixed
----------
- The conversion of date/time object with specified timezones
was wrong when different than the local time zone (issue #634)
- Iterating over :mod:`rpy2.situation.iter_info()` could result
in a error because of a typo in the code.
Changes
-------
- :mod:`pandas` 1.0.0 breaks the conversion layer. A warning
is now emitted whenever trying to use `pandas` >= 1.0.
Release 3.2.5
=============
Bugs fixed
----------
- Latest release for R package `rlang` broke import through `importr()`.
A workaround for :mod:`rpy2.robjects.lib.ggplot2` is to rename the
offending R object (issue #631).
Changes
-------
- f-string requiring Python >= 3.6 removed.
Release 3.2.4
=============
Bugs fixed
----------
- An incomplete backport of the bug fixed in 3.2.3 broke the ABI mode.
Release 3.2.3
=============
Bugs fixed
-----------
- Error when parsing strings as R codes could result in a segfault.
Release 3.2.2
=============
Bugs fixed
----------
- Python format error when trying to report that the system is not reported
on Windows (issue #597).
- The setup script would error on build if R is not installed. It is now
printing an error message.
Release 3.2.1
=============
Bugs fixed
----------
- The wrapper for the R package `dbplyr` could not import the underlying
package (refactoring elsewhere was not propagated there).
- Creating R objects called `names` `globalenv` caused the method
:meth:`Sexp.names` to fail (issue #587).
- Whenever the pandas conversion was activated :class:`FloatSexpVector` instances
with the R class `POSIXct` attached where not corrected mapped back to pandas
datetime arrays. (issue #594).
- Fix installation when an installation when a prefix without write access is used
(issue #588).
Release 3.2.0
=============
New features
------------
- rpy2 can built and used with :mod:`cffi`'s ABI or API modes (releases 3.0.x and
3.1.x were using the ABI mode exclusively). At the time of writing the default
is still the ABI mode but the choice can be controlled through the environment variable
`RPY2_CFFI_MODE`. If set, possible values are `ABI` (default if the environment
variable is not set), `API`, or `BOTH`. When the latter, both `API` and `ABI`
modes are built, and the choice of which one to use can be made at run time.
Changes
-------
- The "consoleread" callback (reading input to the R console) is now assuming UTF-8
(was previously assuming ASCII) and is no longer trying to add a "new line" character
at the end of the input.
- Querying an R environment with an invalid key will generate a :class:`TypeError`
or a :class:`ValueError` depending on the issue (rather than always :class:`ValueError`
before.
Bugs fixed
----------
- `setup.py` is now again compatible with Python2 (issue #580).
- Unit tests were failing if numpy is not installed.
- :mod:`rpy2.situation` is no longer breaking when R is not the in path and
there is no environment variable `R_HOME`.
- Build script for the cffi interface is now using the environment
variable `R_HOME` whenever defined (rather that always infer it from the
R in the PATH).
- Converting R strings back to Python was incorrectly using `Latin1` while `UTF-8` was
intended (issue #537).
Release 3.1.0
=============
New features
------------
- Python matrix multiplication (`__matmul__` / `@`) added to
R :class:`Matrix` objects.
- An :class:`threading.RLock` is added to :mod:`rpy2.rinterface_lib.openrlib` and is
used by the context manager :func:`rpy2.rinterface_lib.memorymanagement.rmemory`
to ensure that protect/unprotect cycles cannot be broken by thread switching, at least
as long as the context manager is used to handle such cycles (see issue #571).
- The documentation covers the use of notebooks (mainly Jupyter/Jupyterlab).
- The PNG output in Jupyter notebooks R cells can now specify an argument `--type`
(passed as the named argument `type` in the R function `png`).
For example on some Linux systems and R installations, the type `cairo`
can fix issues when alpha transparency is used.
Changes
-------
- Added callbacks for `ptr_R_Busy()` and `ptr_R_ProcessEvents()`.
- `rstart` now an objects in :mod:`rpy2.rinterface_lib.embedded`
(set to `None` until R is initialized).
- Unit tests are included in a subpackage :mod:`rpy2.tests` as was the
case before release 3.0.0 (issue #528).
- Experimental initialization for Microsoft Windows.
- :mod:`rpy2.situation` is now also reporting the rpy2 version.
- :func:`rpy2.robjecs.package_utils.default_symbol_check_after` was
renamed :func:`rpy2.robjecs.package_utils.default_symbol_resolve`.
The named parameters `default_symbol_check_after` present in few methods
in :mod:`rpy2.robjects.packages` and :mod:`rpy2.robjects.functions` were
modified to keep a consistent naming.
- Trying to instantiate an :class:`rpy2.rlike.container.OrdDict` with a
a :class:`dict` will result in a :class:`TypeError` rather than a
:class:`ValueError`.
- Methods of :class:`rpy2.rlike.container.OrdDict` now raises a
:class:`NotImplementedError` when not implemented.
- The creation of R vectors from Python sequences is now relying on a method
:meth:`_populate_r_vector` that allows vectorized implementation to
to improve speed.
- Continuous integration tests run against Python 3.6, 3.7, and 3.8. It is
no longer checked against Python 3.5.
Bugs fixed
----------
- `aes` in :mod:`rpy2.robjects.lib.ggplot2` had stopped working with the
R package ggplot2 reaching version 3.2.0. (issue #562).
- Better handling of recent :mod:`pandas` arrays with missing values
(related to issue #544).
- The mapping of the R operator `%in%` reachable through the attribute `ro`
of R vectors was always returning `True`. It is now working properly.
- R POSIXct vectors with `NA` dates were triggering an error when converted
in a data frame converted to :mod:`pandas` (issue #561).
Release 3.0.5
=============
Bugs fixed
----------
- No longer allow installation if Python 3 but < 3.5.
- Fixed error `undefined symbol: DATAPTR` if R < 3.5 (issue #565).
Release 3.0.4
=============
Bugs fixed
----------
- Fixed conversion of `pandas` :class:`Series` of dtype `pandas.Int32Dtype`,
or `pandas.Int64Dtype` (issue #544).
Release 3.0.3
=============
Bugs fixed
----------
- Fixed the evaluation of R code using the "R magic" was delaying all
output to the end of the execution of that code, independently of
whether the attribute `cache_display_data` was `True` or `False`
(issue #543).
- Fixed conversion of :class:`pandas.Series` of `dtype` "object" when
all items are either all of the same type or are :obj:`None` (issue #540).
Release 3.0.2
=============
Bugs fixed
----------
- Failing to import `pandas` or `numpy` when loading the "R magic" extension
for jupyter/ipython was hiding the cause of the error in the `ImportError`
exception.
- Fallback when an R `POSIXct` vector does not had an attribute `"tzone"`
(issue #533).
- Callback for console reset was not set during R initialization.
- Fixed rternalized function returning rpy2 objects (issue #538).
- `--vanilla` is no longer among the default options used to initialize R
(issue #534).
Release 3.0.1
=============
Bugs fixed
----------
- Script to install R packages for docker image never made it to version
control.
- Conversion of R arrays/matrices into numpy object trigged a segfault
during garbage collection (issue #524).
Release 3.0.0
=============
New features
------------
- rpy2 can be installed without a development environment.
- Unit tests are now relying on the Python module `pytest`.
- :attr:`rpy2.rinterface.NA_Integer` is now only defined when the embedded R
is initialized.
Changes
-------
- complete rewrite of :mod:`rpy2.rinterface`.
:mod:`cffi` is now used to interface with the R compiled shared library.
This allows ABI calls and removes the need to compile binaries. However, if
compilation is available (when installing or preparing pre-compiled binaries)
faster implementations of performance bottlenecks will be available.
- calling :func:`rpy2.rinterface.endr` multiple times is now only ending R
the first time it is called (note: an ended R cannot successfully be
re-initialized).
- The conversion system in the mod:`rpy2.robjects.conversion` now has only
two conversions `py2rpy` and rpy2py`. `py2rpy` tries to convert any
Python object into an object rpy2 can use with R and `rpy2py` tries
to convert any rpy2 object into a either a non-rpy2 Python object or
a mod:`rpy2.robjects` level object.
- The method `get` for R environments is now called `find()` to avoid
confusion with the method of the same name in Python (:meth:`dict.get`).
- :class:`rpy2.robjects.vectors.Vector`, :class:`rpy2.robjects.vectors.Matrix`,
and :class:`rpy2.robjects.vectors.Array` can no longer be used to create
R arrays of unspecified type. New type-specific classes (for example for
vectors :class:`rpy2.robjects.vectors.IntVector`,
:class:`rpy2.robjects.vectors.BoolVector`,
:class:`rpy2.robjects.vectors.FloatVector`,
:class:`rpy2.robjects.vectors.ComplexVector`, or
:class:`rpy2.robjects.vectors.StrVector`) should be used instead.
- mod:`rpy2.rpy_classic`, an implementation of the `rpy` interface using
:mod:`rpy2.rinterface` is no longer available.
- :class:`rpy2.robjects.ParsedCode` and
:class:`rpy2.robjects.SourceCode` are moved to
:class:`rpy2.robjects.packages.ParsedCode` and
:class:`rpy2.robjects.packages.SourceCode`.
Bugs fixed
----------
- Row names in R data frames were lost when converting to pandas data frames
(issue #484).
Known issues
------------
- Mismatch between R's POSIXlt `wday` and Python time struct_time's `tm_wday`
(issue #523).
Release 2.9.6
=============
Bugs fixed
----------
- Latest release of :mod:`pandas` deprecated :meth:`DataFrame.from_items`.
(issue #514).
- Latest release of :mod:`pandas` requires categories to be a list
(not an other sequence).
Known issues
------------
- The numpy buffer implemented by R arrays is broken for complex numbers
Release 2.9.5
=============
Bugs fixed
----------
- Missing values in pandas :class:`Category` series were creating
invalid R factors when converted (issue #493).
Release 2.9.4
=============
Bugs fixed
----------
- Fallback for failure to import numpy or pandas is now dissociated from
failure to import :mod:`numpy2ri` or :mod:`pandas2ri` (issue #463).
- :func:`repr` for R POSIX date/time vectors is now showing a string
representation of the date/time rather than the timestamp as a float
(issue #467).
- The HTML representation of R data frame (the default representation in the
Jupyter notebook) was displaying an inconsistent number of rows
(found while workin on issue #466).
- Handle time zones in timezones in Pandas when converting to R data frames
(issue #454).
- When exiting the Python process, the R cleanup is now explicitly request
to happen before Python's exit. This is preventing possible segfaults
the process is terminating (issue #471).
- dplyr method `ungroup()` was missing from
:class:`rpy2.robjects.lib.dplyr.DataFrame` (issue #473).
Release 2.9.3
=============
Bugs fixed
----------
- Delegate finding where is local time zone file to either a user-specified
module-level variable `default_timezone` or to the third-party
module :mod:`tzlocal` (issue #448).
Release 2.9.2
=============
Changes
-------
- The pandas converter is converting :class:`pandas.Series` of `dtype` `"O"`
to :class:`rpy2.robjects.vectors.StrVector` objects, issueing a warning
about it (See issue #421).
- The conversion of pandas data frame is now working with columns rather
than rows (introduce in bug fix for issue #442 below) and this is expected
to result in more efficient conversions.
Bugs fixed
----------
- Allow floats in figure sizes for R magic (Pull request #63)
- Fixed pickling unpickling of robjects-level instances,
regression introduced in fix for issue #432 with release 2.9.1 (issue #443).
- Fixed broken unit test for columns of `dtype` `"O"` in `pandas` data frames.
- Fixed incorrect conversion of R factors in data frames to columns of
integers in pandas data frame (issue #442).
version 1.5.8
* Fix Enum bug (issue 1128): the enum_dict member of an EnumType read from a file
contains invalid values when the enum is large enough (more than 127 or 255
members).
* Binary wheels for aarch64 and python 3.10.
version 1.5.7
* don't try to mask vlens with default _FillValue, since vlens don't have a default _FillValue.
This gets rid of numpy DeprecationWarning (issue 1099).
* update docs to reflect the fact that a variable must be in collective mode before writing
compressed data to it in parallel. Added a test for this (examples/mpi_example_compressed.py).
* Fix OverflowError when dimension sizes become greater than 2**32-1 elements on Windows (Issue 1112).
* Don't return masked arrays for vlens (only for primitive and enum types
Summary of bugs fixed for version 6.4.0 (2021-10-30)
----------------------------------------------------
Improvements and fixes
- Reduce memory usage in BISTs for `copyobj`, `hgsave`.
- `hgsave.m`, `copyobj.m`: Use `'qt'` graphics toolkit in BISTs.
- `main.cc`: Use `getopt` to parse command line arguments.
- `main.cc`: Remove invalid case.
- Disable `getopt` error reporting in wrapper program.
- `interp1.m`: Don't interpret later numeric input as `xi`.
- `pkg`: Improve similar package name suggestion.
- Store parent name in function object when caching parents in scope.
- Avoid internal error and segfault with `eval` and scripts.
- `rmpath`: Prevent removing the current directory from the load path.
GUI
- Fix missing interpreter event in `octave-scintilla`.
- Fix opening a file in a custom editor.
Documentation
- Improve docstring for `disable_diagonal_matrix`, `disable_diagonal_matrix`,
and `disable_range`.
- `cbrt`: Clarify that function errors for non-real input.
- `dsearchn.m`: Added optional distance output description.
- Add Hungarian translation for project description files.
- Document fsolve output "info" -2.
Build system
- Correct error message for incompatible CXSparse.
Summary of bugs fixed for version 6.3.0 (2021-07-11)
----------------------------------------------------
Important notice
- This bug fix release breaks ABI compatiblity with Octave 6.2.0. Re-build
binaries (like .oct or .mex files) when updating to this version.
Improvements and fixes
- `ls-hdf5.cc`: Avoid throwing inside HDF5 function.
- `ls-hdf5.cc`: Handle non-zero terminated type strings.
- Fix occasional segfault in `symbfact`.
- `fsolve.m`: Fix undefined output error when using `Output` function.
- Fix compilation error with `iconv_t` on Solaris.
- build: Check for `stropts.h`.
- Avoid ambiguous call to `pow`.
- Fix context link when creating handle to nested function.
- `print.m`: Warn when figure is too large to be printed to output page.
- Defer clearing function vars until stack frame is deleted.
- Avoid memory leaks when returning handles to nested functions.
- Hold references to closure frames in anon functions if needed.
- `eigs`: Prevent possible segmentation fault at exit.
- Issue warning when gnuplot graphics toolkit is initialized.
- mpoles.m: Fix detection of pole multiplicity.
- Perform shutdown actions in interpreter destructor.
- build: Make relocation of dependencies with Octave optional.
- `qz.cc`: Return correct number of eigenvalues.
- `qz.cc`: Let test pass with LAPACK 3.9.1 and earlier versions.
- `pkg.m`: Use default prefixes unless otherwise set previously.
- `betaincinv.m`: Correctly handle small inputs.
- `betaincinv.m`: Correctly handle inputs very close to 1.0.
- `unistd-wrappers.c`: Allocate sufficient memory for `new_argv`.
- Mark system functions correctly if `OCTAVE_HOME` is non-canonical.
- Mark compiled system functions correctly if `OCTAVE_HOME` is non-canonical.
- Fix error if test suite is run before Octave is installed.
- `lo-array-errwarn.cc`: Include `<limits>`.
- Use `std::size_t` and `std::ptrdiff_t` in C++ code.
- Use `std::size_t` in more instances.
- Return proper number of stack frames for `dbstack (N)` call.
- Avoid ambiguous match of overloaded function.
- `lscov.m`: Relax BIST tolerance to pass with OpenBLAS.
- `print`: Fix error when `"px"` word is present in a figure.
- `logm.m`: Fix check for real negative values in complex vector.
- build: Set necessary flags to allow execution on Windows Vista.
- Declare base_parser destructor virtual.
- `hist.m`: Improve handling and docstring for third parameter "norm".
- `logm.m`: Allow tolerance in check for real negative values in complex vector.
- `expm.m`, `logm.m`: Use function `isdiag` to detect if input is a diagonal matrix.
- tests: Relax tolerance for some tests on macOS.
- `logspace.m`: Mark tests as known to fail on macOS.
- `hist.m`: Use deterministic test.
- `rgb2ind.m`: Reduce memory usage and eliminate randomness in test.
- `logm.m`: Allow larger tolerance for test on macOS.
- build: Use correct path to `octave` binary in build tree on macOS.
- build: Fix typo in folder to libraries when building `.oct` or `.mex` files.
- build: Set DL_LDFLAGS in the build rules for .oct or .mex files.
- `rgb2ind.m`: Suppress output in test.
- Improve documentation for `log2` function.
- `ind2sub`: Fix typo in "see also" section of docstring.
- `mrdivide`, `mldivide`: Document that functions might return minimum norm solutions.
- Fix scoping issue for handles to sibling nested functions.
- `ls-mat5.cc`: Avoid integer overflow in calculation of buffer size for zlib.
- Move top-level REPL from interpreter to evaluator.
- Avoid crash with `dbquit` when executing command in terminal from GUI.
GUI
- Fix calling external editor.
- Fix missing file suffix .m when saving a new script.
- Do not run files that are not saved as Octave files.
- Fix confirm overwrite for native editor file "save as" dialogs.
- Fix crash when GUI tries to restore missing previous Octave dir.
- Fix restoring the horizontal position of docked GUI widgets.
- Prevent floating widgets from re-opening after restart.
- Avoid crash in GUI for `rmdir("")`.
- Fix EOL mode when saving files under new names.
- Fix auto indentation of switch-structure in GUI editor.
- Avoid crash when closing GUI with open editor tabs.
- `octave-qscintilla.cc` (`contextmenu_run`): Fix keyboard command handling.
Documentation
- Improve Differential Equations chapter and example for lsode.
- Clarify usage of "Depends" keyword in package `DESCRIPTION` file.
- Add note that wildcard patterns for `save` are glob patterns.
- Change example for Delaunay triangulation to match the generating code.
- Document single precision issues with OpenGL graphics toolkits.
- Minor changes to documentation of single precision issues with OpenGL.
- Expand on documentation for command syntax.
- `isprop.m`: Document that function only works on graphics objects in Octave 6.X.
- Explain how to write dual-purpose executable scripts and Octave functions.
- Update keyword docstrings.
- Use Texinfo commands to improve `transpose()` docstring rendering.
- `betainc.m`, `betaincinv.m`: Correct non-TeX definition of beta incomplete integral.
- Grammarcheck documentation ahead of 6.3 release.
- Spellcheck documentation ahead of 6.3 release.
2.8.3 (2021-12-13)
------------------
- Fix more use of 'python' where 'python3' is intended.
2.8.2 (2021-12-06)
------------------
- Update documentation to reflect new 2.8 features.
- Fix array compression for non-native byte order
- Fix use of 'python' where 'python3' is intended.
- Fix schema URI resolving when the URI prefix is also
claimed by a legacy extension.
- Remove 'name' and 'version' attributes from NDArrayType
instances.
2.8.1 (2021-06-09)
------------------
- Fix bug in block manager when a new block is added to an existing
file without a block index.
2.8.0 (2021-05-12)
------------------
- Add ``yaml_tag_handles`` property to allow definition of custom yaml
``%TAG`` handles in the asdf file header.
- Add new resource mapping API for extending asdf with additional
schemas.
- Add global configuration mechanism.
- Drop support for automatic serialization of subclass
attributes.
- Support asdf:// as a URI scheme.
- Include only extensions used during serialization in
a file's metadata.
- Drop support for Python 3.5.
- Add new extension API to support versioned extensions.
- Permit wildcard in tag validator URIs.
- Implement support for ASDF Standard 1.6.0. This version of
the standard limits mapping keys to string, integer, or
boolean.
- Stop removing schema defaults for all ASDF Standard versions,
and automatically fill defaults only for versions <= 1.5.0.
- Stop removing keys with ``None`` values from the tree on write. This
fixes a long-standing issue where the tree structure is not preserved
on write, but will break ``ExtensionType`` subclasses that depend on
this behavior. Extension developers will need to modify their
``to_tree`` methods to check for ``None`` before adding a key to
the tree (or modify the schema to permit nulls, if that is the
intention).
- Deprecated the ``auto_inline`` argument to ``AsdfFile.write_to`` and
``AsdfFile.update`` and added ``AsdfConfig.array_inline_threshold``.
- Add ``edit`` subcommand to asdftool for efficient editing of
the YAML portion of an ASDF file.
- Increase limit on integer literals to signed 64-bit.
- Remove the ``asdf.test`` method and ``asdf.__githash__`` attribute.
- Add support for custom compression via extensions.
- Remove unnecessary ``.tree`` from search result paths.
- Drop support for bugs in older operating systems and Python versions.
- Add argument to ``asdftool diff`` that ignores tree nodes that match
a JMESPath expression.
- Fix behavior of ``exception`` argument to ``GenericFile.seek_until``.
- Fix issues in file type detection to allow non-seekable input and
filenames without recognizable extensions. Remove the ``asdf.asdf.is_asdf_file``
function.
- Update ``asdftool extensions`` and ``asdftool tags`` to incorporate
the new extension API.
- Add ``AsdfSearchResult.replace`` method for assigning new values to
search results.
- Search for block index starting from end of file. Fixes rare bug when
a data block contains a block index.
- Update asdf-standard to 1.6.0 tag.
2.7.5 (2021-06-09)
------------------
- Fix bug in ``asdf.schema.check_schema`` causing relative references in
metaschemas to be resolved incorrectly.
- Fix bug in block manager when a new block is added to an existing
file without a block index.
2.7.4 (2021-04-30)
------------------
- Fix pytest plugin failure under older versions of pytest.
- Copy array views when the base array is non-contiguous.
- Prohibit views over FITS arrays that change dtype.
- Add support for HTTPS URLs and following redirects.
- Prevent astropy warnings in tests when opening known bad files.
What's new in 1.3.5 (December 12, 2021)
---------------------------------------
Fixed regressions
~~~~~~~~~~~~~~~~~
- Fixed regression in :meth:`Series.equals` when comparing floats with dtype object to None (:issue:`44190`)
- Fixed regression in :func:`merge_asof` raising error when array was supplied as join key (:issue:`42844`)
- Fixed regression when resampling :class:`DataFrame` with :class:`DateTimeIndex` with empty groups and ``uint8``, ``uint16`` or ``uint32`` columns incorrectly raising ``RuntimeError`` (:issue:`43329`)
- Fixed regression in creating a :class:`DataFrame` from a timezone-aware :class:`Timestamp` scalar near a Daylight Savings Time transition (:issue:`42505`)
- Fixed performance regression in :func:`read_csv` (:issue:`44106`)
- Fixed regression in :meth:`Series.duplicated` and :meth:`Series.drop_duplicates` when Series has :class:`Categorical` dtype with boolean categories (:issue:`44351`)
- Fixed regression in :meth:`.GroupBy.sum` with ``timedelta64[ns]`` dtype containing ``NaT`` failing to treat that value as NA (:issue:`42659`)
- Fixed regression in :meth:`.RollingGroupby.cov` and :meth:`.RollingGroupby.corr` when ``other`` had the same shape as each group would incorrectly return superfluous groups in the result (:issue:`42915`)
v0.20.2
This is a bugfix release to resolve (:issue:`3391`, :issue:`5715`). It also
includes performance improvements in unstacking to a ``sparse`` array and a
number of documentation improvements.
Breaking changes
- Use complex nan when interpolating complex values out of bounds by default (instead of real nan) (:pull:`6019`).
Performance
- Significantly faster unstacking to a ``sparse`` array. :pull:`5577`
Bug fixes
- :py:func:`xr.map_blocks` and :py:func:`xr.corr` now work when dask is not installed (:issue:`3391`, :issue:`5715`, :pull:`5731`).
- Fix plot.line crash for data of shape ``(1, N)`` in _title_for_slice on format_item (:pull:`5948`).
- Fix a regression in the removal of duplicate backend entrypoints (:issue:`5944`, :pull:`5959`)
Documentation
- Better examples in docstrings for groupby and resampling reductions (:pull:`5871`).
Internal Changes
- Use ``importlib`` to replace functionality of ``pkg_resources`` in
backend plugins tests. (:pull:`5959`).
Kernels
volk_32f_stddev_and_mean_32f_x2: implemented Young and Cramer's algorithm
volk_32fc_accumulator_s32fc: Add new kernel
volk_16ic_x2_dot_prod_16ic_u_avx2: Fix Typo, was _axv2.
Remove _mm256_zeroupper() calls
Enforce consistent function prototypes
32fc_index_max: Improve speed of AVX2 version
conv_k7_r2: Disable broken AVX2 code
improve volk_8i_s32f_convert_32f for ARM NEON
Calculate cos in AVX512F
Calculate sin using AVX512F
Build
Fix python version detection
cmake: Check that 'distutils' is available
c11: Remove pre-C11 preprocessor instructions
2021-12-04:
Update version number.
2021-10-04:
Consistently use semicolons after DOUBLE_CONVERSION_ASSERT.
2021-07-16:
Fix spelling.
2021-05-19:
Loongarch is a RISC-style command system architecture.
Add support for loongarch architecture.
SciPy 1.7.3 is a bug-fix release that provides binary wheels
for MacOS arm64 with Python 3.8, 3.9, and 3.10. The MacOS arm64 wheels
are only available for MacOS version 12.0 and greater, as explained
in Issue 14688, linked below.
Issues closed for 1.7.3
-----------------------
* Segmentation fault on import of scipy.integrate on Apple M1 ARM...
* BUG: ARPACK's eigsh & OpenBLAS from Apple Silicon M1 (arm64)...
* four CI failures on pre-release job
* Remaining test failures for macOS arm64 wheel
* BUG: Segmentation fault caused by scipy.stats.qmc.qmc.update_discrepancy
Pull requests for 1.7.3
-----------------------
* BLD: update pyproject.toml for Python 3.10 changes
* BUG: out of bounds indexing in stats.qmc.update_discrepancy
* MAINT: skip a few failing tests in \`1.7.x\` for macOS arm64
GLPK 5.0
The copyright was transferred to the Free Software Foundation.
To fix some licensing problems the routines in the following
files were disabled by replacing with dummy ones that print an
error message:
src/api/gridgen.c
src/api/netgen.c
src/api/rmfgen.c
src/misc/qmd.c
src/misc/relax4.c
Note that this change does not affect the main faunctionality
of the package.
Some minor bugs were fixed.
v0.20.1 (5 November 2021)
-------------------------
This is a bugfix release to fix :issue:`5930`.
Bug fixes
~~~~~~~~~
- Fix a regression in the detection of the backend entrypoints (:issue:`5930`, :pull:`5931`)
By `Justus Magin <https://github.com/keewis>`_.
Documentation
~~~~~~~~~~~~~
- Significant improvements to :ref:`api`. By `Deepak Cherian <https://github.com/dcherian>`_.
.. _whats-new.0.20.0:
v0.20.0 (1 November 2021)
-------------------------
This release brings improved support for pint arrays, methods for weighted standard deviation, variance,
and sum of squares, the option to disable the use of the bottleneck library, significantly improved performance of
unstack, as well as many bugfixes and internal changes.
Many thanks to the 40 contributors to this release!:
Aaron Spring, Akio Taniguchi, Alan D. Snow, arfy slowy, Benoit Bovy, Christian Jauvin, crusaderky, Deepak Cherian,
Giacomo Caria, Illviljan, James Bourbeau, Joe Hamman, Joseph K Aicher, Julien Herzen, Kai Mühlbauer,
keewis, lusewell, Martin K. Scherer, Mathias Hauser, Max Grover, Maxime Liquet, Maximilian Roos, Mike Taves, Nathan Lis,
pmav99, Pushkar Kopparla, Ray Bell, Rio McMahon, Scott Staniewicz, Spencer Clark, Stefan Bender, Taher Chegini,
Thomas Nicholas, Tomas Chor, Tom Augspurger, Victor Negîrneac, Zachary Blackwood, Zachary Moon, and Zeb Nicholls.
New Features
~~~~~~~~~~~~
- Add ``std``, ``var``, ``sum_of_squares`` to :py:class:`~core.weighted.DatasetWeighted` and :py:class:`~core.weighted.DataArrayWeighted`.
By `Christian Jauvin <https://github.com/cjauvin>`_.
- Added a :py:func:`get_options` method to xarray's root namespace (:issue:`5698`, :pull:`5716`)
By `Pushkar Kopparla <https://github.com/pkopparla>`_.
- Xarray now does a better job rendering variable names that are long LaTeX sequences when plotting (:issue:`5681`, :pull:`5682`).
By `Tomas Chor <https://github.com/tomchor>`_.
- Add an option (``"use_bottleneck"``) to disable the use of ``bottleneck`` using :py:func:`set_options` (:pull:`5560`)
By `Justus Magin <https://github.com/keewis>`_.
- Added ``**kwargs`` argument to :py:meth:`open_rasterio` to access overviews (:issue:`3269`).
By `Pushkar Kopparla <https://github.com/pkopparla>`_.
- Added ``storage_options`` argument to :py:meth:`to_zarr` (:issue:`5601`, :pull:`5615`).
By `Ray Bell <https://github.com/raybellwaves>`_, `Zachary Blackwood <https://github.com/blackary>`_ and
`Nathan Lis <https://github.com/wxman22>`_.
- Histogram plots are set with a title displaying the scalar coords if any, similarly to the other plots (:issue:`5791`, :pull:`5792`).
By `Maxime Liquet <https://github.com/maximlt>`_.
- Slice plots display the coords units in the same way as x/y/colorbar labels (:pull:`5847`).
By `Victor Negîrneac <https://github.com/caenrigen>`_.
- Added a new :py:attr:`Dataset.chunksizes`, :py:attr:`DataArray.chunksizes`, and :py:attr:`Variable.chunksizes`
property, which will always return a mapping from dimension names to chunking pattern along that dimension,
regardless of whether the object is a Dataset, DataArray, or Variable. (:issue:`5846`, :pull:`5900`)
By `Tom Nicholas <https://github.com/TomNicholas>`_.
Breaking changes
~~~~~~~~~~~~~~~~
- The minimum versions of some dependencies were changed:
=============== ====== ====
Package Old New
=============== ====== ====
cftime 1.1 1.2
dask 2.15 2.30
distributed 2.15 2.30
lxml 4.5 4.6
matplotlib-base 3.2 3.3
numba 0.49 0.51
numpy 1.17 1.18
pandas 1.0 1.1
pint 0.15 0.16
scipy 1.4 1.5
seaborn 0.10 0.11
sparse 0.8 0.11
toolz 0.10 0.11
zarr 2.4 2.5
=============== ====== ====
- The ``__repr__`` of a :py:class:`xarray.Dataset`'s ``coords`` and ``data_vars``
ignore ``xarray.set_option(display_max_rows=...)`` and show the full output
when called directly as, e.g., ``ds.data_vars`` or ``print(ds.data_vars)``
(:issue:`5545`, :pull:`5580`).
By `Stefan Bender <https://github.com/st-bender>`_.
Deprecations
~~~~~~~~~~~~
- Deprecate :py:func:`open_rasterio` (:issue:`4697`, :pull:`5808`).
By `Alan Snow <https://github.com/snowman2>`_.
- Set the default argument for `roll_coords` to `False` for :py:meth:`DataArray.roll`
and :py:meth:`Dataset.roll`. (:pull:`5653`)
By `Tom Nicholas <https://github.com/TomNicholas>`_.
- :py:meth:`xarray.open_mfdataset` will now error instead of warn when a value for ``concat_dim`` is
passed alongside ``combine='by_coords'``.
By `Tom Nicholas <https://github.com/TomNicholas>`_.
Bug fixes
~~~~~~~~~
- Fix ZeroDivisionError from saving dask array with empty dimension (:issue: `5741`).
By `Joseph K Aicher <https://github.com/jaicher>`_.
- Fixed performance bug where ``cftime`` import attempted within various core operations if ``cftime`` not
installed (:pull:`5640`).
By `Luke Sewell <https://github.com/lusewell>`_
- Fixed bug when combining named DataArrays using :py:func:`combine_by_coords`. (:pull:`5834`).
By `Tom Nicholas <https://github.com/TomNicholas>`_.
- When a custom engine was used in :py:func:`~xarray.open_dataset` the engine
wasn't initialized properly, causing missing argument errors or inconsistent
method signatures. (:pull:`5684`)
By `Jimmy Westling <https://github.com/illviljan>`_.
- Numbers are properly formatted in a plot's title (:issue:`5788`, :pull:`5789`).
By `Maxime Liquet <https://github.com/maximlt>`_.
- Faceted plots will no longer raise a `pint.UnitStrippedWarning` when a `pint.Quantity` array is plotted,
and will correctly display the units of the data in the colorbar (if there is one) (:pull:`5886`).
By `Tom Nicholas <https://github.com/TomNicholas>`_.
- With backends, check for path-like objects rather than ``pathlib.Path``
type, use ``os.fspath`` (:pull:`5879`).
By `Mike Taves <https://github.com/mwtoews>`_.
- ``open_mfdataset()`` now accepts a single ``pathlib.Path`` object (:issue: `5881`).
By `Panos Mavrogiorgos <https://github.com/pmav99>`_.
- Improved performance of :py:meth:`Dataset.unstack` (:pull:`5906`). By `Tom Augspurger <https://github.com/TomAugspurger>`_.
Documentation
~~~~~~~~~~~~~
- Users are instructed to try ``use_cftime=True`` if a ``TypeError`` occurs when combining datasets and one of the types involved is a subclass of ``cftime.datetime`` (:pull:`5776`).
By `Zeb Nicholls <https://github.com/znicholls>`_.
- A clearer error is now raised if a user attempts to assign a Dataset to a single key of
another Dataset. (:pull:`5839`)
By `Tom Nicholas <https://github.com/TomNicholas>`_.
Internal Changes
~~~~~~~~~~~~~~~~
- Explicit indexes refactor: avoid ``len(index)`` in ``map_blocks`` (:pull:`5670`).
By `Deepak Cherian <https://github.com/dcherian>`_.
- Explicit indexes refactor: decouple ``xarray.Index``` from ``xarray.Variable`` (:pull:`5636`).
By `Benoit Bovy <https://github.com/benbovy>`_.
- Fix ``Mapping`` argument typing to allow mypy to pass on ``str`` keys (:pull:`5690`).
By `Maximilian Roos <https://github.com/max-sixty>`_.
- Annotate many of our tests, and fix some of the resulting typing errors. This will
also mean our typing annotations are tested as part of CI. (:pull:`5728`).
By `Maximilian Roos <https://github.com/max-sixty>`_.
- Improve the performance of reprs for large datasets or dataarrays. (:pull:`5661`)
By `Jimmy Westling <https://github.com/illviljan>`_.
- Use isort's `float_to_top` config. (:pull:`5695`).
By `Maximilian Roos <https://github.com/max-sixty>`_.
- Remove use of the deprecated ``kind`` argument in
:py:meth:`pandas.Index.get_slice_bound` inside :py:class:`xarray.CFTimeIndex`
tests (:pull:`5723`). By `Spencer Clark <https://github.com/spencerkclark>`_.
- Refactor `xarray.core.duck_array_ops` to no longer special-case dispatching to
dask versions of functions when acting on dask arrays, instead relying numpy
and dask's adherence to NEP-18 to dispatch automatically. (:pull:`5571`)
By `Tom Nicholas <https://github.com/TomNicholas>`_.
- Add an ASV benchmark CI and improve performance of the benchmarks (:pull:`5796`)
By `Jimmy Westling <https://github.com/illviljan>`_.
- Use ``importlib`` to replace functionality of ``pkg_resources`` such
as version setting and loading of resources. (:pull:`5845`).
By `Martin K. Scherer <https://github.com/marscher>`_.
.. _whats-new.0.19.0:
v0.19.0 (23 July 2021)
----------------------
This release brings improvements to plotting of categorical data, the ability to specify how attributes
are combined in xarray operations, a new high-level :py:func:`unify_chunks` function, as well as various
deprecations, bug fixes, and minor improvements.
Many thanks to the 29 contributors to this release!:
Andrew Williams, Augustus, Aureliana Barghini, Benoit Bovy, crusaderky, Deepak Cherian, ellesmith88,
Elliott Sales de Andrade, Giacomo Caria, github-actions[bot], Illviljan, Joeperdefloep, joooeey, Julia Kent,
Julius Busecke, keewis, Mathias Hauser, Matthias Göbel, Mattia Almansi, Maximilian Roos, Peter Andreas Entschev,
Ray Bell, Sander, Santiago Soler, Sebastian, Spencer Clark, Stephan Hoyer, Thomas Hirtz, Thomas Nicholas.
New Features
~~~~~~~~~~~~
- Allow passing argument ``missing_dims`` to :py:meth:`Variable.transpose` and :py:meth:`Dataset.transpose`
(:issue:`5550`, :pull:`5586`)
By `Giacomo Caria <https://github.com/gcaria>`_.
- Allow passing a dictionary as coords to a :py:class:`DataArray` (:issue:`5527`,
reverts :pull:`1539`, which had deprecated this due to python's inconsistent ordering in earlier versions).
By `Sander van Rijn <https://github.com/sjvrijn>`_.
- Added :py:meth:`Dataset.coarsen.construct`, :py:meth:`DataArray.coarsen.construct` (:issue:`5454`, :pull:`5475`).
By `Deepak Cherian <https://github.com/dcherian>`_.
- Xarray now uses consolidated metadata by default when writing and reading Zarr
stores (:issue:`5251`).
By `Stephan Hoyer <https://github.com/shoyer>`_.
- New top-level function :py:func:`unify_chunks`.
By `Mattia Almansi <https://github.com/malmans2>`_.
- Allow assigning values to a subset of a dataset using positional or label-based
indexing (:issue:`3015`, :pull:`5362`).
By `Matthias Göbel <https://github.com/matzegoebel>`_.
- Attempting to reduce a weighted object over missing dimensions now raises an error (:pull:`5362`).
By `Mattia Almansi <https://github.com/malmans2>`_.
- Add ``.sum`` to :py:meth:`~xarray.DataArray.rolling_exp` and
:py:meth:`~xarray.Dataset.rolling_exp` for exponentially weighted rolling
sums. These require numbagg 0.2.1;
(:pull:`5178`).
By `Maximilian Roos <https://github.com/max-sixty>`_.
- :py:func:`xarray.cov` and :py:func:`xarray.corr` now lazily check for missing
values if inputs are dask arrays (:issue:`4804`, :pull:`5284`).
By `Andrew Williams <https://github.com/AndrewWilliams3142>`_.
- Attempting to ``concat`` list of elements that are not all ``Dataset`` or all ``DataArray`` now raises an error (:issue:`5051`, :pull:`5425`).
By `Thomas Hirtz <https://github.com/thomashirtz>`_.
- allow passing a function to ``combine_attrs`` (:pull:`4896`).
By `Justus Magin <https://github.com/keewis>`_.
- Allow plotting categorical data (:pull:`5464`).
By `Jimmy Westling <https://github.com/illviljan>`_.
- Allow removal of the coordinate attribute ``coordinates`` on variables by setting ``.attrs['coordinates']= None``
(:issue:`5510`).
By `Elle Smith <https://github.com/ellesmith88>`_.
- Added :py:meth:`DataArray.to_numpy`, :py:meth:`DataArray.as_numpy`, and :py:meth:`Dataset.as_numpy`. (:pull:`5568`).
By `Tom Nicholas <https://github.com/TomNicholas>`_.
- Units in plot labels are now automatically inferred from wrapped :py:meth:`pint.Quantity` arrays. (:pull:`5561`).
By `Tom Nicholas <https://github.com/TomNicholas>`_.
Breaking changes
~~~~~~~~~~~~~~~~
- The default ``mode`` for :py:meth:`Dataset.to_zarr` when ``region`` is set
has changed to the new ``mode="r+"``, which only allows for overriding
pre-existing array values. This is a safer default than the prior ``mode="a"``,
and allows for higher performance writes (:pull:`5252`).
By `Stephan Hoyer <https://github.com/shoyer>`_.
- The main parameter to :py:func:`combine_by_coords` is renamed to `data_objects` instead
of `datasets` so anyone calling this method using a named parameter will need to update
the name accordingly (:issue:`3248`, :pull:`4696`).
By `Augustus Ijams <https://github.com/aijams>`_.
Deprecations
~~~~~~~~~~~~
- Removed the deprecated ``dim`` kwarg to :py:func:`DataArray.integrate` (:pull:`5630`)
- Removed the deprecated ``keep_attrs`` kwarg to :py:func:`DataArray.rolling` (:pull:`5630`)
- Removed the deprecated ``keep_attrs`` kwarg to :py:func:`DataArray.coarsen` (:pull:`5630`)
- Completed deprecation of passing an ``xarray.DataArray`` to :py:func:`Variable` - will now raise a ``TypeError`` (:pull:`5630`)
Bug fixes
~~~~~~~~~
- Fix a minor incompatibility between partial datetime string indexing with a
:py:class:`CFTimeIndex` and upcoming pandas version 1.3.0 (:issue:`5356`,
:pull:`5359`).
By `Spencer Clark <https://github.com/spencerkclark>`_.
- Fix 1-level multi-index incorrectly converted to single index (:issue:`5384`,
:pull:`5385`).
By `Benoit Bovy <https://github.com/benbovy>`_.
- Don't cast a duck array in a coordinate to :py:class:`numpy.ndarray` in
:py:meth:`DataArray.differentiate` (:pull:`5408`)
By `Justus Magin <https://github.com/keewis>`_.
- Fix the ``repr`` of :py:class:`Variable` objects with ``display_expand_data=True``
(:pull:`5406`)
By `Justus Magin <https://github.com/keewis>`_.
- Plotting a pcolormesh with ``xscale="log"`` and/or ``yscale="log"`` works as
expected after improving the way the interval breaks are generated (:issue:`5333`).
By `Santiago Soler <https://github.com/santisoler>`_
- :py:func:`combine_by_coords` can now handle combining a list of unnamed
``DataArray`` as input (:issue:`3248`, :pull:`4696`).
By `Augustus Ijams <https://github.com/aijams>`_.
Internal Changes
~~~~~~~~~~~~~~~~
- Run CI on the first & last python versions supported only; currently 3.7 & 3.9.
(:pull:`5433`)
By `Maximilian Roos <https://github.com/max-sixty>`_.
- Publish test results & timings on each PR.
(:pull:`5537`)
By `Maximilian Roos <https://github.com/max-sixty>`_.
- Explicit indexes refactor: add a ``xarray.Index.query()`` method in which
one may eventually provide a custom implementation of label-based data
selection (not ready yet for public use). Also refactor the internal,
pandas-specific implementation into ``PandasIndex.query()`` and
``PandasMultiIndex.query()`` (:pull:`5322`).
By `Benoit Bovy <https://github.com/benbovy>`_.
Changelog:
What's new in 1.3.4 (October 17, 2021)
These are the changes in pandas 1.3.4. See Release notes for a full changelog
including other versions of pandas.
-------------------------------------------------------------------------------
Fixed regressions
* Fixed regression in DataFrame.convert_dtypes() incorrectly converts byte
strings to strings (GH43183)
* Fixed regression in GroupBy.agg() where it was failing silently with mixed
data types along axis=1 and MultiIndex (GH43209)
* Fixed regression in merge() with integer and NaN keys failing with outer
merge (GH43550)
* Fixed regression in DataFrame.corr() raising ValueError with method=
"spearman" on 32-bit platforms (GH43588)
* Fixed performance regression in MultiIndex.equals() (GH43549)
* Fixed performance regression in GroupBy.first() and GroupBy.last() with
StringDtype (GH41596)
* Fixed regression in Series.cat.reorder_categories() failing to update the
categories on the Series (GH43232)
* Fixed regression in Series.cat.categories() setter failing to update the
categories on the Series (GH43334)
* Fixed regression in read_csv() raising UnicodeDecodeError exception when
memory_map=True (GH43540)
* Fixed regression in DataFrame.explode() raising AssertionError when column
is any scalar which is not a string (GH43314)
* Fixed regression in Series.aggregate() attempting to pass args and kwargs
multiple times to the user supplied func in certain cases (GH43357)
* Fixed regression when iterating over a DataFrame.groupby.rolling object
causing the resulting DataFrames to have an incorrect index if the input
groupings were not sorted (GH43386)
* Fixed regression in DataFrame.groupby.rolling.cov() and
DataFrame.groupby.rolling.corr() computing incorrect results if the input
groupings were not sorted (GH43386)
-------------------------------------------------------------------------------
Bug fixes
* Fixed bug in pandas.DataFrame.groupby.rolling() and
pandas.api.indexers.FixedForwardWindowIndexer leading to segfaults and
window endpoints being mixed across groups (GH43267)
* Fixed bug in GroupBy.mean() with datetimelike values including NaT values
returning incorrect results (GH43132)
* Fixed bug in Series.aggregate() not passing the first args to the user
supplied func in certain cases (GH43357)
* Fixed memory leaks in Series.rolling.quantile() and Series.rolling.median()
(GH43339)
-------------------------------------------------------------------------------
Other
* The minimum version of Cython needed to compile pandas is now 0.29.24 (
GH43729)
What's new in 1.3.3 (September 12, 2021)
These are the changes in pandas 1.3.3. See Release notes for a full changelog
including other versions of pandas.
-------------------------------------------------------------------------------
Fixed regressions
* Fixed regression in DataFrame constructor failing to broadcast for defined
Index and len one list of Timestamp (GH42810)
* Fixed regression in GroupBy.agg() incorrectly raising in some cases (
GH42390)
* Fixed regression in GroupBy.apply() where nan values were dropped even with
dropna=False (GH43205)
* Fixed regression in GroupBy.quantile() which was failing with pandas.NA (
GH42849)
* Fixed regression in merge() where on columns with ExtensionDtype or bool
data types were cast to object in right and outer merge (GH40073)
* Fixed regression in RangeIndex.where() and RangeIndex.putmask() raising
AssertionError when result did not represent a RangeIndex (GH43240)
* Fixed regression in read_parquet() where the fastparquet engine would not
work properly with fastparquet 0.7.0 (GH43075)
* Fixed regression in DataFrame.loc.__setitem__() raising ValueError when
setting array as cell value (GH43422)
* Fixed regression in is_list_like() where objects with __iter__ set to None
would be identified as iterable (GH43373)
* Fixed regression in DataFrame.__getitem__() raising error for slice of
DatetimeIndex when index is non monotonic (GH43223)
* Fixed regression in Resampler.aggregate() when used after column selection
would raise if func is a list of aggregation functions (GH42905)
* Fixed regression in DataFrame.corr() where Kendall correlation would
produce incorrect results for columns with repeated values (GH43401)
* Fixed regression in DataFrame.groupby() where aggregation on columns with
object types dropped results on those columns (GH42395, GH43108)
* Fixed regression in Series.fillna() raising TypeError when filling float
Series with list-like fill value having a dtype which couldn't cast
lostlessly (like float32 filled with float64) (GH43424)
* Fixed regression in read_csv() raising AttributeError when the file handle
is an tempfile.SpooledTemporaryFile object (GH43439)
* Fixed performance regression in
core.window.ewm.ExponentialMovingWindow.mean() (GH42333)
-------------------------------------------------------------------------------
Performance improvements
* Performance improvement for DataFrame.__setitem__() when the key or value
is not a DataFrame, or key is not list-like (GH43274)
-------------------------------------------------------------------------------
Bug fixes
* Fixed bug in DataFrameGroupBy.agg() and DataFrameGroupBy.transform() with
engine="numba" where index data was not being correctly passed into func (
GH43133)
What's new in 1.3.2 (August 15, 2021)
These are the changes in pandas 1.3.2. See Release notes for a full changelog
including other versions of pandas.
-------------------------------------------------------------------------------
Fixed regressions
* Performance regression in DataFrame.isin() and Series.isin() for nullable
data types (GH42714)
* Regression in updating values of Series using boolean index, created by
using DataFrame.pop() (GH42530)
* Regression in DataFrame.from_records() with empty records (GH42456)
* Fixed regression in DataFrame.shift() where TypeError occurred when
shifting DataFrame created by concatenation of slices and fills with values
(GH42719)
* Regression in DataFrame.agg() when the func argument returned lists and
axis=1 (GH42727)
* Regression in DataFrame.drop() does nothing if MultiIndex has duplicates
and indexer is a tuple or list of tuples (GH42771)
* Fixed regression where read_csv() raised a ValueError when parameters names
and prefix were both set to None (GH42387)
* Fixed regression in comparisons between Timestamp object and datetime64
objects outside the implementation bounds for nanosecond datetime64 (
GH42794)
* Fixed regression in Styler.highlight_min() and Styler.highlight_max() where
pandas.NA was not successfully ignored (GH42650)
* Fixed regression in concat() where copy=False was not honored in axis=1
Series concatenation (GH42501)
* Regression in Series.nlargest() and Series.nsmallest() with nullable
integer or float dtype (GH42816)
* Fixed regression in Series.quantile() with Int64Dtype (GH42626)
* Fixed regression in Series.groupby() and DataFrame.groupby() where
supplying the by argument with a Series named with a tuple would
incorrectly raise (GH42731)
-------------------------------------------------------------------------------
Bug fixes
* Bug in read_excel() modifies the dtypes dictionary when reading a file with
duplicate columns (GH42462)
* 1D slices over extension types turn into N-dimensional slices over
ExtensionArrays (GH42430)
* Fixed bug in Series.rolling() and DataFrame.rolling() not calculating
window bounds correctly for the first row when center=True and window is an
offset that covers all the rows (GH42753)
* Styler.hide_columns() now hides the index name header row as well as column
headers (GH42101)
* Styler.set_sticky() has amended CSS to control the column/index names and
ensure the correct sticky positions (GH42537)
* Bug in de-serializing datetime indexes in PYTHONOPTIMIZED mode (GH42866)
What's new in 1.3.1 (July 25, 2021)
These are the changes in pandas 1.3.1. See Release notes for a full changelog
including other versions of pandas.
-------------------------------------------------------------------------------
Fixed regressions
* Pandas could not be built on PyPy (GH42355)
* DataFrame constructed with an older version of pandas could not be
unpickled (GH42345)
* Performance regression in constructing a DataFrame from a dictionary of
dictionaries (GH42248)
* Fixed regression in DataFrame.agg() dropping values when the DataFrame had
an Extension Array dtype, a duplicate index, and axis=1 (GH42380)
* Fixed regression in DataFrame.astype() changing the order of noncontiguous
data (GH42396)
* Performance regression in DataFrame in reduction operations requiring
casting such as DataFrame.mean() on integer data (GH38592)
* Performance regression in DataFrame.to_dict() and Series.to_dict() when
orient argument one of 'records', 'dict', or 'split' (GH42352)
* Fixed regression in indexing with a list subclass incorrectly raising
TypeError (GH42433, GH42461)
* Fixed regression in DataFrame.isin() and Series.isin() raising TypeError
with nullable data containing at least one missing value (GH42405)
* Regression in concat() between objects with bool dtype and integer dtype
casting to object instead of to integer (GH42092)
* Bug in Series constructor not accepting a dask.Array (GH38645)
* Fixed regression for SettingWithCopyWarning displaying incorrect stacklevel
(GH42570)
* Fixed regression for merge_asof() raising KeyError when one of the by
columns is in the index (GH34488)
* Fixed regression in to_datetime() returning pd.NaT for inputs that produce
duplicated values, when cache=True (GH42259)
* Fixed regression in SeriesGroupBy.value_counts() that resulted in an
IndexError when called on a Series with one row (GH42618)
-------------------------------------------------------------------------------
Bug fixes
* Fixed bug in DataFrame.transpose() dropping values when the DataFrame had
an Extension Array dtype and a duplicate index (GH42380)
* Fixed bug in DataFrame.to_xml() raising KeyError when called with index=
False and an offset index (GH42458)
* Fixed bug in Styler.set_sticky() not handling index names correctly for
single index columns case (GH42537)
* Fixed bug in DataFrame.copy() failing to consolidate blocks in the result (
GH42579)
What's new in 1.3.0 (July 2, 2021)
These are the changes in pandas 1.3.0. See Release notes for a full changelog
including other versions of pandas.
Warning
When reading new Excel 2007+ (.xlsx) files, the default argument engine=None to
read_excel() will now result in using the openpyxl engine in all cases when the
option io.excel.xlsx.reader is set to "auto". Previously, some cases would use
the xlrd engine instead. See What's new 1.2.0 for background on this change.
-------------------------------------------------------------------------------
Enhancements
-------------------------------------------------------------------------------
Custom HTTP(s) headers when reading csv or json files
When reading from a remote URL that is not handled by fsspec (e.g. HTTP and
HTTPS) the dictionary passed to storage_options will be used to create the
headers included in the request. This can be used to control the User-Agent
header or send other custom headers (GH36688). For example:
In [1]: headers = {"User-Agent": "pandas"}
In [2]: df = pd.read_csv(
...: "https://download.bls.gov/pub/time.series/cu/cu.item",
...: sep="\t",
...: storage_options=headers
...: )
...:
-------------------------------------------------------------------------------
Read and write XML documents
We added I/O support to read and render shallow versions of XML documents with
read_xml() and DataFrame.to_xml(). Using lxml as parser, both XPath 1.0 and
XSLT 1.0 are available. (GH27554)
In [1]: xml = """<?xml version='1.0' encoding='utf-8'?>
...: <data>
...: <row>
...: <shape>square</shape>
...: <degrees>360</degrees>
...: <sides>4.0</sides>
...: </row>
...: <row>
...: <shape>circle</shape>
...: <degrees>360</degrees>
...: <sides/>
...: </row>
...: <row>
...: <shape>triangle</shape>
...: <degrees>180</degrees>
...: <sides>3.0</sides>
...: </row>
...: </data>"""
In [2]: df = pd.read_xml(xml)
In [3]: df
Out[3]:
shape degrees sides
0 square 360 4.0
1 circle 360 NaN
2 triangle 180 3.0
In [4]: df.to_xml()
Out[4]:
<?xml version='1.0' encoding='utf-8'?>
<data>
<row>
<index>0</index>
<shape>square</shape>
<degrees>360</degrees>
<sides>4.0</sides>
</row>
<row>
<index>1</index>
<shape>circle</shape>
<degrees>360</degrees>
<sides/>
</row>
<row>
<index>2</index>
<shape>triangle</shape>
<degrees>180</degrees>
<sides>3.0</sides>
</row>
</data>
For more, see Writing XML in the user guide on IO tools.
-------------------------------------------------------------------------------
Styler enhancements
We provided some focused development on Styler. See also the Styler
documentation which has been revised and improved (GH39720, GH39317, GH40493).
+ The method Styler.set_table_styles() can now accept more natural CSS
language for arguments, such as 'color:red;' instead of [('color',
'red')] (GH39563)
+ The methods Styler.highlight_null(), Styler.highlight_min(), and
Styler.highlight_max() now allow custom CSS highlighting instead of the
default background coloring (GH40242)
+ Styler.apply() now accepts functions that return an ndarray when axis=
None, making it now consistent with the axis=0 and axis=1 behavior (
GH39359)
+ When incorrectly formatted CSS is given via Styler.apply() or
Styler.applymap(), an error is now raised upon rendering (GH39660)
+ Styler.format() now accepts the keyword argument escape for optional
HTML and LaTeX escaping (GH40388, GH41619)
+ Styler.background_gradient() has gained the argument gmap to supply a
specific gradient map for shading (GH22727)
+ Styler.clear() now clears Styler.hidden_index and Styler.hidden_columns
as well (GH40484)
+ Added the method Styler.highlight_between() (GH39821)
+ Added the method Styler.highlight_quantile() (GH40926)
+ Added the method Styler.text_gradient() (GH41098)
+ Added the method Styler.set_tooltips() to allow hover tooltips; this
can be used enhance interactive displays (GH21266, GH40284)
+ Added the parameter precision to the method Styler.format() to control
the display of floating point numbers (GH40134)
+ Styler rendered HTML output now follows the w3 HTML Style Guide (
GH39626)
+ Many features of the Styler class are now either partially or fully
usable on a DataFrame with a non-unique indexes or columns (GH41143)
+ One has greater control of the display through separate sparsification
of the index or columns using the new styler options, which are also
usable via option_context() (GH41142)
+ Added the option styler.render.max_elements to avoid browser overload
when styling large DataFrames (GH40712)
+ Added the method Styler.to_latex() (GH21673, GH42320), which also
allows some limited CSS conversion (GH40731)
+ Added the method Styler.to_html() (GH13379)
+ Added the method Styler.set_sticky() to make index and column headers
permanently visible in scrolling HTML frames (GH29072)
-------------------------------------------------------------------------------
DataFrame constructor honors copy=False with dict
When passing a dictionary to DataFrame with copy=False, a copy will no longer
be made (GH32960).
In [3]: arr = np.array([1, 2, 3])
In [4]: df = pd.DataFrame({"A": arr, "B": arr.copy()}, copy=False)
In [5]: df
Out[5]:
A B
0 1 1
1 2 2
2 3 3
df["A"] remains a view on arr:
In [6]: arr[0] = 0
In [7]: assert df.iloc[0, 0] == 0
The default behavior when not passing copy will remain unchanged, i.e. a copy
will be made.
-------------------------------------------------------------------------------
PyArrow backed string data type
We've enhanced the StringDtype, an extension type dedicated to string data. (
GH39908)
It is now possible to specify a storage keyword option to StringDtype. Use
pandas options or specify the dtype using dtype='string[pyarrow]' to allow the
StringArray to be backed by a PyArrow array instead of a NumPy array of Python
objects.
The PyArrow backed StringArray requires pyarrow 1.0.0 or greater to be
installed.
Warning
string[pyarrow] is currently considered experimental. The implementation and
parts of the API may change without warning.
In [8]: pd.Series(['abc', None, 'def'], dtype=pd.StringDtype(storage="pyarrow"))
Out[8]:
0 abc
1 <NA>
2 def
dtype: string
You can use the alias "string[pyarrow]" as well.
In [9]: s = pd.Series(['abc', None, 'def'], dtype="string[pyarrow]")
In [10]: s
Out[10]:
0 abc
1 <NA>
2 def
dtype: string
You can also create a PyArrow backed string array using pandas options.
In [11]: with pd.option_context("string_storage", "pyarrow"):
....: s = pd.Series(['abc', None, 'def'], dtype="string")
....:
In [12]: s
Out[12]:
0 abc
1 <NA>
2 def
dtype: string
The usual string accessor methods work. Where appropriate, the return type of
the Series or columns of a DataFrame will also have string dtype.
In [13]: s.str.upper()
Out[13]:
0 ABC
1 <NA>
2 DEF
dtype: string
In [14]: s.str.split('b', expand=True).dtypes
Out[14]:
0 string
1 string
dtype: object
String accessor methods returning integers will return a value with Int64Dtype
In [15]: s.str.count("a")
Out[15]:
0 1
1 <NA>
2 0
dtype: Int64
-------------------------------------------------------------------------------
Centered datetime-like rolling windows
When performing rolling calculations on DataFrame and Series objects with a
datetime-like index, a centered datetime-like window can now be used (GH38780).
For example:
In [16]: df = pd.DataFrame(
....: {"A": [0, 1, 2, 3, 4]}, index=pd.date_range("2020", periods=5, freq="1D")
....: )
....:
In [17]: df
Out[17]:
A
2020-01-01 0
2020-01-02 1
2020-01-03 2
2020-01-04 3
2020-01-05 4
In [18]: df.rolling("2D", center=True).mean()
Out[18]:
A
2020-01-01 0.5
2020-01-02 1.5
2020-01-03 2.5
2020-01-04 3.5
2020-01-05 4.0
-------------------------------------------------------------------------------
Other enhancements
* DataFrame.rolling(), Series.rolling(), DataFrame.expanding(), and
Series.expanding() now support a method argument with a 'table' option that
performs the windowing operation over an entire DataFrame. See Window
Overview for performance and functional benefits (GH15095, GH38995)
* ExponentialMovingWindow now support a online method that can perform mean
calculations in an online fashion. See Window Overview (GH41673)
* Added MultiIndex.dtypes() (GH37062)
* Added end and end_day options for the origin argument in DataFrame.resample
() (GH37804)
* Improved error message when usecols and names do not match for read_csv()
and engine="c" (GH29042)
* Improved consistency of error messages when passing an invalid win_type
argument in Window methods (GH15969)
* read_sql_query() now accepts a dtype argument to cast the columnar data
from the SQL database based on user input (GH10285)
* read_csv() now raising ParserWarning if length of header or given names
does not match length of data when usecols is not specified (GH21768)
* Improved integer type mapping from pandas to SQLAlchemy when using
DataFrame.to_sql() (GH35076)
* to_numeric() now supports downcasting of nullable ExtensionDtype objects (
GH33013)
* Added support for dict-like names in MultiIndex.set_names and
MultiIndex.rename (GH20421)
* read_excel() can now auto-detect .xlsb files and older .xls files (GH35416,
GH41225)
* ExcelWriter now accepts an if_sheet_exists parameter to control the
behavior of append mode when writing to existing sheets (GH40230)
* Rolling.sum(), Expanding.sum(), Rolling.mean(), Expanding.mean(),
ExponentialMovingWindow.mean(), Rolling.median(), Expanding.median(),
Rolling.max(), Expanding.max(), Rolling.min(), and Expanding.min() now
support Numba execution with the engine keyword (GH38895, GH41267)
* DataFrame.apply() can now accept NumPy unary operators as strings, e.g.
df.apply("sqrt"), which was already the case for Series.apply() (GH39116)
* DataFrame.apply() can now accept non-callable DataFrame properties as
strings, e.g. df.apply("size"), which was already the case for Series.apply
() (GH39116)
* DataFrame.applymap() can now accept kwargs to pass on to the user-provided
func (GH39987)
* Passing a DataFrame indexer to iloc is now disallowed for
Series.__getitem__() and DataFrame.__getitem__() (GH39004)
* Series.apply() can now accept list-like or dictionary-like arguments that
aren't lists or dictionaries, e.g. ser.apply(np.array(["sum", "mean"])),
which was already the case for DataFrame.apply() (GH39140)
* DataFrame.plot.scatter() can now accept a categorical column for the
argument c (GH12380, GH31357)
* Series.loc() now raises a helpful error message when the Series has a
MultiIndex and the indexer has too many dimensions (GH35349)
* read_stata() now supports reading data from compressed files (GH26599)
* Added support for parsing ISO 8601-like timestamps with negative signs to
Timedelta (GH37172)
* Added support for unary operators in FloatingArray (GH38749)
* RangeIndex can now be constructed by passing a range object directly e.g.
pd.RangeIndex(range(3)) (GH12067)
* Series.round() and DataFrame.round() now work with nullable integer and
floating dtypes (GH38844)
* read_csv() and read_json() expose the argument encoding_errors to control
how encoding errors are handled (GH39450)
* GroupBy.any() and GroupBy.all() use Kleene logic with nullable data types (
GH37506)
* GroupBy.any() and GroupBy.all() return a BooleanDtype for columns with
nullable data types (GH33449)
* GroupBy.any() and GroupBy.all() raising with object data containing pd.NA
even when skipna=True (GH37501)
* GroupBy.rank() now supports object-dtype data (GH38278)
* Constructing a DataFrame or Series with the data argument being a Python
iterable that is not a NumPy ndarray consisting of NumPy scalars will now
result in a dtype with a precision the maximum of the NumPy scalars; this
was already the case when data is a NumPy ndarray (GH40908)
* Add keyword sort to pivot_table() to allow non-sorting of the result (
GH39143)
* Add keyword dropna to DataFrame.value_counts() to allow counting rows that
include NA values (GH41325)
* Series.replace() will now cast results to PeriodDtype where possible
instead of object dtype (GH41526)
* Improved error message in corr and cov methods on Rolling, Expanding, and
ExponentialMovingWindow when other is not a DataFrame or Series (GH41741)
* Series.between() can now accept left or right as arguments to inclusive to
include only the left or right boundary (GH40245)
* DataFrame.explode() now supports exploding multiple columns. Its column
argument now also accepts a list of str or tuples for exploding on multiple
columns at the same time (GH39240)
* DataFrame.sample() now accepts the ignore_index argument to reset the index
after sampling, similar to DataFrame.drop_duplicates() and
DataFrame.sort_values() (GH38581)
-------------------------------------------------------------------------------
Notable bug fixes
These are bug fixes that might have notable behavior changes.
-------------------------------------------------------------------------------
Categorical.unique now always maintains same dtype as original
Previously, when calling Categorical.unique() with categorical data, unused
categories in the new array would be removed, making the dtype of the new array
different than the original (GH18291)
As an example of this, given:
In [19]: dtype = pd.CategoricalDtype(['bad', 'neutral', 'good'], ordered=True)
In [20]: cat = pd.Categorical(['good', 'good', 'bad', 'bad'], dtype=dtype)
In [21]: original = pd.Series(cat)
In [22]: unique = original.unique()
Previous behavior:
In [1]: unique
['good', 'bad']
Categories (2, object): ['bad' < 'good']
In [2]: original.dtype == unique.dtype
False
New behavior:
In [23]: unique
Out[23]:
['good', 'bad']
Categories (3, object): ['bad' < 'neutral' < 'good']
In [24]: original.dtype == unique.dtype
Out[24]: True
-------------------------------------------------------------------------------
Preserve dtypes in DataFrame.combine_first()
DataFrame.combine_first() will now preserve dtypes (GH7509)
In [25]: df1 = pd.DataFrame({"A": [1, 2, 3], "B": [1, 2, 3]}, index=[0, 1, 2])
In [26]: df1
Out[26]:
A B
0 1 1
1 2 2
2 3 3
In [27]: df2 = pd.DataFrame({"B": [4, 5, 6], "C": [1, 2, 3]}, index=[2, 3, 4])
In [28]: df2
Out[28]:
B C
2 4 1
3 5 2
4 6 3
In [29]: combined = df1.combine_first(df2)
Previous behavior:
In [1]: combined.dtypes
Out[2]:
A float64
B float64
C float64
dtype: object
New behavior:
In [30]: combined.dtypes
Out[30]:
A float64
B int64
C float64
dtype: object
-------------------------------------------------------------------------------
Groupby methods agg and transform no longer changes return dtype for callables
Previously the methods DataFrameGroupBy.aggregate(), SeriesGroupBy.aggregate(),
DataFrameGroupBy.transform(), and SeriesGroupBy.transform() might cast the
result dtype when the argument func is callable, possibly leading to
undesirable results (GH21240). The cast would occur if the result is numeric
and casting back to the input dtype does not change any values as measured by
np.allclose. Now no such casting occurs.
In [31]: df = pd.DataFrame({'key': [1, 1], 'a': [True, False], 'b': [True, True]})
In [32]: df
Out[32]:
key a b
0 1 True True
1 1 False True
Previous behavior:
In [5]: df.groupby('key').agg(lambda x: x.sum())
Out[5]:
a b
key
1 True 2
New behavior:
In [33]: df.groupby('key').agg(lambda x: x.sum())
Out[33]:
a b
key
1 1 2
-------------------------------------------------------------------------------
float result for GroupBy.mean(), GroupBy.median(), and GroupBy.var()
Previously, these methods could result in different dtypes depending on the
input values. Now, these methods will always return a float dtype. (GH41137)
In [34]: df = pd.DataFrame({'a': [True], 'b': [1], 'c': [1.0]})
Previous behavior:
In [5]: df.groupby(df.index).mean()
Out[5]:
a b c
0 True 1 1.0
New behavior:
In [35]: df.groupby(df.index).mean()
Out[35]:
a b c
0 1.0 1.0 1.0
-------------------------------------------------------------------------------
Try operating inplace when setting values with loc and iloc
When setting an entire column using loc or iloc, pandas will try to insert the
values into the existing data rather than create an entirely new array.
In [36]: df = pd.DataFrame(range(3), columns=["A"], dtype="float64")
In [37]: values = df.values
In [38]: new = np.array([5, 6, 7], dtype="int64")
In [39]: df.loc[[0, 1, 2], "A"] = new
In both the new and old behavior, the data in values is overwritten, but in the
old behavior the dtype of df["A"] changed to int64.
Previous behavior:
In [1]: df.dtypes
Out[1]:
A int64
dtype: object
In [2]: np.shares_memory(df["A"].values, new)
Out[2]: False
In [3]: np.shares_memory(df["A"].values, values)
Out[3]: False
In pandas 1.3.0, df continues to share data with values
New behavior:
In [40]: df.dtypes
Out[40]:
A float64
dtype: object
In [41]: np.shares_memory(df["A"], new)
Out[41]: False
In [42]: np.shares_memory(df["A"], values)
Out[42]: True
-------------------------------------------------------------------------------
Never operate inplace when setting frame[keys] = values
When setting multiple columns using frame[keys] = values new arrays will
replace pre-existing arrays for these keys, which will not be over-written (
GH39510). As a result, the columns will retain the dtype(s) of values, never
casting to the dtypes of the existing arrays.
In [43]: df = pd.DataFrame(range(3), columns=["A"], dtype="float64")
In [44]: df[["A"]] = 5
In the old behavior, 5 was cast to float64 and inserted into the existing array
backing df:
Previous behavior:
In [1]: df.dtypes
Out[1]:
A float64
In the new behavior, we get a new array, and retain an integer-dtyped 5:
New behavior:
In [45]: df.dtypes
Out[45]:
A int64
dtype: object
-------------------------------------------------------------------------------
Consistent casting with setting into Boolean Series
Setting non-boolean values into a Series with dtype=bool now consistently casts
to dtype=object (GH38709)
In [46]: orig = pd.Series([True, False])
In [47]: ser = orig.copy()
In [48]: ser.iloc[1] = np.nan
In [49]: ser2 = orig.copy()
In [50]: ser2.iloc[1] = 2.0
Previous behavior:
In [1]: ser
Out [1]:
0 1.0
1 NaN
dtype: float64
In [2]:ser2
Out [2]:
0 True
1 2.0
dtype: object
New behavior:
In [51]: ser
Out[51]:
0 True
1 NaN
dtype: object
In [52]: ser2
Out[52]:
0 True
1 2.0
dtype: object
-------------------------------------------------------------------------------
GroupBy.rolling no longer returns grouped-by column in values
The group-by column will now be dropped from the result of a groupby.rolling
operation (GH32262)
In [53]: df = pd.DataFrame({"A": [1, 1, 2, 3], "B": [0, 1, 2, 3]})
In [54]: df
Out[54]:
A B
0 1 0
1 1 1
2 2 2
3 3 3
Previous behavior:
In [1]: df.groupby("A").rolling(2).sum()
Out[1]:
A B
A
1 0 NaN NaN
1 2.0 1.0
2 2 NaN NaN
3 3 NaN NaN
New behavior:
In [55]: df.groupby("A").rolling(2).sum()
Out[55]:
B
A
1 0 NaN
1 1.0
2 2 NaN
3 3 NaN
-------------------------------------------------------------------------------
Removed artificial truncation in rolling variance and standard deviation
Rolling.std() and Rolling.var() will no longer artificially truncate results
that are less than ~1e-8 and ~1e-15 respectively to zero (GH37051, GH40448,
GH39872).
However, floating point artifacts may now exist in the results when rolling
over larger values.
In [56]: s = pd.Series([7, 5, 5, 5])
In [57]: s.rolling(3).var()
Out[57]:
0 NaN
1 NaN
2 1.333333e+00
3 4.440892e-16
dtype: float64
-------------------------------------------------------------------------------
GroupBy.rolling with MultiIndex no longer drops levels in the result
GroupBy.rolling() will no longer drop levels of a DataFrame with a MultiIndex
in the result. This can lead to a perceived duplication of levels in the
resulting MultiIndex, but this change restores the behavior that was present in
version 1.1.3 (GH38787, GH38523).
In [58]: index = pd.MultiIndex.from_tuples([('idx1', 'idx2')], names=['label1', 'label2'])
In [59]: df = pd.DataFrame({'a': [1], 'b': [2]}, index=index)
In [60]: df
Out[60]:
a b
label1 label2
idx1 idx2 1 2
Previous behavior:
In [1]: df.groupby('label1').rolling(1).sum()
Out[1]:
a b
label1
idx1 1.0 2.0
New behavior:
In [61]: df.groupby('label1').rolling(1).sum()
Out[61]:
a b
label1 label1 label2
idx1 idx1 idx2 1.0 2.0
-------------------------------------------------------------------------------
Backwards incompatible API changes
-------------------------------------------------------------------------------
Increased minimum versions for dependencies
Some minimum supported versions of dependencies were updated. If installed, we
now require:
Package Minimum Version Required Changed
numpy 1.17.3 X X
pytz 2017.3 X
python-dateutil 2.7.3 X
bottleneck 1.2.1
numexpr 2.7.0 X
pytest (dev) 6.0 X
mypy (dev) 0.812 X
setuptools 38.6.0 X
For optional libraries the general recommendation is to use the latest version.
The following table lists the lowest version per library that is currently
being tested throughout the development of pandas. Optional libraries below the
lowest tested version may still work, but are not considered supported.
Package Minimum Version Changed
beautifulsoup4 4.6.0
fastparquet 0.4.0 X
fsspec 0.7.4
gcsfs 0.6.0
lxml 4.3.0
matplotlib 2.2.3
numba 0.46.0
openpyxl 3.0.0 X
pyarrow 0.17.0 X
pymysql 0.8.1 X
pytables 3.5.1
s3fs 0.4.0
scipy 1.2.0
sqlalchemy 1.3.0 X
tabulate 0.8.7 X
xarray 0.12.0
xlrd 1.2.0
xlsxwriter 1.0.2
xlwt 1.3.0
pandas-gbq 0.12.0
See Dependencies and Optional dependencies for more.
-------------------------------------------------------------------------------
Other API changes
* Partially initialized CategoricalDtype objects (i.e. those with categories=
None) will no longer compare as equal to fully initialized dtype objects (
GH38516)
* Accessing _constructor_expanddim on a DataFrame and _constructor_sliced on
a Series now raise an AttributeError. Previously a NotImplementedError was
raised (GH38782)
* Added new engine and **engine_kwargs parameters to DataFrame.to_sql() to
support other future 'SQL engines'. Currently we still only use
SQLAlchemy under the hood, but more engines are planned to be supported
such as turbodbc (GH36893)
* Removed redundant freq from PeriodIndex string representation (GH41653)
* ExtensionDtype.construct_array_type() is now a required method instead of
an optional one for ExtensionDtype subclasses (GH24860)
* Calling hash on non-hashable pandas objects will now raise TypeError with
the built-in error message (e.g. unhashable type: 'Series'). Previously it
would raise a custom message such as 'Series' objects are mutable, thus
they cannot be hashed. Furthermore, isinstance(<Series>,
abc.collections.Hashable) will now return False (GH40013)
* Styler.from_custom_template() now has two new arguments for template names,
and removed the old name, due to template inheritance having been
introducing for better parsing (GH42053). Subclassing modifications to
Styler attributes are also needed.
-------------------------------------------------------------------------------
Build
* Documentation in .pptx and .pdf formats are no longer included in wheels or
source distributions. (GH30741)
-------------------------------------------------------------------------------
Deprecations
-------------------------------------------------------------------------------
Deprecated dropping nuisance columns in DataFrame reductions and
DataFrameGroupBy operations
Calling a reduction (e.g. .min, .max, .sum) on a DataFrame with numeric_only=
None (the default), columns where the reduction raises a TypeError are silently
ignored and dropped from the result.
This behavior is deprecated. In a future version, the TypeError will be raised,
and users will need to select only valid columns before calling the function.
For example:
In [62]: df = pd.DataFrame({"A": [1, 2, 3, 4], "B": pd.date_range("2016-01-01", periods=4)})
In [63]: df
Out[63]:
A B
0 1 2016-01-01
1 2 2016-01-02
2 3 2016-01-03
3 4 2016-01-04
Old behavior:
In [3]: df.prod()
Out[3]:
Out[3]:
A 24
dtype: int64
Future behavior:
In [4]: df.prod()
...
TypeError: 'DatetimeArray' does not implement reduction 'prod'
In [5]: df[["A"]].prod()
Out[5]:
A 24
dtype: int64
Similarly, when applying a function to DataFrameGroupBy, columns on which the
function raises TypeError are currently silently ignored and dropped from the
result.
This behavior is deprecated. In a future version, the TypeError will be raised,
and users will need to select only valid columns before calling the function.
For example:
In [64]: df = pd.DataFrame({"A": [1, 2, 3, 4], "B": pd.date_range("2016-01-01", periods=4)})
In [65]: gb = df.groupby([1, 1, 2, 2])
Old behavior:
In [4]: gb.prod(numeric_only=False)
Out[4]:
A
1 2
2 12
Future behavior:
In [5]: gb.prod(numeric_only=False)
...
TypeError: datetime64 type does not support prod operations
In [6]: gb[["A"]].prod(numeric_only=False)
Out[6]:
A
1 2
2 12
-------------------------------------------------------------------------------
Other Deprecations
* Deprecated allowing scalars to be passed to the Categorical constructor (
GH38433)
* Deprecated constructing CategoricalIndex without passing list-like data (
GH38944)
* Deprecated allowing subclass-specific keyword arguments in the Index
constructor, use the specific subclass directly instead (GH14093, GH21311,
GH22315, GH26974)
* Deprecated the astype() method of datetimelike (timedelta64[ns], datetime64
[ns], Datetime64TZDtype, PeriodDtype) to convert to integer dtypes, use
values.view(...) instead (GH38544)
* Deprecated MultiIndex.is_lexsorted() and MultiIndex.lexsort_depth(), use
MultiIndex.is_monotonic_increasing() instead (GH32259)
* Deprecated keyword try_cast in Series.where(), Series.mask(),
DataFrame.where(), DataFrame.mask(); cast results manually if desired (
GH38836)
* Deprecated comparison of Timestamp objects with datetime.date objects.
Instead of e.g. ts <= mydate use ts <= pd.Timestamp(mydate) or ts.date() <=
mydate (GH36131)
* Deprecated Rolling.win_type returning "freq" (GH38963)
* Deprecated Rolling.is_datetimelike (GH38963)
* Deprecated DataFrame indexer for Series.__setitem__() and
DataFrame.__setitem__() (GH39004)
* Deprecated ExponentialMovingWindow.vol() (GH39220)
* Using .astype to convert between datetime64[ns] dtype and DatetimeTZDtype
is deprecated and will raise in a future version, use obj.tz_localize or
obj.dt.tz_localize instead (GH38622)
* Deprecated casting datetime.date objects to datetime64 when used as
fill_value in DataFrame.unstack(), DataFrame.shift(), Series.shift(), and
DataFrame.reindex(), pass pd.Timestamp(dateobj) instead (GH39767)
* Deprecated Styler.set_na_rep() and Styler.set_precision() in favor of
Styler.format() with na_rep and precision as existing and new input
arguments respectively (GH40134, GH40425)
* Deprecated Styler.where() in favor of using an alternative formulation with
Styler.applymap() (GH40821)
* Deprecated allowing partial failure in Series.transform() and
DataFrame.transform() when func is list-like or dict-like and raises
anything but TypeError; func raising anything but a TypeError will raise in
a future version (GH40211)
* Deprecated arguments error_bad_lines and warn_bad_lines in read_csv() and
read_table() in favor of argument on_bad_lines (GH15122)
* Deprecated support for np.ma.mrecords.MaskedRecords in the DataFrame
constructor, pass {name: data[name] for name in data.dtype.names} instead (
GH40363)
* Deprecated using merge(), DataFrame.merge(), and DataFrame.join() on a
different number of levels (GH34862)
* Deprecated the use of **kwargs in ExcelWriter; use the keyword argument
engine_kwargs instead (GH40430)
* Deprecated the level keyword for DataFrame and Series aggregations; use
groupby instead (GH39983)
* Deprecated the inplace parameter of Categorical.remove_categories(),
Categorical.add_categories(), Categorical.reorder_categories(),
Categorical.rename_categories(), Categorical.set_categories() and will be
removed in a future version (GH37643)
* Deprecated merge() producing duplicated columns through the suffixes
keyword and already existing columns (GH22818)
* Deprecated setting Categorical._codes, create a new Categorical with the
desired codes instead (GH40606)
* Deprecated the convert_float optional argument in read_excel() and
ExcelFile.parse() (GH41127)
* Deprecated behavior of DatetimeIndex.union() with mixed timezones; in a
future version both will be cast to UTC instead of object dtype (GH39328)
* Deprecated using usecols with out of bounds indices for read_csv() with
engine="c" (GH25623)
* Deprecated special treatment of lists with first element a Categorical in
the DataFrame constructor; pass as pd.DataFrame({col: categorical, ...})
instead (GH38845)
* Deprecated behavior of DataFrame constructor when a dtype is passed and the
data cannot be cast to that dtype. In a future version, this will raise
instead of being silently ignored (GH24435)
* Deprecated the Timestamp.freq attribute. For the properties that use it (
is_month_start, is_month_end, is_quarter_start, is_quarter_end,
is_year_start, is_year_end), when you have a freq, use e.g.
freq.is_month_start(ts) (GH15146)
* Deprecated construction of Series or DataFrame with DatetimeTZDtype data
and datetime64[ns] dtype. Use Series(data).dt.tz_localize(None) instead (
GH41555, GH33401)
* Deprecated behavior of Series construction with large-integer values and
small-integer dtype silently overflowing; use Series(data).astype(dtype)
instead (GH41734)
* Deprecated behavior of DataFrame construction with floating data and
integer dtype casting even when lossy; in a future version this will remain
floating, matching Series behavior (GH41770)
* Deprecated inference of timedelta64[ns], datetime64[ns], or DatetimeTZDtype
dtypes in Series construction when data containing strings is passed and no
dtype is passed (GH33558)
* In a future version, constructing Series or DataFrame with datetime64[ns]
data and DatetimeTZDtype will treat the data as wall-times instead of as
UTC times (matching DatetimeIndex behavior). To treat the data as UTC
times, use pd.Series(data).dt.tz_localize("UTC").dt.tz_convert(dtype.tz) or
pd.Series(data.view("int64"), dtype=dtype) (GH33401)
* Deprecated passing lists as key to DataFrame.xs() and Series.xs() (GH41760)
* Deprecated boolean arguments of inclusive in Series.between() to have
{"left", "right", "neither", "both"} as standard argument values (GH40628)
* Deprecated passing arguments as positional for all of the following, with
exceptions noted (GH41485):
+ concat() (other than objs)
+ read_csv() (other than filepath_or_buffer)
+ read_table() (other than filepath_or_buffer)
+ DataFrame.clip() and Series.clip() (other than upper and lower)
+ DataFrame.drop_duplicates() (except for subset), Series.drop_duplicates
(), Index.drop_duplicates() and MultiIndex.drop_duplicates()
+ DataFrame.drop() (other than labels) and Series.drop()
+ DataFrame.dropna() and Series.dropna()
+ DataFrame.ffill(), Series.ffill(), DataFrame.bfill(), and Series.bfill
()
+ DataFrame.fillna() and Series.fillna() (apart from value)
+ DataFrame.interpolate() and Series.interpolate() (other than method)
+ DataFrame.mask() and Series.mask() (other than cond and other)
+ DataFrame.reset_index() (other than level) and Series.reset_index()
+ DataFrame.set_axis() and Series.set_axis() (other than labels)
+ DataFrame.set_index() (other than keys)
+ DataFrame.sort_index() and Series.sort_index()
+ DataFrame.sort_values() (other than by) and Series.sort_values()
+ DataFrame.where() and Series.where() (other than cond and other)
+ Index.set_names() and MultiIndex.set_names() (except for names)
+ MultiIndex.codes() (except for codes)
+ MultiIndex.set_levels() (except for levels)
+ Resampler.interpolate() (other than method)
-------------------------------------------------------------------------------
Performance improvements
* Performance improvement in IntervalIndex.isin() (GH38353)
* Performance improvement in Series.mean() for nullable data types (GH34814)
* Performance improvement in Series.isin() for nullable data types (GH38340)
* Performance improvement in DataFrame.fillna() with method="pad" or method=
"backfill" for nullable floating and nullable integer dtypes (GH39953)
* Performance improvement in DataFrame.corr() for method=kendall (GH28329)
* Performance improvement in DataFrame.corr() for method=spearman (GH40956,
GH41885)
* Performance improvement in Rolling.corr() and Rolling.cov() (GH39388)
* Performance improvement in RollingGroupby.corr(), ExpandingGroupby.corr(),
ExpandingGroupby.corr() and ExpandingGroupby.cov() (GH39591)
* Performance improvement in unique() for object data type (GH37615)
* Performance improvement in json_normalize() for basic cases (including
separators) (GH40035 GH15621)
* Performance improvement in ExpandingGroupby aggregation methods (GH39664)
* Performance improvement in Styler where render times are more than 50%
reduced and now matches DataFrame.to_html() (GH39972 GH39952, GH40425)
* The method Styler.set_td_classes() is now as performant as Styler.apply()
and Styler.applymap(), and even more so in some cases (GH40453)
* Performance improvement in ExponentialMovingWindow.mean() with times (
GH39784)
* Performance improvement in GroupBy.apply() when requiring the Python
fallback implementation (GH40176)
* Performance improvement in the conversion of a PyArrow Boolean array to a
pandas nullable Boolean array (GH41051)
* Performance improvement for concatenation of data with type
CategoricalDtype (GH40193)
* Performance improvement in GroupBy.cummin() and GroupBy.cummax() with
nullable data types (GH37493)
* Performance improvement in Series.nunique() with nan values (GH40865)
* Performance improvement in DataFrame.transpose(), Series.unstack() with
DatetimeTZDtype (GH40149)
* Performance improvement in Series.plot() and DataFrame.plot() with entry
point lazy loading (GH41492)
-------------------------------------------------------------------------------
Bug fixes
-------------------------------------------------------------------------------
Categorical
* Bug in CategoricalIndex incorrectly failing to raise TypeError when scalar
data is passed (GH38614)
* Bug in CategoricalIndex.reindex failed when the Index passed was not
categorical but whose values were all labels in the category (GH28690)
* Bug where constructing a Categorical from an object-dtype array of date
objects did not round-trip correctly with astype (GH38552)
* Bug in constructing a DataFrame from an ndarray and a CategoricalDtype (
GH38857)
* Bug in setting categorical values into an object-dtype column in a
DataFrame (GH39136)
* Bug in DataFrame.reindex() was raising an IndexError when the new index
contained duplicates and the old index was a CategoricalIndex (GH38906)
* Bug in Categorical.fillna() with a tuple-like category raising
NotImplementedError instead of ValueError when filling with a non-category
tuple (GH41914)
-------------------------------------------------------------------------------
Datetimelike
* Bug in DataFrame and Series constructors sometimes dropping nanoseconds
from Timestamp (resp. Timedelta) data, with dtype=datetime64[ns] (resp.
timedelta64[ns]) (GH38032)
* Bug in DataFrame.first() and Series.first() with an offset of one month
returning an incorrect result when the first day is the last day of a month
(GH29623)
* Bug in constructing a DataFrame or Series with mismatched datetime64 data
and timedelta64 dtype, or vice-versa, failing to raise a TypeError (GH38575
, GH38764, GH38792)
* Bug in constructing a Series or DataFrame with a datetime object out of
bounds for datetime64[ns] dtype or a timedelta object out of bounds for
timedelta64[ns] dtype (GH38792, GH38965)
* Bug in DatetimeIndex.intersection(), DatetimeIndex.symmetric_difference(),
PeriodIndex.intersection(), PeriodIndex.symmetric_difference() always
returning object-dtype when operating with CategoricalIndex (GH38741)
* Bug in DatetimeIndex.intersection() giving incorrect results with non-Tick
frequencies with n != 1 (GH42104)
* Bug in Series.where() incorrectly casting datetime64 values to int64 (
GH37682)
* Bug in Categorical incorrectly typecasting datetime object to Timestamp (
GH38878)
* Bug in comparisons between Timestamp object and datetime64 objects just
outside the implementation bounds for nanosecond datetime64 (GH39221)
* Bug in Timestamp.round(), Timestamp.floor(), Timestamp.ceil() for values
near the implementation bounds of Timestamp (GH39244)
* Bug in Timedelta.round(), Timedelta.floor(), Timedelta.ceil() for values
near the implementation bounds of Timedelta (GH38964)
* Bug in date_range() incorrectly creating DatetimeIndex containing NaT
instead of raising OutOfBoundsDatetime in corner cases (GH24124)
* Bug in infer_freq() incorrectly fails to infer 'H' frequency of
DatetimeIndex if the latter has a timezone and crosses DST boundaries (
GH39556)
* Bug in Series backed by DatetimeArray or TimedeltaArray sometimes failing
to set the array's freq to None (GH41425)
-------------------------------------------------------------------------------
Timedelta
* Bug in constructing Timedelta from np.timedelta64 objects with
non-nanosecond units that are out of bounds for timedelta64[ns] (GH38965)
* Bug in constructing a TimedeltaIndex incorrectly accepting np.datetime64
("NaT") objects (GH39462)
* Bug in constructing Timedelta from an input string with only symbols and no
digits failed to raise an error (GH39710)
* Bug in TimedeltaIndex and to_timedelta() failing to raise when passed
non-nanosecond timedelta64 arrays that overflow when converting to
timedelta64[ns] (GH40008)
-------------------------------------------------------------------------------
Timezones
* Bug in different tzinfo objects representing UTC not being treated as
equivalent (GH39216)
* Bug in dateutil.tz.gettz("UTC") not being recognized as equivalent to other
UTC-representing tzinfos (GH39276)
-------------------------------------------------------------------------------
Numeric
* Bug in DataFrame.quantile(), DataFrame.sort_values() causing incorrect
subsequent indexing behavior (GH38351)
* Bug in DataFrame.sort_values() raising an IndexError for empty by (GH40258)
* Bug in DataFrame.select_dtypes() with include=np.number would drop numeric
ExtensionDtype columns (GH35340)
* Bug in DataFrame.mode() and Series.mode() not keeping consistent integer
Index for empty input (GH33321)
* Bug in DataFrame.rank() when the DataFrame contained np.inf (GH32593)
* Bug in DataFrame.rank() with axis=0 and columns holding incomparable types
raising an IndexError (GH38932)
* Bug in Series.rank(), DataFrame.rank(), and GroupBy.rank() treating the
most negative int64 value as missing (GH32859)
* Bug in DataFrame.select_dtypes() different behavior between Windows and
Linux with include="int" (GH36596)
* Bug in DataFrame.apply() and DataFrame.agg() when passed the argument func=
"size" would operate on the entire DataFrame instead of rows or columns (
GH39934)
* Bug in DataFrame.transform() would raise a SpecificationError when passed a
dictionary and columns were missing; will now raise a KeyError instead (
GH40004)
* Bug in GroupBy.rank() giving incorrect results with pct=True and equal
values between consecutive groups (GH40518)
* Bug in Series.count() would result in an int32 result on 32-bit platforms
when argument level=None (GH40908)
* Bug in Series and DataFrame reductions with methods any and all not
returning Boolean results for object data (GH12863, GH35450, GH27709)
* Bug in Series.clip() would fail if the Series contains NA values and has
nullable int or float as a data type (GH40851)
* Bug in UInt64Index.where() and UInt64Index.putmask() with an np.int64 dtype
other incorrectly raising TypeError (GH41974)
* Bug in DataFrame.agg() not sorting the aggregated axis in the order of the
provided aggregation functions when one or more aggregation function fails
to produce results (GH33634)
* Bug in DataFrame.clip() not interpreting missing values as no threshold (
GH40420)
-------------------------------------------------------------------------------
Conversion
* Bug in Series.to_dict() with orient='records' now returns Python native
types (GH25969)
* Bug in Series.view() and Index.view() when converting between datetime-like
(datetime64[ns], datetime64[ns, tz], timedelta64, period) dtypes (GH39788)
* Bug in creating a DataFrame from an empty np.recarray not retaining the
original dtypes (GH40121)
* Bug in DataFrame failing to raise a TypeError when constructing from a
frozenset (GH40163)
* Bug in Index construction silently ignoring a passed dtype when the data
cannot be cast to that dtype (GH21311)
* Bug in StringArray.astype() falling back to NumPy and raising when
converting to dtype='categorical' (GH40450)
* Bug in factorize() where, when given an array with a numeric NumPy dtype
lower than int64, uint64 and float64, the unique values did not keep their
original dtype (GH41132)
* Bug in DataFrame construction with a dictionary containing an array-like
with ExtensionDtype and copy=True failing to make a copy (GH38939)
* Bug in qcut() raising error when taking Float64DType as input (GH40730)
* Bug in DataFrame and Series construction with datetime64[ns] data and dtype
=object resulting in datetime objects instead of Timestamp objects (GH41599
)
* Bug in DataFrame and Series construction with timedelta64[ns] data and
dtype=object resulting in np.timedelta64 objects instead of Timedelta
objects (GH41599)
* Bug in DataFrame construction when given a two-dimensional object-dtype
np.ndarray of Period or Interval objects failing to cast to PeriodDtype or
IntervalDtype, respectively (GH41812)
* Bug in constructing a Series from a list and a PandasDtype (GH39357)
* Bug in creating a Series from a range object that does not fit in the
bounds of int64 dtype (GH30173)
* Bug in creating a Series from a dict with all-tuple keys and an Index that
requires reindexing (GH41707)
* Bug in infer_dtype() not recognizing Series, Index, or array with a Period
dtype (GH23553)
* Bug in infer_dtype() raising an error for general ExtensionArray objects.
It will now return "unknown-array" instead of raising (GH37367)
* Bug in DataFrame.convert_dtypes() incorrectly raised a ValueError when
called on an empty DataFrame (GH40393)
-------------------------------------------------------------------------------
Strings
* Bug in the conversion from pyarrow.ChunkedArray to StringArray when the
original had zero chunks (GH41040)
* Bug in Series.replace() and DataFrame.replace() ignoring replacements with
regex=True for StringDType data (GH41333, GH35977)
* Bug in Series.str.extract() with StringArray returning object dtype for an
empty DataFrame (GH41441)
* Bug in Series.str.replace() where the case argument was ignored when regex=
False (GH41602)
-------------------------------------------------------------------------------
Interval
* Bug in IntervalIndex.intersection() and IntervalIndex.symmetric_difference
() always returning object-dtype when operating with CategoricalIndex (
GH38653, GH38741)
* Bug in IntervalIndex.intersection() returning duplicates when at least one
of the Index objects have duplicates which are present in the other (
GH38743)
* IntervalIndex.union(), IntervalIndex.intersection(),
IntervalIndex.difference(), and IntervalIndex.symmetric_difference() now
cast to the appropriate dtype instead of raising a TypeError when operating
with another IntervalIndex with incompatible dtype (GH39267)
* PeriodIndex.union(), PeriodIndex.intersection(),
PeriodIndex.symmetric_difference(), PeriodIndex.difference() now cast to
object dtype instead of raising IncompatibleFrequency when operating with
another PeriodIndex with incompatible dtype (GH39306)
* Bug in IntervalIndex.is_monotonic(), IntervalIndex.get_loc(),
IntervalIndex.get_indexer_for(), and IntervalIndex.__contains__() when NA
values are present (GH41831)
-------------------------------------------------------------------------------
Indexing
* Bug in Index.union() and MultiIndex.union() dropping duplicate Index values
when Index was not monotonic or sort was set to False (GH36289, GH31326,
GH40862)
* Bug in CategoricalIndex.get_indexer() failing to raise InvalidIndexError
when non-unique (GH38372)
* Bug in IntervalIndex.get_indexer() when target has CategoricalDtype and
both the index and the target contain NA values (GH41934)
* Bug in Series.loc() raising a ValueError when input was filtered with a
Boolean list and values to set were a list with lower dimension (GH20438)
* Bug in inserting many new columns into a DataFrame causing incorrect
subsequent indexing behavior (GH38380)
* Bug in DataFrame.__setitem__() raising a ValueError when setting multiple
values to duplicate columns (GH15695)
* Bug in DataFrame.loc(), Series.loc(), DataFrame.__getitem__() and
Series.__getitem__() returning incorrect elements for non-monotonic
DatetimeIndex for string slices (GH33146)
* Bug in DataFrame.reindex() and Series.reindex() with timezone aware indexes
raising a TypeError for method="ffill" and method="bfill" and specified
tolerance (GH38566)
* Bug in DataFrame.reindex() with datetime64[ns] or timedelta64[ns]
incorrectly casting to integers when the fill_value requires casting to
object dtype (GH39755)
* Bug in DataFrame.__setitem__() raising a ValueError when setting on an
empty DataFrame using specified columns and a nonempty DataFrame value (
GH38831)
* Bug in DataFrame.loc.__setitem__() raising a ValueError when operating on a
unique column when the DataFrame has duplicate columns (GH38521)
* Bug in DataFrame.iloc.__setitem__() and DataFrame.loc.__setitem__() with
mixed dtypes when setting with a dictionary value (GH38335)
* Bug in Series.loc.__setitem__() and DataFrame.loc.__setitem__() raising
KeyError when provided a Boolean generator (GH39614)
* Bug in Series.iloc() and DataFrame.iloc() raising a KeyError when provided
a generator (GH39614)
* Bug in DataFrame.__setitem__() not raising a ValueError when the right hand
side is a DataFrame with wrong number of columns (GH38604)
* Bug in Series.__setitem__() raising a ValueError when setting a Series with
a scalar indexer (GH38303)
* Bug in DataFrame.loc() dropping levels of a MultiIndex when the DataFrame
used as input has only one row (GH10521)
* Bug in DataFrame.__getitem__() and Series.__getitem__() always raising
KeyError when slicing with existing strings where the Index has
milliseconds (GH33589)
* Bug in setting timedelta64 or datetime64 values into numeric Series failing
to cast to object dtype (GH39086, GH39619)
* Bug in setting Interval values into a Series or DataFrame with mismatched
IntervalDtype incorrectly casting the new values to the existing dtype (
GH39120)
* Bug in setting datetime64 values into a Series with integer-dtype
incorrectly casting the datetime64 values to integers (GH39266)
* Bug in setting np.datetime64("NaT") into a Series with Datetime64TZDtype
incorrectly treating the timezone-naive value as timezone-aware (GH39769)
* Bug in Index.get_loc() not raising KeyError when key=NaN and method is
specified but NaN is not in the Index (GH39382)
* Bug in DatetimeIndex.insert() when inserting np.datetime64("NaT") into a
timezone-aware index incorrectly treating the timezone-naive value as
timezone-aware (GH39769)
* Bug in incorrectly raising in Index.insert(), when setting a new column
that cannot be held in the existing frame.columns, or in Series.reset_index
() or DataFrame.reset_index() instead of casting to a compatible dtype (
GH39068)
* Bug in RangeIndex.append() where a single object of length 1 was
concatenated incorrectly (GH39401)
* Bug in RangeIndex.astype() where when converting to CategoricalIndex, the
categories became a Int64Index instead of a RangeIndex (GH41263)
* Bug in setting numpy.timedelta64 values into an object-dtype Series using a
Boolean indexer (GH39488)
* Bug in setting numeric values into a into a boolean-dtypes Series using at
or iat failing to cast to object-dtype (GH39582)
* Bug in DataFrame.__setitem__() and DataFrame.iloc.__setitem__() raising
ValueError when trying to index with a row-slice and setting a list as
values (GH40440)
* Bug in DataFrame.loc() not raising KeyError when the key was not found in
MultiIndex and the levels were not fully specified (GH41170)
* Bug in DataFrame.loc.__setitem__() when setting-with-expansion incorrectly
raising when the index in the expanding axis contained duplicates (GH40096)
* Bug in DataFrame.loc.__getitem__() with MultiIndex casting to float when at
least one index column has float dtype and we retrieve a scalar (GH41369)
* Bug in DataFrame.loc() incorrectly matching non-Boolean index elements (
GH20432)
* Bug in indexing with np.nan on a Series or DataFrame with a
CategoricalIndex incorrectly raising KeyError when np.nan keys are present
(GH41933)
* Bug in Series.__delitem__() with ExtensionDtype incorrectly casting to
ndarray (GH40386)
* Bug in DataFrame.at() with a CategoricalIndex returning incorrect results
when passed integer keys (GH41846)
* Bug in DataFrame.loc() returning a MultiIndex in the wrong order if an
indexer has duplicates (GH40978)
* Bug in DataFrame.__setitem__() raising a TypeError when using a str
subclass as the column name with a DatetimeIndex (GH37366)
* Bug in PeriodIndex.get_loc() failing to raise a KeyError when given a
Period with a mismatched freq (GH41670)
* Bug .loc.__getitem__ with a UInt64Index and negative-integer keys raising
OverflowError instead of KeyError in some cases, wrapping around to
positive integers in others (GH41777)
* Bug in Index.get_indexer() failing to raise ValueError in some cases with
invalid method, limit, or tolerance arguments (GH41918)
* Bug when slicing a Series or DataFrame with a TimedeltaIndex when passing
an invalid string raising ValueError instead of a TypeError (GH41821)
* Bug in Index constructor sometimes silently ignoring a specified dtype (
GH38879)
* Index.where() behavior now mirrors Index.putmask() behavior, i.e.
index.where(mask, other) matches index.putmask(~mask, other) (GH39412)
-------------------------------------------------------------------------------
Missing
* Bug in Grouper did not correctly propagate the dropna argument;
DataFrameGroupBy.transform() now correctly handles missing values for
dropna=True (GH35612)
* Bug in isna(), Series.isna(), Index.isna(), DataFrame.isna(), and the
corresponding notna functions not recognizing Decimal("NaN") objects (
GH39409)
* Bug in DataFrame.fillna() not accepting a dictionary for the downcast
keyword (GH40809)
* Bug in isna() not returning a copy of the mask for nullable types, causing
any subsequent mask modification to change the original array (GH40935)
* Bug in DataFrame construction with float data containing NaN and an integer
dtype casting instead of retaining the NaN (GH26919)
* Bug in Series.isin() and MultiIndex.isin() didn't treat all nans as
equivalent if they were in tuples (GH41836)
-------------------------------------------------------------------------------
MultiIndex
* Bug in DataFrame.drop() raising a TypeError when the MultiIndex is
non-unique and level is not provided (GH36293)
* Bug in MultiIndex.intersection() duplicating NaN in the result (GH38623)
* Bug in MultiIndex.equals() incorrectly returning True when the MultiIndex
contained NaN even when they are differently ordered (GH38439)
* Bug in MultiIndex.intersection() always returning an empty result when
intersecting with CategoricalIndex (GH38653)
* Bug in MultiIndex.difference() incorrectly raising TypeError when indexes
contain non-sortable entries (GH41915)
* Bug in MultiIndex.reindex() raising a ValueError when used on an empty
MultiIndex and indexing only a specific level (GH41170)
* Bug in MultiIndex.reindex() raising TypeError when reindexing against a
flat Index (GH41707)
-------------------------------------------------------------------------------
I/O
* Bug in Index.__repr__() when display.max_seq_items=1 (GH38415)
* Bug in read_csv() not recognizing scientific notation if the argument
decimal is set and engine="python" (GH31920)
* Bug in read_csv() interpreting NA value as comment, when NA does contain
the comment string fixed for engine="python" (GH34002)
* Bug in read_csv() raising an IndexError with multiple header columns and
index_col is specified when the file has no data rows (GH38292)
* Bug in read_csv() not accepting usecols with a different length than names
for engine="python" (GH16469)
* Bug in read_csv() returning object dtype when delimiter="," with usecols
and parse_dates specified for engine="python" (GH35873)
* Bug in read_csv() raising a TypeError when names and parse_dates is
specified for engine="c" (GH33699)
* Bug in read_clipboard() and DataFrame.to_clipboard() not working in WSL (
GH38527)
* Allow custom error values for the parse_dates argument of read_sql(),
read_sql_query() and read_sql_table() (GH35185)
* Bug in DataFrame.to_hdf() and Series.to_hdf() raising a KeyError when
trying to apply for subclasses of DataFrame or Series (GH33748)
* Bug in HDFStore.put() raising a wrong TypeError when saving a DataFrame
with non-string dtype (GH34274)
* Bug in json_normalize() resulting in the first element of a generator
object not being included in the returned DataFrame (GH35923)
* Bug in read_csv() applying the thousands separator to date columns when the
column should be parsed for dates and usecols is specified for engine=
"python" (GH39365)
* Bug in read_excel() forward filling MultiIndex names when multiple header
and index columns are specified (GH34673)
* Bug in read_excel() not respecting set_option() (GH34252)
* Bug in read_csv() not switching true_values and false_values for nullable
Boolean dtype (GH34655)
* Bug in read_json() when orient="split" not maintaining a numeric string
index (GH28556)
* read_sql() returned an empty generator if chunksize was non-zero and the
query returned no results. Now returns a generator with a single empty
DataFrame (GH34411)
* Bug in read_hdf() returning unexpected records when filtering on
categorical string columns using the where parameter (GH39189)
* Bug in read_sas() raising a ValueError when datetimes were null (GH39725)
* Bug in read_excel() dropping empty values from single-column spreadsheets (
GH39808)
* Bug in read_excel() loading trailing empty rows/columns for some filetypes
(GH41167)
* Bug in read_excel() raising an AttributeError when the excel file had a
MultiIndex header followed by two empty rows and no index (GH40442)
* Bug in read_excel(), read_csv(), read_table(), read_fwf(), and
read_clipboard() where one blank row after a MultiIndex header with no
index would be dropped (GH40442)
* Bug in DataFrame.to_string() misplacing the truncation column when index=
False (GH40904)
* Bug in DataFrame.to_string() adding an extra dot and misaligning the
truncation row when index=False (GH40904)
* Bug in read_orc() always raising an AttributeError (GH40918)
* Bug in read_csv() and read_table() silently ignoring prefix if names and
prefix are defined, now raising a ValueError (GH39123)
* Bug in read_csv() and read_excel() not respecting the dtype for a
duplicated column name when mangle_dupe_cols is set to True (GH35211)
* Bug in read_csv() silently ignoring sep if delimiter and sep are defined,
now raising a ValueError (GH39823)
* Bug in read_csv() and read_table() misinterpreting arguments when
sys.setprofile had been previously called (GH41069)
* Bug in the conversion from PyArrow to pandas (e.g. for reading Parquet)
with nullable dtypes and a PyArrow array whose data buffer size is not a
multiple of the dtype size (GH40896)
* Bug in read_excel() would raise an error when pandas could not determine
the file type even though the user specified the engine argument (GH41225)
* Bug in read_clipboard() copying from an excel file shifts values into the
wrong column if there are null values in first column (GH41108)
* Bug in DataFrame.to_hdf() and Series.to_hdf() raising a TypeError when
trying to append a string column to an incompatible column (GH41897)
-------------------------------------------------------------------------------
Period
* Comparisons of Period objects or Index, Series, or DataFrame with
mismatched PeriodDtype now behave like other mismatched-type comparisons,
returning False for equals, True for not-equal, and raising TypeError for
inequality checks (GH39274)
-------------------------------------------------------------------------------
Plotting
* Bug in plotting.scatter_matrix() raising when 2d ax argument passed (
GH16253)
* Prevent warnings when Matplotlib's constrained_layout is enabled (GH25261)
* Bug in DataFrame.plot() was showing the wrong colors in the legend if the
function was called repeatedly and some calls used yerr while others didn
t (GH39522)
* Bug in DataFrame.plot() was showing the wrong colors in the legend if the
function was called repeatedly and some calls used secondary_y and others
use legend=False (GH40044)
* Bug in DataFrame.plot.box() when dark_background theme was selected, caps
or min/max markers for the plot were not visible (GH40769)
-------------------------------------------------------------------------------
Groupby/resample/rolling
* Bug in GroupBy.agg() with PeriodDtype columns incorrectly casting results
too aggressively (GH38254)
* Bug in SeriesGroupBy.value_counts() where unobserved categories in a
grouped categorical Series were not tallied (GH38672)
* Bug in SeriesGroupBy.value_counts() where an error was raised on an empty
Series (GH39172)
* Bug in GroupBy.indices() would contain non-existent indices when null
values were present in the groupby keys (GH9304)
* Fixed bug in GroupBy.sum() causing a loss of precision by now using Kahan
summation (GH38778)
* Fixed bug in GroupBy.cumsum() and GroupBy.mean() causing loss of precision
through using Kahan summation (GH38934)
* Bug in Resampler.aggregate() and DataFrame.transform() raising a TypeError
instead of SpecificationError when missing keys had mixed dtypes (GH39025)
* Bug in DataFrameGroupBy.idxmin() and DataFrameGroupBy.idxmax() with
ExtensionDtype columns (GH38733)
* Bug in Series.resample() would raise when the index was a PeriodIndex
consisting of NaT (GH39227)
* Bug in RollingGroupby.corr() and ExpandingGroupby.corr() where the groupby
column would return 0 instead of np.nan when providing other that was
longer than each group (GH39591)
* Bug in ExpandingGroupby.corr() and ExpandingGroupby.cov() where 1 would be
returned instead of np.nan when providing other that was longer than each
group (GH39591)
* Bug in GroupBy.mean(), GroupBy.median() and DataFrame.pivot_table() not
propagating metadata (GH28283)
* Bug in Series.rolling() and DataFrame.rolling() not calculating window
bounds correctly when window is an offset and dates are in descending order
(GH40002)
* Bug in Series.groupby() and DataFrame.groupby() on an empty Series or
DataFrame would lose index, columns, and/or data types when directly using
the methods idxmax, idxmin, mad, min, max, sum, prod, and skew or using
them through apply, aggregate, or resample (GH26411)
* Bug in GroupBy.apply() where a MultiIndex would be created instead of an
Index when used on a RollingGroupby object (GH39732)
* Bug in DataFrameGroupBy.sample() where an error was raised when weights was
specified and the index was an Int64Index (GH39927)
* Bug in DataFrameGroupBy.aggregate() and Resampler.aggregate() would
sometimes raise a SpecificationError when passed a dictionary and columns
were missing; will now always raise a KeyError instead (GH40004)
* Bug in DataFrameGroupBy.sample() where column selection was not applied
before computing the result (GH39928)
* Bug in ExponentialMovingWindow when calling __getitem__ would incorrectly
raise a ValueError when providing times (GH40164)
* Bug in ExponentialMovingWindow when calling __getitem__ would not retain
com, span, alpha or halflife attributes (GH40164)
* ExponentialMovingWindow now raises a NotImplementedError when specifying
times with adjust=False due to an incorrect calculation (GH40098)
* Bug in ExponentialMovingWindowGroupby.mean() where the times argument was
ignored when engine='numba' (GH40951)
* Bug in ExponentialMovingWindowGroupby.mean() where the wrong times were
used the in case of multiple groups (GH40951)
* Bug in ExponentialMovingWindowGroupby where the times vector and values
became out of sync for non-trivial groups (GH40951)
* Bug in Series.asfreq() and DataFrame.asfreq() dropping rows when the index
was not sorted (GH39805)
* Bug in aggregation functions for DataFrame not respecting numeric_only
argument when level keyword was given (GH40660)
* Bug in SeriesGroupBy.aggregate() where using a user-defined function to
aggregate a Series with an object-typed Index causes an incorrect Index
shape (GH40014)
* Bug in RollingGroupby where as_index=False argument in groupby was ignored
(GH39433)
* Bug in GroupBy.any() and GroupBy.all() raising a ValueError when using with
nullable type columns holding NA even with skipna=True (GH40585)
* Bug in GroupBy.cummin() and GroupBy.cummax() incorrectly rounding integer
values near the int64 implementations bounds (GH40767)
* Bug in GroupBy.rank() with nullable dtypes incorrectly raising a TypeError
(GH41010)
* Bug in GroupBy.cummin() and GroupBy.cummax() computing wrong result with
nullable data types too large to roundtrip when casting to float (GH37493)
* Bug in DataFrame.rolling() returning mean zero for all NaN window with
min_periods=0 if calculation is not numerical stable (GH41053)
* Bug in DataFrame.rolling() returning sum not zero for all NaN window with
min_periods=0 if calculation is not numerical stable (GH41053)
* Bug in SeriesGroupBy.agg() failing to retain ordered CategoricalDtype on
order-preserving aggregations (GH41147)
* Bug in GroupBy.min() and GroupBy.max() with multiple object-dtype columns
and numeric_only=False incorrectly raising a ValueError (GH41111)
* Bug in DataFrameGroupBy.rank() with the GroupBy object's axis=0 and the
rank method's keyword axis=1 (GH41320)
* Bug in DataFrameGroupBy.__getitem__() with non-unique columns incorrectly
returning a malformed SeriesGroupBy instead of DataFrameGroupBy (GH41427)
* Bug in DataFrameGroupBy.transform() with non-unique columns incorrectly
raising an AttributeError (GH41427)
* Bug in Resampler.apply() with non-unique columns incorrectly dropping
duplicated columns (GH41445)
* Bug in Series.groupby() aggregations incorrectly returning empty Series
instead of raising TypeError on aggregations that are invalid for its
dtype, e.g. .prod with datetime64[ns] dtype (GH41342)
* Bug in DataFrameGroupBy aggregations incorrectly failing to drop columns
with invalid dtypes for that aggregation when there are no valid columns (
GH41291)
* Bug in DataFrame.rolling.__iter__() where on was not assigned to the index
of the resulting objects (GH40373)
* Bug in DataFrameGroupBy.transform() and DataFrameGroupBy.agg() with engine=
"numba" where *args were being cached with the user passed function (
GH41647)
* Bug in DataFrameGroupBy methods agg, transform, sum, bfill, ffill, pad,
pct_change, shift, ohlc dropping .columns.names (GH41497)
-------------------------------------------------------------------------------
Reshaping
* Bug in merge() raising error when performing an inner join with partial
index and right_index=True when there was no overlap between indices (
GH33814)
* Bug in DataFrame.unstack() with missing levels led to incorrect index names
(GH37510)
* Bug in merge_asof() propagating the right Index with left_index=True and
right_on specification instead of left Index (GH33463)
* Bug in DataFrame.join() on a DataFrame with a MultiIndex returned the wrong
result when one of both indexes had only one level (GH36909)
* merge_asof() now raises a ValueError instead of a cryptic TypeError in case
of non-numerical merge columns (GH29130)
* Bug in DataFrame.join() not assigning values correctly when the DataFrame
had a MultiIndex where at least one dimension had dtype Categorical with
non-alphabetically sorted categories (GH38502)
* Series.value_counts() and Series.mode() now return consistent keys in
original order (GH12679, GH11227 and GH39007)
* Bug in DataFrame.stack() not handling NaN in MultiIndex columns correctly (
GH39481)
* Bug in DataFrame.apply() would give incorrect results when the argument
func was a string, axis=1, and the axis argument was not supported; now
raises a ValueError instead (GH39211)
* Bug in DataFrame.sort_values() not reshaping the index correctly after
sorting on columns when ignore_index=True (GH39464)
* Bug in DataFrame.append() returning incorrect dtypes with combinations of
ExtensionDtype dtypes (GH39454)
* Bug in DataFrame.append() returning incorrect dtypes when used with
combinations of datetime64 and timedelta64 dtypes (GH39574)
* Bug in DataFrame.append() with a DataFrame with a MultiIndex and appending
a Series whose Index is not a MultiIndex (GH41707)
* Bug in DataFrame.pivot_table() returning a MultiIndex for a single value
when operating on an empty DataFrame (GH13483)
* Index can now be passed to the numpy.all() function (GH40180)
* Bug in DataFrame.stack() not preserving CategoricalDtype in a MultiIndex (
GH36991)
* Bug in to_datetime() raising an error when the input sequence contained
unhashable items (GH39756)
* Bug in Series.explode() preserving the index when ignore_index was True and
values were scalars (GH40487)
* Bug in to_datetime() raising a ValueError when Series contains None and NaT
and has more than 50 elements (GH39882)
* Bug in Series.unstack() and DataFrame.unstack() with object-dtype values
containing timezone-aware datetime objects incorrectly raising TypeError (
GH41875)
* Bug in DataFrame.melt() raising InvalidIndexError when DataFrame has
duplicate columns used as value_vars (GH41951)
-------------------------------------------------------------------------------
Sparse
* Bug in DataFrame.sparse.to_coo() raising a KeyError with columns that are a
numeric Index without a 0 (GH18414)
* Bug in SparseArray.astype() with copy=False producing incorrect results
when going from integer dtype to floating dtype (GH34456)
* Bug in SparseArray.max() and SparseArray.min() would always return an empty
result (GH40921)
-------------------------------------------------------------------------------
ExtensionArray
* Bug in DataFrame.where() when other is a Series with an ExtensionDtype (
GH38729)
* Fixed bug where Series.idxmax(), Series.idxmin(), Series.argmax(), and
Series.argmin() would fail when the underlying data is an ExtensionArray (
GH32749, GH33719, GH36566)
* Fixed bug where some properties of subclasses of PandasExtensionDtype where
improperly cached (GH40329)
* Bug in DataFrame.mask() where masking a DataFrame with an ExtensionDtype
raises a ValueError (GH40941)
-------------------------------------------------------------------------------
Styler
* Bug in Styler where the subset argument in methods raised an error for some
valid MultiIndex slices (GH33562)
* Styler rendered HTML output has seen minor alterations to support w3 good
code standards (GH39626)
* Bug in Styler where rendered HTML was missing a column class identifier for
certain header cells (GH39716)
* Bug in Styler.background_gradient() where text-color was not determined
correctly (GH39888)
* Bug in Styler.set_table_styles() where multiple elements in CSS-selectors
of the table_styles argument were not correctly added (GH34061)
* Bug in Styler where copying from Jupyter dropped the top left cell and
misaligned headers (GH12147)
* Bug in Styler.where where kwargs were not passed to the applicable callable
(GH40845)
* Bug in Styler causing CSS to duplicate on multiple renders (GH39395,
GH40334)
-------------------------------------------------------------------------------
Other
* inspect.getmembers(Series) no longer raises an AbstractMethodError (GH38782
)
* Bug in Series.where() with numeric dtype and other=None not casting to nan
(GH39761)
* Bug in assert_series_equal(), assert_frame_equal(), assert_index_equal()
and assert_extension_array_equal() incorrectly raising when an attribute
has an unrecognized NA type (GH39461)
* Bug in assert_index_equal() with exact=True not raising when comparing
CategoricalIndex instances with Int64Index and RangeIndex categories (
GH41263)
* Bug in DataFrame.equals(), Series.equals(), and Index.equals() with
object-dtype containing np.datetime64("NaT") or np.timedelta64("NaT") (
GH39650)
* Bug in show_versions() where console JSON output was not proper JSON (
GH39701)
* pandas can now compile on z/OS when using xlc (GH35826)
* Bug in pandas.util.hash_pandas_object() not recognizing hash_key, encoding
and categorize when the input object type is a DataFrame (GH41404)
What's new in 1.2.5 (June 22, 2021)
These are the changes in pandas 1.2.5. See Release notes for a full changelog
including other versions of pandas.
-------------------------------------------------------------------------------
Fixed regressions
* Fixed regression in concat() between two DataFrame where one has an Index
that is all-None and the other is DatetimeIndex incorrectly raising (
GH40841)
* Fixed regression in DataFrame.sum() and DataFrame.prod() when min_count and
numeric_only are both given (GH41074)
* Fixed regression in read_csv() when using memory_map=True with an non-UTF8
encoding (GH40986)
* Fixed regression in DataFrame.replace() and Series.replace() when the
values to replace is a NumPy float array (GH40371)
* Fixed regression in ExcelFile() when a corrupt file is opened but not
closed (GH41778)
* Fixed regression in DataFrame.astype() with dtype=str failing to convert
NaN in categorical columns (GH41797)
Changes:
- show binary conversion output in octets for readability
- handle ^D
- quit program or 'exit' or 'quit'
- fix broken terminal with calc as backend on "undefined input" (#36)
1.9
Highlights
The internal implementation of Matrix and other matrix classes (SparseMatrix etc) is now DomainMatrix. The ZZ and QQ domains are used for matrices with only integer or rational elements. Otherwise the new EXRAW domain is used. This should be backwards compatible although many internal methods and attributes are changed. At the time of this change the DomainMatrix routines are only used for addition and multiplication of matrices and some other simple low-level operations. Further changes will use DomainMatrix routines for operations like rref, det, lu etc and are expected to lead to big speedups for these computations. At this stage those big speedups are not realised but some basic operations such as indexing a matrix like M[0, 0] could potentially be slower. The new implementation can be much faster for most operations and is expected to lead to significant speed ups over the next few SymPy releases.
Leading term methods now raise PoleError at singularities. There was a long-standing issue of incorrect handling of leading term at singularities, where earlier, for compatibility reasons, the original expression itself was incorrectly returned. exp(1/x).as_leading_term(x) returned exp(1/x), but it does not have any leading term as x->0, so an error must be raised. Note that leadterm used to throw a ValueError even in the previous implementation as the original expression depends on the symbol x. A few examples of functions where this change would be visible - Pow, exp, log, factorial and gamma.
Version 2.16
Fixed a ValueError raised in the excerpt command when an ephemeris segment needs to be entirely skipped because it has no overlap with the user-specified range of dates.
Added a __version__ constant to the package’s top level.
Upstream changes:
1.999827 2021-10-03
* Improve error message for missing library argument.
* Skip tests that don't work on older Perls. Also skip tests that compare
floating point numbers.
1.999826 2021-10-01
* Improve documentation related to floating point literals.
* Skip tests that fail due to Perl's broken handling of floating point literals
before v5.32.0.
Version 1.0.3 Release Notes (October 14, 2021)
==============================================
Potentially breaking change:
- argument ``x`` is now required for the ``guess`` method of Models
To get reasonable estimates for starting values one should always supply both ``x`` and ``y`` values; in some cases it would work
when only providing ``data`` (i.e., y-values). With the change above, ``x`` is now required in the ``guess`` method call, so scripts might
need to be updated to explicitly supply ``x``.
Bug fixes/enhancements:
- do not overwrite user-specified figure titles in Model.plot() functions and allow setting with ``title`` keyword argument
- preserve Parameters subclass in deepcopy
- coerce ``data`` and ``indepdent_vars`` to NumPy array with ``dtype=float64`` or ``dtype=complex128`` where applicable
- fix collision between parameter names in built-in models and user-specified parameters
- correct error message in PolynomialModel
- improved handling of altered JSON data
- map ``max_nfev`` to ``maxiter`` when using ``differential_evolution``
- correct use of noise versus experimental uncertainty in the documentation
- specify return type of ``eval`` method more precisely and allow for plotting of (Complex)ConstantModel by coercing their
``float``, ``int``, or ``complex`` return value to a ``numpy.ndarray``
- fix ``dho`` (Damped Harmonic Oscillator) lineshape
- reset ``Minimizer._abort`` to ``False`` before starting a new fit
- fix typo in ``guess_from_peak2d``
Various:
- update asteval dependency to >= 0.9.22 to avoid DeprecationWarnings from NumPy v1.20.0
- remove incorrectly spelled ``DonaichModel`` and ``donaich`` lineshape, deprecated in version 1.0.1
- remove occurrences of OrderedDict throughout the code; dict is order-preserving since Python 3.6
- update the contributing instructions
- (again) defer import of matplotlib to when it is needed
- fix description of ``name`` argument in ``Parameters.add``
- update dependencies, make sure a functional development environment is installed on Windows
- use ``setuptools_scm`` for version info instead of ``versioneer``
- transition to using ``f-strings``
- mark ``test_manypeaks_speed.py`` as flaky to avoid intermittent test failures
- update scipy dependency to >= 1.14.0
- improvement to output of examples in sphinx-gallery and use higher resolution figures
- remove deprecated functions ``lmfit.printfuncs.report_errors`` and ``asteval`` argument in ``Parameters`` class
.. _whatsnew_102_label:
Version 1.0.2 Release Notes (February 7, 2021)
==============================================
Version 1.0.2 officially supports Python 3.9 and has dropped support for Python 3.5. The minimum version
of the following dependencies were updated: asteval>=0.9.21, numpy>=1.18, and scipy>=1.3.
New features:
- added two-dimensional Gaussian lineshape and model
- all built-in models are now registered in ``lmfit.models.lmfit_models``; new Model class attribute ``valid_forms``
- added a SineModel
- add the ``run_mcmc_kwargs argument`` to ``Minimizer.emcee`` to pass to the ``emcee.EnsembleSampler.run_mcmc`` function
Bug fixes:
- ``ModelResult.eval_uncertainty`` should use provided Parameters
- center in lognormal model can be negative
- restore best-fit values after calculation of covariance matrix
- add helper-function ``not_zero`` to prevent ZeroDivisionError in lineshapes and use in exponential lineshape
- save ``last_internal_values`` and use to restore internal values if fit is aborted
- dumping a fit using the ``lbfgsb`` method now works, convert bytes to string if needed
- fix use of callable Jacobian for scalar methods
- preserve float/int types when encoding for JSON
- better support for saving/loading of ExpressionModels and assure that ``init_params`` and ``init_fit`` are set when loading a ``ModelResult``
Various:
- update minimum dependencies
- improvements in coding style, docstrings, CI, and test coverage
- fix typo in Oscillator
- add example using SymPy
- allow better custom pool for emcee()
- update NIST Strd reference functions and tests
- make building of documentation cross-platform
- relax module name check in ``test_check_ast_errors`` for Python 3.9
- fix/update layout of documentation, now uses the sphinx13 theme
- fixed DeprecationWarnings reported by NumPy v1.2.0
- increase value of ``tiny`` and check for it in bounded parameters to avoid "parameter not moving from initial value"
- add ``max_nfev`` to ``basinhopping`` and ``brute`` (now supported everywhere in lmfit) and set to more uniform default values
- use Azure Pipelines for CI, drop Travis
SciPy 1.7.2 is a bug-fix release with no new features
compared to 1.7.1. Notably, the release includes wheels
for Python 3.10, and wheels are now built with a newer
version of OpenBLAS, 0.3.17. Python 3.10 wheels are provided
for MacOS x86_64 (thin, not universal2 or arm64 at this time),
and Windows/Linux 64-bit. Many wheels are now built with newer
versions of manylinux, which may require newer versions of pip.
The NumPy 1.21.4 is a maintenance release that fixes a few bugs
discovered after 1.21.3. The most important fix here is a fix for the
NumPy header files to make them work for both x86_64 and M1 hardware
when included in the Mac universal2 wheels. Previously, the header files
only worked for M1 and this caused problems for folks building x86_64
extensions. This problem was not seen before Python 3.10 because there
were thin wheels for x86_64 that had precedence. This release also
provides thin x86_64 Mac wheels for Python 3.10.
Upstream changes:
CHANGES IN R 4.1.2:
C-LEVEL FACILITIES:
* The workaround in headers R.h and Rmath.h (using namespace std;)
for the Oracle Developer Studio compiler is no longer needed now
C++11 is required so has been removed. A couple more usages of
log() (which should have been std::log()) with an int argument
are reported on Solaris.
* The undocumented limit of 4095 bytes on messages from the
S-compatibility macros PROBLEM and MESSAGE is now documented and
longer messages will be silently truncated rather than
potentially causing segfaults.
* If the R_NO_SEGV_HANDLER environment variable is non-empty, the
signal handler for SEGV/ILL/BUS signals (which offers recovery
user interface) is not set. This allows more reliable debugging
of crashes that involve the console.
DEPRECATED AND DEFUNCT:
* The legacy S-compatibility macros PROBLEM, MESSAGE, ERROR, WARN,
WARNING, RECOVER, ... are deprecated and will be hidden in R
4.2.0. R's native interface of Rf_error and Rf_warning has long
been preferred.
BUG FIXES:
* .mapply(F, dots, .) no longer segfaults when dots is not a list
and uses match.fun(F) as always documented; reported by Andrew
Simmons in PR#18164.
* hist(<Date>, ...) and hist(<POSIXt>, ...) no longer pass
arguments for rect() (such as col and density) to axis().
(Thanks to Sebastian Meyer's PR#18171.)
* \Sexpr{ch} now preserves Encoding(ch). (Thanks to report and
patch by Jeroen Ooms in PR#18152.)
* Setting the RNG to "Marsaglia-Multicarry" e.g., by RNGkind(), now
warns in more places, thanks to Andr'e Gillibert's report and
patch in PR#18168.
* gray(numeric(), alpha=1/2) no longer segfaults, fixing PR#18183,
reported by Till Krenz.
* Fixed dnbinom(x, size=<very_small>, .., log=TRUE) regression,
reported by Martin Morgan.
* as.Date.POSIXlt(x) now keeps names(x), thanks to Davis Vaughan's
report and patch in PR#18188.
* model.response() now strips an "AsIs" class typically, thanks to
Duncan Murdoch's report and other discussants in PR#18190.
* try() is considerably faster in case of an error and long call,
as e.g., from some do.call(). Thanks to Alexander Kaever's
suggestion posted to R-devel.
* qqline(y = <object>) such as y=I(.), now works, see also
PR#18190.
* Non-integer mgp par() settings are now handled correctly in
axis() and mtext(), thanks to Mikael Jagan and Duncan Murdoch's
report and suggestion in PR#18194.
* formatC(x) returns length zero character() now, rather than ""
when x is of length zero, as documented, thanks to Davis
Vaughan's post to R-devel.
* removeSource(fn) now retains (other) attributes(fn).
0.9.25
fixes import errors for Py3.6 and 3.7, setting version with importlib_metadata.version if available.
also fixes CI testing with github actions so that the proper version of Python is actually used in the test!
0.9.24
use setuptools_scm and importlib for version
SciPy 1.7.1 is a bug-fix release with no new features compared to 1.7.0.
1.7.0:
A new submodule for quasi-Monte Carlo, scipy.stats.qmc, was added
The documentation design was updated to use the same PyData-Sphinx theme as NumPy and other ecosystem libraries.
We now vendor and leverage the Boost C++ library to enable numerous improvements for long-standing weaknesses in scipy.stats
scipy.stats has six new distributions, eight new (or overhauled) hypothesis tests, a new function for bootstrapping, a class that enables fast random variate sampling and percentile point function evaluation, and many other enhancements.
cdist and pdist distance calculations are faster for several metrics, especially weighted cases, thanks to a rewrite to a new C++ backend framework
A new class for radial basis function interpolation, RBFInterpolator, was added to address issues with the Rbf class.
1.21.0
New functions
Add PCG64DXSM BitGenerator
Deprecations
The .dtype attribute must return a dtype
Inexact matches for numpy.convolve and numpy.correlate are deprecated
np.typeDict has been formally deprecated
Exceptions will be raised during array-like creation
Four ndarray.ctypes methods have been deprecated
Expired deprecations
Remove deprecated PolyBase and unused PolyError and PolyDomainError
Compatibility notes
Error type changes in universal functions
__array_ufunc__ argument validation
__array_ufunc__ and additional positional arguments
Validate input values in Generator.uniform
/usr/include removed from default include paths
Changes to comparisons with dtype=...
Changes to dtype and signature arguments in ufuncs
Ufunc signature=... and dtype= generalization and casting
Distutils forces strict floating point model on clang
C API changes
Use of ufunc->type_resolver and “type tuple”
New Features
Added a mypy plugin for handling platform-specific numpy.number precisions
Let the mypy plugin manage extended-precision numpy.number subclasses
New min_digits argument for printing float values
f2py now recognizes Fortran abstract interface blocks
BLAS and LAPACK configuration via environment variables
A runtime-subcriptable alias has been added for ndarray
Improvements
Arbitrary period option for numpy.unwrap
np.unique now returns single NaN
Generator.rayleigh and Generator.geometric performance improved
Placeholder annotations have been improved
Performance improvements
Improved performance in integer division of NumPy arrays
Improve performance of np.save and np.load for small arrays
Changes
numpy.piecewise output class now matches the input class
Enable Accelerate Framework
Upstream changes:
2021.06.23: Changes between NTL 11.5.0 and 11.5.1
Fixed bug that prevented compilation on IBM Z.
2021.06.20: Changes between NTL 11.4.4 and 11.5.0
Added a new configuration option NTL_RANDOM_AES256CTR. The default is off. Configure with NTL_RANDOM_AES256CTR=on to replace the default ChaCha20 Pseudo-Random Number Generator (PRNG) with 256-bit AES counter mode. On certain plaforms (modern x86 and IBM System/390x), special instructions are exploited to improve performance.
Using AES in place of ChaCha may break inter-operability of applications that depend on the behavior of the PRNG.
Using AES in place of ChaCha may affect the performance positively or negatively. On IBM System/390x, there is a marked performance improvement. On x86 there may be a moderate performance improvement or degredation. On any other platforms, where there is no hardware support for AES (or none that is exploited by NTL), there will likely be a marked performance degredation.
Thanks to Patrick Steuer for contributing this code.
Release 1.3.2
CI: fix building wheels on GHA
* ci: fix wheel build command
* ci: remove references to submodules
* ci: fix sdist command and remove Python 3.6 from the matrix
* ci: slightly alter invocation
* ci: disable emulation
* ci: smaller matrix
* ci: use a small matrix but with all python versions
* ci: use manylinux 2010 for CPython 3.9+
* ci: split again matrix per python version given how slow emulation is
Fix also the artifact upload
* ci: fix typo
* ci: typo
Pythran is an ahead of time compiler for a subset of the Python language, with
a focus on scientific computing. It takes a Python module annotated with a few
interface descriptions and turns it into a native Python module with the same
interface, but (hopefully) faster.
Upstream changes:
1.999825 2021-09-28
* Make Math::BigInt accept integers regardless of whether they are written as
decimal, binary, octal, or hexadecimal integers or decimal, binary, octal, or
hexadecimal floating point number.
* When numeric constants are overloaded (with the ":constant" option) in
Math::BigInt, every numeric constant that represent an integer is converted
to an object regardless of how it is written. All finite non-integers are
converted to a NaN.
* When numeric constants are overloaded (with the ":constant" option) in
Math::BigFloat, every numeric constant is converted to an object regardless
of how it is written.
* Add method from_dec() (cf. from_bin(), from_oct(), and from_hex()). It is
like new() except that it does not accept anything but a string representing a
finite decimal number.
1.999824 2021-09-20
* Don't allow mixing math libraries. Use the first backend math library that is
successfully loaded, and ignore any further attempts at loading a different
backend library. This is a solution to the re-occurring problem of using
objects using different math libraries.
* Add missing documentation.
* Miscellaneous minor improvements.
1.999823 2021-07-12
* Improve the handling of the backend libraries. Provide more useful warnings
and error messages. Update the documentation.
1.999822 2021-07-09
* Make the from_hex(), from_oct(), and from_bin() methods consistent with
CORE::oct(), which does not require a leading "0" before the letter ("x",
"o", or "b").
* Make the from_oct() and new() methods accept octal numbers with prefix
"0o", "0O", "o" (lowercase letter o), and "O" (capital letter O).
* Make the from_bin() and new() methods accept binary numbers with
prefix "0b", "0B", "b", and "B".
* Make the from_hex() and new() methods accept hexadecimal numbers with
prefix "0x", "0X", "x", and "X".
* Update test files to match with the above.
1.999821 2021-07-06
* Make new() and from_hex() accept the "0X" prefix, not just the "0x" prefix,
but not accept just "X" or "x". Now, "0XFF" returns 255, not NaN.
* Make new() and from_bin() accept the "0B" prefix, not just the "0b" prefix, but
not accept just "B" or "b". Now, "0B1111" returns 255, not NaN.
* Make new() and from_oct() accept the "0o" and "0O" prefixes, but not accept
just "O" (capital letter O) or "o" (lowercase letter o). Now, "0o377" and
"0O377" return 255, not NaN. Also intepret floating point numbers with a
leading zero and a binary exponent as an octal number, so that "01.4p0"
returns 1.5, not NaN. There is still no ambiguety, since decimal floating
point numbers use "e" or "E" before the exponent, and binary and hexadecimal
floating point numbers use a "0b"/"0B" or "0x"/"0x" prefix, respectively.
1.999820 2021-07-06
* Fix bug and improve error messages in Math::BigInt::import().
1.999819 2021-07-02
* Add method btfac() (triple factorial) and bmfac() (multi-factorial),
including tests and documentation.
* Add missing and correct erroneous documentation for bfac() (factorial)
and bdfac() (double factorial). Also correct handling of special cases
and add tests for these cases.
* Fix error in bsin() and bcos() causing them to hang indefinitely if the
invocand is +/-inf.
* Make it possible for the end user to specify the base length used internally
in Math::BigInt::Calc.
FFTW 3.3.10:
* Fix bug that would cause 2-way SIMD (notably SSE2 in double precision)
to attempt unaligned accesses in certain obscure cases, causing
segfaults.
The following test triggers the bug (SSE2, double precision):
./tests/bench -oexhaustive r4*2:5:3
This test computes a pair of length-4 real->complex transforms where
the second input is 5 real numbers away from the first input. That
is, there is a gap of one real number between the first and second
input array. The -oexhaustive level allow FFTW to attempt to
compute this transform by reducing it to a pair of complex
transforms of length 2, but now the second input is not aligned to a
complex-number boundary. The fact that 5 is odd is the problem.
The bug cannot occur in complex->complex transforms because the
complex interface accepts strides in units of complex numbers, so
strides are aligned by construction.
This bug has been around at least since fftw-3.1.2 (July 2006), and
probably since fftw-3.0 (2003).
A tool to provide an easy, intuitive and consistent access to
information contained in various R models, like model formulas, model
terms, information about random effects, data that was used to fit the
model or data from response variables. 'insight' mainly revolves
around two types of functions: Functions that find (the names of)
information, starting with 'find_', and functions that get the
underlying data, starting with 'get_'. The package has a consistent
syntax and works with many different model objects, where otherwise
functions to access these information are missing.
29 February 2020:
* Replaced deprecated functions from testhat framework in unit tests (contributed by Avraham Adler).
26 February 2020:
* Fixed warnings (as requested by CRAN): R CMD config variables 'CPP' and 'CXXCPP' are deprecated.
20 October 2018:
* Exposed CCSAQ algorithm in R interface (contributed by Julien Chiquet).
03 October 2018:
* Build process was changed to solve issues on several OS (many thanks to the CRAN maintainers).
4.1-1 CRAN
4.1 svyquantile() has been COMPLETELY REWRITTEN. The old version is available
as oldsvyquantile() (for David Eduardo Jorquera Petersen)
svycontrast()'s improvements for statistics with replicates are now also there with
svyby(), for domain comparisons (Robert Baskin)
svyttest() now gives an error message if the binary group variable isn't binary
(for StackOverflow 60930323)
confint.svyglm Wald-type intervals now correctly label the columns (eg 2.5%, 97.5%)
(for Molly Petersen)
svyolr() using linearisation had the wrong standard errors for intercepts
other than the first, if extracted using vcov (it was correct in summary() output)
svyglm() gave deffs that were too large by a factor of nrow(design). (Adrianne Bradford)
svycoxph() now warns if you try to use frailty or other penalised terms, because they
just come from calling coxph and I have no reason to believe they work correctly
in complex samples (for Claudia Rivera)
coef.svyglm() now has a complete= argument to match coef.default(). (for Thomas Leeper)
summary.svyglm() now gives NA p-values and a warning, rather than Inf standard errors,
when the residual df are zero or negative (for Dan Simpson and Lauren Kennedy)
In the multigroup case, svyranktest() now documents which elements of the 'htest'
object have which parts of the result, because it's a bit weird (for Justin Allen)
svycontrast() gets a new argument add=TRUE to keep the old coefficients as well
twophase() can now take strata= arguments that are character, not just factor
or numeric. (for Pam Shaw)
add reference to Chen & Lumley on tail probabilities for quadratic forms.
add reference to Breslow et al for calibrate()
add svyqqplot and svyqqmath for quantile-quantile plots
SE.svyby would grab confidence interval limits instead of SEs if vartype=c("ci","se").
svylogrank(method="small") was wrong (though method="score" and method="large" are ok),
because of problems in obtaining the at-risk matrix from coxph.detail. (for Zhiwen Yao)
added as.svrepdesign.svyimputationList and withReplicates.svyimputationList
(for Ángel Rodríguez Laso)
logLik.svyglm used to return the deviance and now divides it by -2
svybys() to make multiple tables by separate variables rather than a joint table
(for Hannah Evans)
added predictat= option to svypredmeans for Steven Johnston.
Fixed bug in postStratify.svyrep.design, was reweighting all reps the same (Steven Johnston)
Fix date for Thomas & Rao (1987) (Neil Diamond)
Add svygofchisq() for one-sample chisquared goodness of fit (for Natalie Gallagher)
confint.svyglm(method="Wald") now uses t distribution with design df by default.
(for Ehsan Karim)
confint.svyglm() checks for zero/negative degrees of freedom
confint.svyglm() checks for zero/negative degrees of freedom
mrb bootstrap now doesn't throw an error when there's a single PSU in a stratum
(Steve White)
oldsvyquantile() bug with producing replicate-weight confidence intervals for
multiple quantiles (Ben Schneider)
regTermTest(,method="LRT") didn't work if the survey design object and model were
defined in a function (for Keiran Shao)
svyglm() has clearer error message when the subset= argument contains NAs (for Pam Shaw)
and when the weights contain NAs (for Paige Johnson)
regTermTest was dropping the first term for coxph() models (Adam Elder)
svydesign() is much faster for very large datasets with character ids or strata.
svyglm() now works with na.action=na.exclude (for Terry Therneau)
extractAIC.svylm does the design-based AIC for the two-parameter Gaussian model, so
estimating the variance parameter as well as the regression parameters.
(for Benmei Liu and Barry Graubard)
svydesign(, pps=poisson_sampling()) for Poisson sampling, and ppscov() for
specifying PPS design with weighted or unweighted covariance of sampling indicators
(for Claudia Rivera Rodriguez)
4.0 Some (and eventually nearly all) functions now return influence functions when
called with a survey.design2 object and the influence=TRUE option. These allow
svyby() to estimate covariances between domains, which could previously only be
done for replicate-weight designs, and so allow svycontrast() to do domain contrasts
- svymean, svytotal, svyratio, svymle, svyglm, svykappa
Nonlinear least squares with svynls() now available
Document that predict.svyglm() doesn't use a rescaled residual mean square
to estimate standard errors, and so disagrees with some textbooks. (for Trent Buskirk)
3.38 When given a statistic including replicates, svycontrast() now transforms the replicates
and calculates the variance, rather than calculating the variance then using the
delta method. Allows geometric means to exactly match SAS/SUDAAN (for Robert Baskin)
vcov.svyrep.design to simplify computing variances from replicates (for William Pelham)
svykm() no longer throws an error with single-observation domains (for Guy Cafri)
Documentation for svyglm() specifies that it has always returned
model-robust standard errors. (for various people wanting to fit relative risk
regression models).
3.37 RODBC database connections are no longer supported.
Use the DBI-compatible 'odbc' package
set scale<-1 if it is still NULL after processing, inside svrepdesign()
[https://stats.stackexchange.com/questions/409463]
Added withPV for replicate-weight designs [for Tomasz Żółtak]
svyquantile for replicate-weight designs now uses a supplied alpha to get
confidence intervals and estimates SE by dividing confidence interval length
by twice abs(qnorm(alpha/2)). [For Klaus Ignacio Lehmann Melendez]
All the svyquantile methods now take account of design degrees of freedom and
use t distributions for confidence intervals. Specify df=Inf to get a Normal.
[For Klaus Ignacio Lehmann Melendez]
svyivreg() for 2-stage least-squares (requires the AER package)
warn when rho= is used with type="BRR" in svrepdesign [for Tomasz Żółtak]
Add "ACS" and "successive-difference" to type= in svrepdesign(),
for the American Community Survey weights
Add "JK2" to type= in svrepdesign
Warn when scale, rscales are supplied unnecessarily to svyrepdesign
More explanation of 'symbolically nested' in anova.svyglm
Link to blog post about design df with replicate weights.
Chase 'Encyclopedia of Design Theory' link again.
# tibble 3.1.4
## Features
- `as.data.frame.tbl_df()` strips inner column names (#837).
- `new_tibble()` allows omitting the `nrow` argument again (#781).
## Documentation
- Move `vignette("digits")`, `vignette("numbers")`, `?num` and `?char`
from the pillar package here (#913).
- Replace `iris` by `trees` (#943).
- Various documentation improvements.
- New `?tibble_options` help page (#912).
## Performance
- `x[i, j] <- one_row_value` avoids explicit recycling of the
right-hand side, the recycling happens implicitly in
`vctrs::vec_assign()` for performance (#922).
## Internal
- Vignettes are now tested with a snapshot test (#919).
- `new_tibble()` uses `vctrs::new_data_frame()` internally (#726,
@DavisVaughan).
- Adapt to pillar 1.6.2.
- Fix tests for compatibility with pillar 1.6.2.
# tibble 3.1.3
## Bug fixes
- `tbl[row, col] <- rhs` treats an all-`NA` logical vector as a
missing value both for existing data (#773) and for the right-hand
side value (#868). This means that a column initialized with `NA`
(of type `logical`) will change its type when a row is updated to a
value of a different type.
- `[[<-()` supports symbols (#893).
## Features
- `as_tibble_row()` supports arbitrary vectors (#797).
- `enframe()` and `deframe()` support arbitrary vectors (#730).
- `tibble()` and `tibble_row()` ignore all columns that evaluate to
`NULL`, not only those where a verbatim `NULL` is passed (#895,
#900).
- `new_tibble()` is now faster (#901, @mgirlich).
## Internal
- Establish compatibility with rlang > 0.4.11 (#908).
- Use `pillar::dim_desc()` (#859).
- Establish compatibility with testthat > 3.0.3 (#896, @lionel-).
- Bump required versions of ellipsis and vctrs to avoid warning during
package load.
(R CMD Rdconv -t txt math/R-robustbase/work/robustbase/inst/NEWS.Rd)
CHANGES in robustbase VERSION 0.93-8 (2021-06-01, svn r879):
NEW FEATURES:
* 'scaleTau2()' gets new optional 'iter = 1' and 'tol.iter'
arguments; mostly experimentally to see if or when iteration
makes sense.
* 'Qn(x, *)' gets new optional 'k = .' to indicate the
"quantile" i.e., order statistic to be computed (with
default as previously hard-coded).
Experimentally to try for cases where more than n/2
observations coincide (with the median), i.e., 'x[i] == x0
== median(x[])', and hence 'Qn(x)' and 'mad(x)' are zero.
* 'adjOutlyingness()' gets new option 'IQRtype = 7'.
Tweaks:
* For tests: *again* differences found in the non-sensical
'adjOutlyingness()' example (with large p/n, hence many
"random" values in the order of 1e15). Disable the test for
now (and record the result in *.Rout).
BUG FIXES:
* The 'test()' utility in 'tests/lmrob-ex12.R' no longer calls
'matrix(x, n,4)' where the length of x does not match '4n'.
Similar change in 'tests/mc-strict.R'
CHANGES in robustbase VERSION 0.93-7 (2021-01-03, svn r865):
NEW FEATURES:
* Use '\CRANpkg{.}' in most places, providing web links to the
respective CRAN package page.
* 'adjOutlyingness()' now gains optional parameters to be
passed to 'mc()'.
BUG FIXES:
* update the internal man page, so new 'checkRdContents()' is
happy.
* fix several '\url{.}''s that now are diagnosed as 'moved'.
* 'adjOutlyingness()' finally works with 'p.samp > p'.
* 'scaleTau2()' now works with 'Inf' and very large values,
and obeys new 'na.rm = FALSE' argument.
* add 'check.environment=FALSE' to some of the 'all.equal()'
calls (for 'R-devel', i.e., future R 4.1.x).
* 'wgt.himedian(numeric())' now returns 'NA' instead of
occasionally seg.faulting or inf.looping. Ditto for a case
when called from 'Qn()'.
CHANGES in robustbase VERSION 0.93-6 (2020-03-20, svn r854):
NEW FEATURES:
* 'splitFrame()' now treats 'character' columns also as
categorical (the same as 'factor's).
Tweaks:
* Small updates, also in checks for newer compiler settings,
e.g., 'FCLEN' macro; also F77_*() etc, in order to fix 'LTO'
issues.
* More careful or _less_ calling 'intpr()': correct "Rank" of
array (for gfortran/gcc 10, when '-fallow-argument-mismatch'
is not set).
2021-07-26 Tomoaki NISHIYAMA <tomoakin@staff.kanazawa-u.ac.jp>
* Change LICENCE to GPL-3
* import new config.guess and config.sub
* Drop an unused variable RS_PostgreSQL_closeManager_t
* Use seq_along() instead of seq(along=)
* -Wno-stringop-truncation for libpq compilation on windows
* Change Description for new version and license.
* fix type as pointed out by PR #109
* http to https transition for URLs
Version 2.5-2, 2021-08-20
* Support hdf5 filters via multi-filter interface (netcdf>=4.8.0)
* Windows: update binary packages to netcdf 4.7.4 with OpenDAP
* Generate type conversions with m4 macros
* Reduce CPU time for utcal.nc example to pass CRAN checks
pbkrtest v0.5.1 (Release date: 2021-03-09)
============================================
Changes
* Improved documentation
pbkrtest v0.5-0.0 (Release date: 2020-08-04)
============================================
Changes
* Satterthwaite approximation added via the SATmodcomp function.
* Checks for models being nested is not performed for parametric
bootstrap any longer. Reason is that the simr package use parametric
bootstrap for testing variance components being zero.
* doi added to DESCRIPTION file
pbkrtest v0.4-8.6 (Release date: 2020-02-20)
============================================
Bug fixes:
* documentation fixed ddf_Lb is now exported
* mclapply issue for windows fixed
* vcovAdj.lmerMod is exported to make emmeans work. Contact Russ Lenth
to make emmeans used generic function vcovAdj.
pbkrtest v0.4-8 (Release date: 2020-02-20)
==========================================
Bug fixes:
* Issue related to class() versus inherits() fixed.
Changes:
* NEWS file added
* NAMESPACE file is now generated automatically
Summarizes key information about statistical objects in tidy tibbles.
This makes it easy to report results, create plots and consistently
work with large numbers of models at once. Broom provides three verbs
that each provide different types of information about a model. tidy()
summarizes information about model components such as coefficients of
a regression. glance() reports information about an entire model, such
as goodness of fit measures like AIC and BIC. augment() adds
information about individual observations to a dataset, such as fitted
values or influence measures.
# tidyr 1.1.3
* tidyr verbs no longer have "default" methods for lazyeval fallbacks. This
means that you'll get clearer error messages (#1036).
* `uncount()` error for non-integer weights and gives a clearer error message
for negative weights (@mgirlich, #1069).
* You can once again unnest dates (#1021, #1089).
* `pivot_wider()` works with data.table and empty key variables (@mgirlich, #1066).
* `separate_rows()` works for factor columns (@mgirlich, #1058).
# tidyr 1.1.2
* `separate_rows()` returns to 1.1.0 behaviour for empty strings
(@rjpatm, #1014).
# tidyr 1.1.1
* New tidyr logo!
* stringi dependency has been removed; this was a substantial dependency that
make tidyr hard to compile in resource constrained environments
(@rjpat, #936).
* Replace Rcpp with cpp11. See <https://cpp11.r-lib.org/articles/motivations.html>
for reasons why.
# tidyr 1.1.0
## General features
* `pivot_longer()`, `hoist()`, `unnest_wider()`, and `unnest_longer()` gain
new `transform` arguments; these allow you to transform values "in flight".
They are partly needed because vctrs coercion rules have become stricter,
but they give you greater flexibility than was available previously (#921).
* Arguments that use tidy selection syntax are now clearly documented and
have been updated to use tidyselect 1.1.0 (#872).
## Pivoting improvements
* Both `pivot_wider()` and `pivot_longer()` are considerably more performant,
thanks largely to improvements in the underlying vctrs code
(#790, @DavisVaughan).
* `pivot_longer()` now supports `names_to = character()` which prevents the
name column from being created (#961).
```{r}
df <- tibble(id = 1:3, x_1 = 1:3, x_2 = 4:6)
df %>% pivot_longer(-id, names_to = character())
```
* `pivot_longer()` no longer creates a `.copy` variable in the presence of
duplicate column names. This makes it more consistent with the handling
of non-unique specs.
* `pivot_longer()` automatically disambiguates non-unique ouputs, which can
occur when the input variables include some additional component that you
don't care about and want to discard (#792, #793).
```{r}
df <- tibble(id = 1:3, x_1 = 1:3, x_2 = 4:6)
df %>% pivot_longer(-id, names_pattern = "(.)_.")
df %>% pivot_longer(-id, names_sep = "_", names_to = c("name", NA))
df %>% pivot_longer(-id, names_sep = "_", names_to = c(".value", NA))
```
* `pivot_wider()` gains a `names_sort` argument which allows you to sort
column names in order. The default, `FALSE`, orders columms by their
first appearance (#839). In a future version, I'll consider changing the
default to `TRUE`.
* `pivot_wider()` gains a `names_glue` argument that allows you to construct
output column names with a glue specification.
* `pivot_wider()` arguments `values_fn` and `values_fill` can now be single
values; you now only need to use a named list if you want to use different
values for different value columns (#739, #746). They also get improved
errors if they're not of the expected type.
## Rectangling
* `hoist()` now automatically names pluckers that are a single string (#837).
It error if you use duplicated column names (@mgirlich, #834), and now uses
`rlang::list2()` behind the scenes (which means that you can now use `!!!`
and `:=`) (#801).
* `unnest_longer()`, `unnest_wider()`, and `hoist()` do a better job
simplifying list-cols. They no longer add unneeded `unspecified()` when
the result is still a list (#806), and work when the list contains
non-vectors (#810, #848).
* `unnest_wider(names_sep = "")` now provides default names for unnamed inputs,
suppressing the many previous name repair messages (#742).
## Nesting
* `pack()` and `nest()` gains a `.names_sep` argument allows you to strip outer
names from inner names, in symmetrical way to how the same argument to
`unpack()` and `unnest()` combines inner and outer names (#795, #797).
* `unnest_wider()` and `unnest_longer()` can now unnest `list_of` columns. This
is important for unnesting columns created from `nest()` and with
`pivot_wider()`, which will create `list_of` columns if the id columns are
non-unique (#741).
## Bug fixes and minor improvements
* `chop()` now creates list-columns of class `vctrs::list_of()`. This helps
keep track of the type in case the chopped data frame is empty, allowing
`unchop()` to reconstitute a data frame with the correct number and types
of column even when there are no observations.
* `drop_na()` now preserves attributes of unclassed vectors (#905).
* `expand()`, `expand_grid()`, `crossing()`, and `nesting()` once again
evaluate their inputs iteratively, so you can refer to freshly created
columns, e.g. `crossing(x = seq(-2, 2), y = x)` (#820).
* `expand()`, `expand_grid()`, `crossing()`, and `nesting()` gain a
`.name_repair` giving you control over their name repair strategy
(@jeffreypullin, #798).
* `extract()` lets you use `NA` in `into`, as documented (#793).
* `extract()`, `separate()`, `hoist()`, `unnest_longer()`, and `unnest_wider()`
give a better error message if `col` is missing (#805).
* `pack()`'s first argument is now `.data` instead of `data` (#759).
* `pivot_longer()` now errors if `values_to` is not a length-1 character vector
(#949).
* `pivot_longer()` and `pivot_wider()` are now generic so implementations
can be provided for objects other than data frames (#800).
* `pivot_wider()` can now pivot data frame columns (#926)
* `unite(na.rm = TRUE)` now works for all types of variable, not just character
vectors (#765).
* `unnest_wider()` gives a better error message if you attempt to unnest
multiple columns (#740).
* `unnest_auto()` works when the input data contains a column called `col`
(#959).
version 0.9.8
- Fixed some issues on C-level causing problems with the
CLANG compiler. (Thanks to Brian Ripley for not only
reporting this, but also sending updated code with
fixes).
version 0.9.7
- Fixes in use of INTEGER() and VECTOR_ELT() after updates in R's C API.
this affected 'afind' and 'max_length' (internally). (Thanks to Luke
Tierny and Kurt Hornik for the notification).
- Fix in 'amatch' causing utf-8 characters to be ignored in some
cases (thanks to Joan Mime for reporting #78).
- Fix: segfault when 'afind' was called with many search patterns or many
texts to be searched.
- Fix: stringsimmatrix was not normalized correctly (Thanks to Tamas Ferenci
for reporting GH).
version 0.9.6.3
- Resubmit. Fixed an URL redirect that was detected by CRAN.
version 0.9.6.2
- Resubmit. Fixed url issues detected by CRAN, added doi to description
as per CRAN request.
version 0.9.6.1
- Bugfix: afind/grab/grabl returned wrong results on MacOS only.
(thanks to Prof. Brian Ripley for the notification and for running tests
on his personal machine and to Tomas Kalibera for making the
ubuntu-rchk docker image available).
version 0.9.6
- New function 'afind': find approximate matches in text based on string distance.
- New functions 'grab', 'grabl': fuzzy matching equivalent to 'grep' and 'grepl'.
- New function 'extract': fuzzy matching equivalent of stringr::str_extract.
- New algorithm 'running_cosine': fast fuzzy text search using cosine distance.
- New function 'stringsimmatrix' (Thanks to Johannes Gruber).
- Number of threads used is now reported when loading 'stringdist'.
- Internal fixes (in some cases class() == 'class' was used).
25 Aug 2020: Statmod 1.4.35
- Fix Bug in tweedie(link.power=0) so that the resulting functions
$linkinv() and $mu.eta() preserve the attributes of their
arguments.
16 Feb 2020: statmod 1.4.34
- Improve the model description provided in the remlscoregamma() help
page.
- tweedie() now checks whether `var.power` or `link.power` are
character strings instead of numeric. If `var.power` is one of the
standard family names ("gaussian", "poisson", "gamma" or
"inverse.gaussian") or `link.power` is one of the standard link
functions ("identity","log","inverse") then the argument is reset
to the corresponding numerical value with a message, otherwise an
informative error message is given.
- Cleaning up of internal code to avoid partial matching of function
arguments, attributes or list component names. The automatic package
tests are now run with the warnPartialMatchArgs,
warnPartialMatchAttr and warnPartialMatchDollar options all set to
TRUE.
4 Jan 2020: statmod 1.4.33
- The components returned by mixedModel2Fit() relating to fixed
coefficients are now documented explicitly. The help page has been
corrected to refer to the argument `only.varcomp` instead of
`fixed.estimates`. The vector of `reml.residuals` is no longer
part of the output.
- The test file has been slightly revised using zapsmall() so ensure
that the test output file remains correct for R with ATLAS BLAS.
# sandwich 3.0-1
* Extended the "Getting started" page with information on how to use _sandwich_ in
combination with the _modelsummary_ package (Arel-Bundock) based on _broom_
infrastructure (Robinson, Hayes, Couch). (Based on ideas from Grant McDermott.)
<https://sandwich.R-Forge.R-project.org/articles/sandwich.html>
* Catch `NA` observations in `cluster` and/or `order.by` indexes for `vcovCL()`,
`vcovBS()`, `vcovPL()`, and `vcovPC()`. Such missing observations cannot be
handled in the covariance extractor functions but need to be addressed prior
to fitting the model object, either by omitting these observations or by
imputing the missing values. (Raised by Alexander Fischer on StackOverflow
<https://stackoverflow.com/questions/64849935/clustered-standard-errors-and-missing-values>.)
* In `vcovHC()` if there are `estfun()` rows that are all zero and `type = "const"`,
then the working residuals for `lm` and `glm` objects are obtained via
`residuals()` rather than `estfun()`. (Prompted by an issue raised by
Alex Torgovitsky.)
# sandwich 3.0-0
* Release of version 3.0-0 accompanying the publication of the paper
"Various Versatile Variances: An Object-Oriented Implementation of
Clustered Covariances in R." together with Susanne Koell and Nathaniel Graham
in the _Journal of Statistcal Software_ at <https://doi.org/10.18637/jss.v095.i01>.
The paper is also provided as a vignette in the package as
`vignette("sandwich-CL", package = "sandwich")`.
* Improved or clarified notation in Equations 6, 9, 21, and 22 (based on
feedback from Bettina Gruen).
* The documentation of the HC1 bias correction for clustered covariances
in `vignette("sandwich-CL", package = "sandwich")` has been corrected (Equation 15).
While both the code in `vcovCL()` and the corresponding documentation `?vcovCL`
always correctly used (n-1)/(n-k), the vignette had incorrectly stated it as
n/(n-k). (Reported by Yves Croissant.)
* The package is also accompanied by a `pkgdown` website on R-Forge now:
<https://sandwich.R-Forge.R-project.org/>
This essentially uses the previous content of the package (documentation,
vignettes, NEWS) and just formatting was enhanced. But a few new features
were also added:
- A "Get started" vignette for the `pkgdown` page (but not shipped in the
package) providing an introduction to the package and listing all
variance-covariance functions provided with links to further details.
- R/Markdown overview vignettes for the `pkgdown` page (but also not shipped
in the package) linking the `Sweave`-based PDF vignettes so that they are
easily accessible online.
- A `README` with very brief overview for the `pkgdown` title page.
- A nice logo, kindly provided by Reto Stauffer.
* All kernel weights functions in `kweights()` are made symmetric around zero now
(suggested by Christoph Hanck). The quadratic spectral kernal is approximated
by `exp(-c * x^2)` rather than `1` for very small `x`.
* In case the `Formula` namespace is loaded, warnings are suppressed now for
processing formula specifications like `cluster = ~ id` in `expand.model.frame()`.
Otherwise warnings may occur with the `|` separator in multi-part formulas with
factors. (Reported by David Hugh-Jones.)
* The `bread()` method for `mlm` objects has been improved to also handle
_weighted_ `mlm` objects. (Suggested by James Pustejovsky.)
# rstudioapi 0.13
* Fixed an issue where `rstudioapi::insertText()` would fail. (#208)
# rstudioapi 0.12
* Fixed an issue where remote `rstudioapi` calls would erroneously use
a previous response in some cases.
* Allow `navigateToFile` to accept an empty file. This file will
default to the file currently in view in the active column.
* Added `registerChunkExecCallback` and `unregisterChunkExecCallback`,
used to execute a callback after a chunk is ran.
# NLopt Release Notes
## NLopt 2.6.2
15 April 2020
* Fixed forced stop exception with dimension elimination ([#317])
* Fixed `get_initial_step` wrapping ([#319])
* Various build fixes ([#314], [#308], [#303], [#278])
## NLopt 2.6.1
13 April 2019
* Fix `nlopt_version` result for 2.6.x and update soname.
## NLopt 2.6
12 April 2019
* New `nlopt_set_upper_bound` and `nlopt_set_lower_bound` functions in the low-level C API to set one bound at a time ([#257]).
* There is no longer a separate `libnlopt_cxx` library: C++ algorithms (STOGO and AGS) are compiled and included by default ([#198]).
* Various build fixes ([#197], [#216], [#245], [#250], [#230], [#261], etc.), other fixes ([#242], [#258]).
## NLopt 2.5
26 July 2018
* New AGS global solver ([#194]), thanks to Vladislav Sovrasov.
* New `nlopt_get_numevals` function providing a built-in evaluation counter ([#160]).
* New `nlopt_get_errmsg` function for more descriptive error messages.
* Build system is converted to `cmake` ([#49]), thanks to Julien Schueller
* Plugins updated for recent Octave and Guile versions.
* Various other build fixes and minor bug fixes.
(from: inst/NEWS)
CHANGES IN VERSION 0.11.1 (May 2021)
USER LEVEL CHANGES
-- Add information about categorical sampler and univariate version of ESS
sampler to `help(samplers)`.
BUG FIXES
-- Fix to the `posterior_predictive_branch` MCMC sampler, to update
the log-probabilities of the sampled posterior predictive nodes (PR #1127).
CHANGES IN VERSION 0.11.0 (April 2021)
USER LEVEL CHANGES
-- Add new `posterior_predictive_branch` MCMC sampler, which is
automatically assigned to trailing dependency node networks of entirely
non-data nodes (jointly posterior predictive branches). This sampler
simulates jointly from the predictive distribtion of these posterior
predictive node branches, and is designed to improve MCMC mixing of the
branch, and consequently of the entire model (PR #1086).
-- Allow use of elliptical slice sampler for univariate nodes, which can be
useful in multimodal problems (PR #1109).
-- Add a `getParents` method to the model API, allowing one to determine parent
nodes, analogous to use of `getDependencies` to determine child nodes
(PR #1094).
-- Add `getConditionallyIndependentSets` method (not yet documented) to the model
API, allowing one to determine nodes that are conditionally independent of
each other given parent nodes (PR #1094).
-- Improve efficiency of conjugate samplers by avoiding unneeded calculations
when a conjugate relationship does not involve shifting or scaling (PR #1087).
-- Allow use of `nimNumeric`, `nimMatrix`, `nimArray` in model code (PR #1096).
-- Add progress bar to `getSamplesDPmeasure` (NCT issue 110).
-- Allow model definition using `if` without `else`, fixing a longstanding
oversight (PR #1104).
-- Improve warning when multiple nodes provided to `getParam` (PR #1118).
-- Check during model building for unnamed elements of `data` and `inits`
(PR #1117).
-- Remove error trapping to prevent use of variables in defining node names,
such as `getDependencies('y[idx]')` as this is hard to check robustly and
efficiently (PR #1122).
-- Improve error messages when reporting `getParam` cannot calculate a parameter
when checking a model (PR #1112).
-- Error trap cases where model nodes are defined in two different declarations,
adding check for overlapping multivariate nodes (PR #1110).
-- Improve error trapping of mis-formed stochastic declarations in models
(PR #1106).
-- Increase maximum length of compiler output when using
`compileNimble(..., showCompilerOutput = TRUE)` (NCT issue 205).
-- Point to parallelization example on r-nimble.org in relevant places of manual.
BUG FIXES
-- Fix a bug (issue #1091) causing incorrect node names when having more than
100,000 elements in a vector node or in a dimension of a multi-dimensional
node (PR #1092).
-- Fix `getNodeNames` to return no nodes when `latentOnly` is `TRUE` and model
contains no latent nodes (PR #1116).
-- Fix checking for unknown nimbleFunction methods and improve related error
trapping (PRs #1107, #1105).
DEVELOPER LEVEL CHANGES
-- Update our testing code/infrastructure to use latest testthat API (PR #1090).
-- Shift internal code to use `model$calculate(...)` style rather than
`calculate(model, ...)` style for various node functions (PR #1114).
-- Clean up commented out code (PR #1098) and remove unused test files
(PR #1097).
-- Update to a newer (but not latest) version of Eigen to suppress some compiler
warnings (PR #1093).
CHANGES IN VERSION 0.10.1 (November 2020)
USER LEVEL CHANGES
-- Add `round` argument to `samplesSummary` (PR #1077).
-- `samplesSummary` function (and also `runMCMC(..., summary = TRUE)`) was made
to be robust against non-valid values in posterior samples array (PR #1075).
BUG FIXES
-- Fix `makeParamInfo` when there is only one declID involved to address a bug
affecting usage of `getParam`. This bug was introduced in version 0.10.0 when
reducing memory use of `getParam` (PR #1016). This fixes incorrect behavior
of conjugate samplers (because of incorrect inputs from `getParam`) under
certain model structures, in particular state-space style models (PR #1080).
-- Prevent usage of marginal version of WAIC (i.e., when not monitoring all
direct stochastic parents of data nodes); use of marginal version of WAIC in
previous versions gave incorrect results (PR #1083).
DEVELOPER LEVEL CHANGES
-- Deprecate `samplerAssignmnentRules` system (PR #1078).
-- Deprecate `autoBlock` MCMC option (PR #1079).
CHANGES IN VERSION 0.10.0 (October 2020)
USER LEVEL CHANGES
-- Greatly extend BNP functionality with the CRP (Chinese restaurant process)
distribution by allowing multiple observations to be grouped together (e.g.,
for longitudinal or time series data) without requiring they be specified
as a multivariate node (PR #1033).
-- Add a variety of conjugate cases to BNP conjugate samplers (PR #1033).
-- Greatly improve efficiency of model and MCMC building and configuration for
BNP-based models with CRP components (PR #1033).
-- Move all sequential Monte Carlo (SMC; aka particle filtering) methods to
new package `nimbleSMC`, including various particle-filter-based MCMC
samplers.
-- Prevent use of variables in indexes of nodes, such as `y[idx]`, which was
incorrectly being evaluated based on R scoping rules (PR #1064).
-- Allow use of `logdet` in model code (Issue #1018).
-- New `resetMV` argument available to `mcmc$run` method. In combination
with `reset = FALSE`, specifying `resetMV = TRUE` will continue the current
run of the MCMC, but discard any previously-collected samples
(PR #1051; thanks to 'DJRP').
-- New methods `setMonitors` and `setMonitors2` added for MCMC configuration
objects. These methods replace the current set of monitors (or monitors2)
with the specified variables (PR #1061).
-- Add `as.list` method for modelValues objects (PR #1060).
-- Update `getSamplesDPmeasure` function to improve efficiency and reduce
output size; output is now a list of matrices (PR #1059).
-- Add `dimensions` argument to `nimbleMCMC` (PR #1058).
-- Add method `getWidthHistory` to slice sampler to retrieve sampling history
information (PR #1057; thanks to 'rpatin').
-- Various improvements to the manual.
BUG FIXES
-- Fix a bug in k-fold cross-validation routine (`runCrossValidate`), where
the merging of MCMC sampler configurations was done incorrectly and causing
incorrect results (PR #1068).
-- Fix bug giving incorrect `dwish` density when using non-default S
parameterization (PR #1017).
-- Fix incorrect NaN eigenvalues in singular normalized adjacency matrices
under `dcar_normal` (PR #1019).
-- Update all MCMC sampler functions to use a new syntax for control list
element extraction, which prevents a possible bug caused by R's partial
matching of list names (PR #1065).
-- Define auto-generated simulation ('r') functions for user-defined
distributions in the global environment to avoid scoping issues (PR #1063).
-- Update user-defined distribution processing so user-defined distributions
can be defined inside functions (PR #1063).
-- Fix bug preventing use of `dirName` argument to `compileNimble` (PR #1062).
-- Fix a bug preventing model building when there are overly long names of
model variables resulting from long deterministic expressions in model code
(PR #1069).
-- Fix `buildMCEM` so it works with a compiled model as argument (PR #1028).
-- Fix `dmvt` so default unnamed parameters work (PR #1027).
-- Fix error in model building in corner case where
`makeVertexNamesFromIndexArray2` made a simplifying assumption to conclude
a block of nodes was contiguous (PR #1026).
-- Fix bug in `nimbleRcall` causing run-time warnings when `returnType` is void
(PR #1013).
DEVELOPER LEVEL CHANGES
-- Improve efficiency of `getParam` implementation, which improves speed for
MCMC compilation (PR #1016).
-- Improve MCMC sampling efficiency by not copying data nodes, only data node
logProbs, during sampler execution for various samplers (PR #1040).
-- Update Travis testing to use R 4.0.
-- Remove `GID_map` internal to modelValues (PR #1032).
-- Remove deprecated function `getLoadingNamespace` and (deprecated) use of
`where=getLoadingNamespace`. Also improve handling of environments set up
by `nimbleFunction` to make it easier to write packages depending on NIMBLE
(PRs #1029, 1011).
-- Force intermediates of index range expressions to be of type 'int' for use
in AD (PR #1024).
CHANGES IN VERSION 0.9.1 (May 2020)
USER LEVEL CHANGES
-- Switched from use of `system` to `system2` to avoid problems with installation
under R 4.0 on Windows (PR #1003).
-- Modify various adaptive MCMC samplers so the exponent controlling the scale
decay of the adaptation is adjustable by user (rather than hard-coded at 0.8
(PR #981).
-- Allow `pmin` and `pmax` to be used in models (PR #982).
-- Add documentation for `is.na`,`is.nan`,`any`,`all` (PR #988)
-- Add system option `MCMCuseConugacy` to control whether conjugate samplers are
used (PR #998).
-- Adds checks for `niter`, `nburnin` in the `mcmc$run` method (PR #980).
-- Modify print handling in `addSampler` and `configureMCMC` (PRs #986, 989).
-- Improve handling of NA values in `dCRP` to avoid error messages when building
models (PR #994).
-- Avoid monitoring top-level data nodes in models (PR #1006).
BUG FIXES
-- Modify MCMC `autoBlock` routine to only group Wishart, Inverse-Wishart, and
Dirichlet nodes with themselves, to avoid violating the constraints of those
nodes (PR #999).
-- Fix incorrect error message from `warnRHSonlyDynIdx` when variable appears
multiple times on right-hand side of a model expression (PR #997).
-- Fix `checkDistributionFunctions` to respect default `nDim=0` when extracting
first argument, to avoid error when dimension not specified in user-defined
distributions (PR #992).
-- Fix `print` option of `addSampler` (PR #986).
-- Improve handling of cases where indexing goes beyond extent of variable in
`expandNodeNames` and related queries of model structure (PR #977).
DEVELOPER LEVEL CHANGES
-- Use `inherits` rather than testing for equality of `class(object)` (PR #988).
Provides a high-level R interface to data files written using
Unidata's netCDF library (version 4 or earlier), which are binary data
files that are portable across platforms and include metadata
information in addition to the data sets. Using this package, netCDF
files (either version 4 or "classic" version 3) can be opened and data
sets read in easily. It is also easy to create new netCDF dimensions,
variables, and files, in either version 3 or 4 format, and manipulate
existing netCDF files. This package replaces the former ncdf package,
which only worked with netcdf version 3 files. For various reasons
the names of the functions have had to be changed from the names in
the ncdf package. The old ncdf package is still available at the URL
given below, if you need to have backward compatibility. It should be
possible to have both the ncdf and ncdf4 packages installed
simultaneously without a problem. However, the ncdf package does not
provide an interface for netcdf version 4 files.
2020-06-24: 2.0.1
R version requirement is reduced from 4.0.0 to 2.2.0
2020-06-24: 2.0.1
fixed a bug which effectively prevented using dmtruncnorm and dmtrunct with
an argument 'x' of vector type; various improvements in the documentation of
recintab and mom2cum.
2020-06-02: 2.0.0
support for the truncated versions of the multivariate normal and the t
distributions is introduced; for the truncated normal distribution,
functions recintab and mom2cum allow computation of corresponding moments
and cumulants; the latter function can also be used for obtaining the
cumulants of other distributions of which the moments are known.
2020-04-29: 1.5-7
improved R coding of sadmvn and sadmvt, with increased use of biv.nt.prob;
fixed a bug of pmnorm affecting a peculiar input set; a new function is
introduced: sample_Mardia_measures.
Importance sampling from the truncated multivariate normal using the
GHK (Geweke-Hajivassiliou-Keane) simulator. Unlike Gibbs sampling
which can get stuck in one truncation sub-region depending on initial
values, this package allows truncation based on disjoint regions that
are created by truncation of absolute values. The GHK algorithm uses
simple Cholesky transformation followed by recursive simulation of
univariate truncated normals hence there are also no convergence
issues. Importance sample is returned along with sampling weights,
based on which, one can calculate integrals over truncated regions for
multivariate normals.
HANGES IN VERSION 1.1-27.1:
USER-VISIBLE CHANGES:
* 'influence.merMod' allows user-specified starting parameters
* cleaned up performance vignette
BUG FIXES:
* 'cooks.distance' now works with objects computed by
'influence' method
* 'influence.merMod' now works with 'glmer' models using
'nAGQ=0'
* 'predict' (with new data) and 'simulate' methods now work
for models with >100 levels in a random effect grouping
variable (GH #631)
CHANGES IN VERSION 1.1-27 (2021-05-15):
USER-VISIBLE CHANGES:
* improvements from Lionel Henry (via
https://github.com/lme4/lme4/pull/587) to fix corner cases
in data checking; also resolves GH #601 (allFit scoping)
* 'getME(., "lower")' now has names (request of GH #609)
* improved detection of 'NaN' in internal calculations
(typically due to underflow/overflow or out-of-bounds linear
predictors from non-constraining link functions such as
identity-link Gamma models)
* 'influence.merMod' allows parallel computation
* the 'statmod' package is no longer required unless
attempting to simulate results from a model with an inverse
Gaussian response
BUG FIXES:
* long formulas work better in 'anova' headings (GH #611)
CHANGES IN VERSION 1.1-26 (2020-11-30):
BUG FIXES:
* 'predict', 'model.frame(.,fixed.only=TRUE)' work with
variable names containing spaces (GH #605)
* 'simulate' works when original response variable was logical
* 'densityplot' handles partly broken profiles more robustly
NEW FEATURES:
* 'thpr' method for 'densityplot()' (for plotting profiles
scaled as densities) gets new arguments
CHANGES IN VERSION 1.1-25 (2020-10-23):
* Set more tests to run only if environment variable
'LME4_TEST_LEVEL'>1
CHANGES IN VERSION 1.1-24 (never on CRAN):
USER-VISIBLE CHANGES:
* 'anova()' now returns a p-value of 'NA' if the df difference
between two models is 0 (implying they are equivalent
models) (GH#583, @MetaEntropy)
* speedup in 'coef()' for large models, by skipping
conditional variance calculation (Alexander Bauer)
* 'simulate.formula' machinery has changed slightly, for
compatibility with the 'ergm' package (Pavel Krivitsky)
* informational messages about (non-)convergence improved (GH
#599)
* improved error messages for 0 non-NA cases in data (GH #533)
NEW FEATURES:
* 'getME(.,"devfun")' now works for 'glmer' objects.
Additionally, 'profile'/'confint' for GLMMs no longer depend
on objects in the fitting environment remaining unchanged
(GH #589). This change also affects likelihood profiling
machinery; results of 'glmer' profiling/CIs may not match
results from previous versions exactly.
BUG FIXES:
* improved handling/documentation of 'glmer.nb' controls (GH
#556)
* 'predict' works better for 'gamm4' objects (GH #575)
* resolved some long-standing UBSAN issues (GH #561)
CHANGES IN VERSION 1.1-23 (2020-03-06):
This is primarily for CRAN compliance (previous submission was
retracted to allow time for downstream package adjustments).
* Some PROTECT/UNPROTECT fixes
CHANGES IN VERSION 1.1-22 (never on CRAN):
USER-VISIBLE CHANGES:
* prediction now works better for factors with many levels
(GH#467, solution by @sihoward)
* minor changes to argument order in '[g]lmerControl'; default
tolerance for convergence checks increased from 0.001 to
0.002 for 'glmerControl' (now consistent with 'lmerControl')
* 'lmer(*, family="<fam>")' is no longer valid; it had been
deprecated since 2013-06.
* 'lmer()', 'glmer()', and 'nlmer()' no longer have a formal
'...' argument. This defunctifies the use of a 'sparseX =
.' argument and will reveal some user errors, where
extraneous arguments were previously disregarded.
* In 'isSingular(x, tol)', the default tolerance ('tol') has
been increased from '1e-5' to '1e-4', the default of
'check.conv.singular' in 'g?lmerControl()'.
* for clarity and consistency with base R methods, some column
names of 'anova()' output are changed: "Df" becomes "npar",
"Chi Df" becomes "Df" (GH #528)
* 'simulate()' now works with inverse-Gaussian models (GH #284
revisited, @nahorp/Florian Hartig)
* single-model mode of 'anova()' now warns about unused
arguments in ... (e.g. 'type="III"')
* default tolerances for 'nloptwrap'/BOBYQA optimizer
tightened ('xtol_abs' and 'ftol_abs' were 1e-6, now 1e-8).
(To revert to former tolerances, use
'control=lmerControl(optimizer="nloptwrap",
optCtrl=list(xtol_abs=1e-6, ftol_abs=1e-6))'.)
BUG FIXES:
* improved checking for missing data (@lionel-)
* internal 'checkZrank()' should be able to deal with
('Matrix' package) 'rankMatrix()' returning 'NA'.
* 'allFit(fm)' now works for a model that had an explicit
'control = lmerControl(..)' call.
* internal 'getStart()' now works when model's 'start' was
specified as a list, and when called from 'drop1()' on a
submodel, fixing GH #521.
* internal function 'mkdevfun' now works even if there is an
extraneous 'getCall' function defined in the global
environment (GH #535)
* 'allFit()' works even if a variable with symbol 'i' is used
somewhere in the original model call (GH #538, reported by
Don Cohen); generally more robust
* 'glmer.nb' works even if an alternative version of
'negative.binomial' (other than the one from 'MASS') is
loaded in the workspace (e.g. by the 'GLMMadaptive' package)
(GH#516)
* 'level' argument is now honoured by 'confint(...,
type="boot", level=...)' (GH #543)
gtools 3.9.2 - 2021-06-03
-------------------------
Bug fixes:
- Fix missing man page and export for `combinations` and `permutations`.
Behind the scenes:
- Fixed more spelling/typographical errors, mostly in `NEWS.md`.
- Speed up `checkRversion` by removing checks for versions 2.x and 3.x.
gtools 3.9.1 - 2021-06-01
-------------------------
Bug fixes:
- Use valid HTTP request for example in `setTCPNoDelay` to prevent
errors when running tests.
Behind the scenes:
- Fixed numerous spelling/typographical errors.
- Update obsolete http URLs to https
gtools 3.9.0 - 2021-05-31
-------------------------
New functions:
- New `script_file` and `script_path` functions to obtain the
directory or full path to the currently executing script.
- New 'stat_mode` function to calculate the statistical mode (most
frequently occurring value).
- New `capwords` function to apply title capitalization rules to a
character vector.
- Move `baseOf` from `gplots` as requested by Steffen Möller. #2
New parameters:
- Add `scientific` parameter to `mixedsort` and `mixedorder` to
control whether numbers in scientific notation are recognized.
Resolved#7.
- Enhance `invalid` to detect `try-error` objects. #6
Bug fixes:
- Add support for R version 4 to `checkRVersion`. Resolved#5.
- Correct bug in `lastAdd` by explicitly checking for a `.Last` of
mode function.
Behind the scenes:
- Modernize package code by using `roxygen2` for documentation and
managing the NAMESPACE.
- Modernize C function registration.
- Replace http URLs with `https` and resolve broken links.
- Add github actions to automated testing
- Use pkgdown to generate HTML documentation.
- Use `styler` package to standardize R code formatting.
gtools 3.8.2 - 2020-03-23
-------------------------
Minor changes to support R 4.0
# version 2.0-7
* return `NA` as estimate when prediction/simulation fails; #80
# version 2.0-6
* fixes `object 'ret' not found` bug introduced by #63; #65#66#70
# version 2.0-5
* use multiple cores in `variogramST`, using pkg future; #63 by
@sigmafelix
* fix bug with conditional simulation using `stars` target grid and
nsim=1, #58
# version 2.0-4
* fix CRAN warning issue
# version 2.0-3
* fix bug in support for `sf` objects; #46
* fix `krigeTg` for the case when data or newdata are of class `sf` or
`sfc`; #51
(from inst/doc/CHANGES)
=====================================
CHANGES IN geoR VERSION 1.8-1
=====================================
Changes
o Removed the example in subarea() using geoRglm:::rongelap
ultil the package gets back to CRAN
o added reference to Diggle & Ribeiro (2007) on the description
file
Fixes
o no longer using attach() to address NOTE in CRAN checks
(it mostly affects image() persp() and countour() functions)
o no longer writing/assigning objects to the global environment
to address NOTE in CRAN checks
o Brain's changes in C code to address valgrind issues
=====================================
CHANGES IN geoR VERSION 1.7-5
=====================================
BUGS/Fixes
o call to sp::overlay changed to sp::over()
o changes to fix issues on CRAN reported errors/warnings
regarding namespaces and foreign calls
# energy 1.7-8
* User level changes:
- Poisson goodness-of-fit tests
- EVnormal (data) issue fixed
- gsl package required
* Internal changes
- mvnorm.e: use gsl::hyperg_1F1
- poisMstat in energy.c moved to Rcpp poisMstat.cpp
# energy 1.7-7
* User level changes:
- dcorT.test replaces dcor.ttest, now deprecated.
- dcorT replaces dcor.t, now deprecated.
- edist method "discoF" removed
* Internal changes
- BCDCOR function (used in the high dim. dcorT test) has been revised.
- edist method "discoB" correction
- changes for compatibility with R 4.0.0
(by R CMD Rdconv -t txt math/R-e1071/work/e1071/inst/NEWS.Rd)
Changes in version 1.7-8:
* Bugfixes in 'gknn()': wrong behavior in case of tied
k-nearest neighbors (for 'use_all=TRUE'), and also in case of
an overall class tie.
Changes in version 1.7-7:
* Bugfix in examples of 'cshell()'
Changes in version 1.7-6:
* Bugfix in 'scale_data_frame()' - now calls 'scale()' if x is
not a data frame.
Changes in version 1.7-5:
* NaiveBayes: better handling od character and logical features
* Added: 'gknn()' for generalized k-Nearest Neighbours (using
arbitrary proximity measures)
* Added: 'scale_data_frame()' for scaling the numeric columns
of a data frame.
Changes in version 1.7-4:
* Bug fix: "inverse" argument for class.weights argument in
'svm.default()' did not work
## Version 3.1.3 (September 2, 2021)
Patch release with miscellaneous fixes
* Fix undefined access of a vector when empty
* Require sphinx 4.0.3
* Build sphinx/doxygen docs with CMake
* Use PYIMATH_OVERRIDE_PYTHON_INSTALL_DIR to specify destination python modules
* Guard `__has_attribute` for compilers that don't support it
* Cuda safety fixes
* Replace stray Imath:: with IMATH_INTERNAL_NAMESPACE::
# dplyr 1.0.7
* `across()` uses the formula environment when inlining them (#5886).
* `summarise.rowwise_df()` is quiet when the result is ungrouped (#5875).
* `c_across()` and `across()` key deparsing not confused by long calls (#5883).
* `across()` handles named selections (#5207).
Changes in version 1.1-2 (2021-06-07)
o Miwa(n) now also works for non-zero mean|delta; n <= 4097, not 4098 (from C code);
optional 'checkCorr=' argument; documentation, one NOTE less.
Minimal C code cleanup.
mvt() <-> probval() simplification.
Handles +/-Inf as +/-maxval for non-orthrant probabilities (with a warning).
o TVPACK() now also works when some (but not all) bounds are (-Inf, Inf).
o mvtnorm() and mvt() now also return an attribute "algorithm" and gain optional
argument 'keepAttr' to allow returning bare numbers.
Changes in version 1.1-1 (2020-06-09)
o allow to turn-off symmetry checks (patch contributed by Feng Li <feng.li_at_cufe.edu.cn>
Changes in version 1.1-0 (2020-02-24)
o replace MVPHI and MVPHNV by calls to R's {p,q}norm5, following
a suggestion by Benjamin Christoffersen <boennecd_at_gmail.com>
Changes in version 1.0-12 (2020-01-06)
o fix Rdiff issues
Changes in version 1.0-11 (2019-06-19)
o improve documentation and error messages
Changes in version 1.0-10 (2019-03-04)
o eliminate warning when calling qmvt with arg sigma = 1
Changes in version 1.0-9 (2019-02-28)
o adapt to recent changes in r-devel
Changes in version 1.0-8 (2018-05-31)
o pmvt(..., sigma = ) was ignored in the univariate case
(reported by Alec Stephenson)
o documentation updates
Changes in version 1.0-7 (2018-01-25)
o pmvt(..., df = ) is scalar only
Changes in version 1.0-6 (2017-03-01)
o use registered C routines
Changes in version 1.0-5 (2016-02-02)
o improvements in quantile estimation
Changes in version 1.0-4 (2016-01-19)
o a new algorithm for quantile estimation, again. Quantiles are
now computed by a stochastic root finding algorithm. Note
that f.quantile in the output of qmv{t,norm} is now (again)
the squared difference between the cdf evaluated at the
quantile and the level. The \code{interval} argument to the
quantile functions is used as a starting value for the
root finder when available.
o clean-ups in C and R code and documentation
Changes in version 1.0-3 (2015-07-21)
o new algorithm for quantile estimation. Quantiles are
now computed by minimising the squared distance between the
distribution function and the probability whereas previous versions
used uniroot(). The procedure is now performed multiple times with
difference random seeds in order to stabilise the results. The
\code{interval} argument to the quantile functions is IGNORED now.
Changes in version 1.0-2 (2014-12-16)
o start providing C interfaces to the underlying algorithms.
mvtnorm_C_mvtdst() directly calls Alan's FORTRAN code and
can be used in other packages via LinkingTo. See
mvtnorm/inst/C_API_Example for an example very much inspired
by the example provided in package xts.
o provide .C interfaces to the FORTRAN routines and allow switching
on/off of R' RNG.
Changes in version 1.0-1 (2014-11-11)
o replace internal MVCHNV FORTRAN FUNCTION with
R's sqrt(qchisq(p, n, FALSE, FALSE). This fixes a
problem where NaN was returned as reported by
David Charles Airey <airey_david_charles_at_lilly.com>
Changes in version 1.0-0 (2014-07-08)
o After 14 years, we now feel safe enough to publish mvtnorm 1.0-0.
Many packages depend, import, or suggest mvtnorm, so this version
change also indicates that the package is now stable and, to a very
large extent, the API is frozen. We will of course continue to fix
bugs or other problems but new features are unlikely to go into this
package.
o use Authors@R in DESCRIPTION
o switch to standard NEWS format
Changes in version 0.9-99992 (2014-05-03)
o cleanups by MM
Changes in version 0.9-99991 (2014-04-25)
o version 0.9-9999 introduced new bug in dmvnorm
Changes in version 0.9-9999 (2014-04-17)
o dmvnorm (again) returns NaN in case sigma is not decomposable
Changes in version 0.9-9998 (2014-03-21)
o faster code for dmvnorm by Matteo Fasiolo <mf364 at bath.ac.uk>
Changes in version 0.9-9997 (2014-01-17)
o T. Miwa fixed a runtime error in miwa.c reported by UB sanitizer
Changes in version 0.9-9996 (2013-09-16)
o documentation updates/corrections/examples by Marius Hofert
o df = Inf
o rmvt(): argument 'mean' not allowed anymore (prone to misuse)
o pmvnorm(lower=c(-Inf, 0, 0), upper=c(0, Inf, Inf),
mean=c(0, 0, 0), sigma=S, algorithm = Miwa())
returned NaN, fixed by Xuefei Mi
Changes in version 0.9-9995 (2013-05-29)
o update to version 2013-06-29 of mvtdst.f from Alan's website
(fixed a bug for 2-dim pmvt)
Changes in version 0.9-9994 (2012-12-06)
o set.seed(29)
rmvnorm(10, ...)
produces the same first ten rows as
set.seed(29)
rmvnorm(100, ...)
o as suggested by Paul Johnson <pauljohn_at_ku.edu>. There is a new
argument pre0.9_9993 for changing back to the `old' output. This
_DOES NOT_ apply to rmvt.
Changes in version 0.9-9993 (2012-10-22)
o sigma is called `scale' matrix of {dpq}mvt, thanks to
Richard Boys <Richard.Boys_at_ncl.ac.uk> for the hint
Changes in version 0.9-9992 (2012-01-19)
o qmvt(..., df = 0, ...) gave NaN
o R CMD check works on x64 with GCC 4.6.2 (Debian 4.6.2-11)
Changes in version 0.9-9991 (2011-06-10)
o tvpack wasn't working on 64bit machines. The reason
was that the wrapper SUBROUTINEs around the original
FUNCTIONs didn't return the appropriate double precision
for unknown reasons. Redefining TVTL and BVTL as FUNCTIONs
fixed the problem.
Changes in version 0.9-999 (2011-04-26)
o still problems in fix approx_interval (when !is.null(sigma));
disable for the time being
Changes in version 0.9-99 (2011-04-21)
o fix bug in approx_interval spotted by Ravi Varadhan
<rvaradhan_at_jhmi.edu>
Changes in version 0.9-98 (2011-04-19)
o allow ... to pass arguments to rmvnorm in rmvt
Changes in version 0.9-97 (2011-01-31)
o use check.attributes = FALSE in isSymmetric calls
(requested by Nick Sabbe <nick.sabbe_at_ugent.be>)
Changes in version 0.9-96 (2011-01-28)
o use fixed interval when sigma is specified in qmvt
Changes in version 0.9-95 (2010-11-18)
o q{mvt,mvnorm} shall always return a list, not a vector
checks for correlation matrices are less picky now
Changes in version 0.9-94 (2010-11-16)
o allow for two different noncentral t distributions (via type
argument)
o add support for one-dimensional quantiles (requested by Jerry Lewis
<jerry.lewis_at_biogenidec.com>)
o documentation fixes for problems spotted by
Jerry Lewis <jerry.lewis_at_biogenidec.com>
o interface to Alan's TVPACK algorithms for 2- and 3-d
probabilities by Bjoern Bornkamp added.
Changes in version 0.9-92 (2010-07-06)
o update to new mvtdstpack.f (7/10) by Alan. Fixes
potential bias problem in higher dimension.
Changes in version 0.9-91 (2010-04-13)
o better search interval for uniroot in qmv{t,norm} speeds up
quantile estimation; suggestion by Björn Bornkamp
<bornkamp_at_statistik.tu-dortmund.de>
Changes in version 0.9-9 (2010-01-27)
o document ... in pmvt.Rd
Changes in version 0.9-8 (2009-10-27)
o add citation entry
Changes in version 0.9-7 (2009-05-22)
o make sure `error' is not NA
Changes in version 0.9-6 (2009-03-25)
o update Alan's FORTRAN code
Changes in version 0.9-5 (2009-03-17)
o fix FORTRAN bug spotted by Alex Lenkoski
<lenkoski_at_stat.washington.edu>
Changes in version 0.9-3 (2008-12-22)
o update meta data
Changes in version 0.9-2 (2008-07-08)
o be a little more liberal (tol = sqrt(.Machine$double.eps))
when testing for symmetry of covariance matrices
(and make R CMD CHECK monomvn happy again)
Changes in version 0.9-1 (2008-07-02)
o better check for covariance matrices, suggested by
James Rogers <James.A.Rogers_at_pfizer.com>
Changes in version 0.9-0 (2008-04-01)
o add support for the multivariate normal distributions in small
dimensions by Miwa's method thanks to Tetsuhisa Miwa and Xuefei Mi;
both have been added as `authors'.
o new argument `algorithm' defaulting to `GenzBretz()' with
`Miwa()' being the alternative. Those two functions are now used
to specify hyper parameters such as `abseps'.
o internal function `mvt' is no longer exported.
Changes in version 0.8-3 (2008-02-19)
o make sure rmvnorm(1, sigma = matrix(0.5, 1, 1)) works
(reported by Kurt Hornik)
Changes in version 0.8-2 (2008-02-10)
o rmvnorm() now issues a warning for non-symmetric sigma and uses
the eigenvalue decomposition as default.
o make gfortran 4.3 happy
Changes in version 0.8-1 (2007-07-24)
o Orion Poplawski <orion_at_cora.nwra.com> spotted a meaningless check in
the regression tests
Changes in version 0.8-0 (2007-07-23)
o upgrade to 7/7 version of MVTDST (includes better support for
dimensions > 100). Thanks to Karen Conneely <conneely_at_umich.edu>
for motivating the update and for checking the new version.
o rmvnorm() now can also use a Cholesky decomposition to compute
the root of sigma (thanks to Fabian Scheipl)
Changes in version 0.7-5 (2006-09-15)
o fix problem reported by valgrind
Changes in version 0.7-4 (2006-09-08)
o add long requested `dmvt'
o call RNG functions only one time
o make sure unifrnd is double precision
Changes in version 0.7-3 (2006-08-23)
o make sure pmvnorm(lo=c(-Inf,-Inf), up=c(Inf,Inf), mean=c(0,0) == 0
Changes in version 0.7-2 (2005-08-29)
o make gfortran happy (a warning about unused variable NF remains)
Changes in version 0.7-1 (2004-11-18)
o use #!/bin/sh
Changes in version 0.7-0 (2004-10-14)
o a coding session with Frank produced `qmv{t,norm}'.
try to check if the support specified by `lower' and `upper' is
empty (problem spotted by Peter Thomson <peter_at_statsresearch.co.nz>)
Alan's fix prevents negative values to be returned.
o some cosmetics
Changes in version 0.6-8 (2004-06-03)
o EXIT statements are not supported by `f2c', Alan added GOTO
statements to `MVCHNC'
Changes in version 0.6-7 (2004-05-27)
o Alan's fix to MVCHNC solves problems with large degree of freedom
Changes in version 0.6-6 (2004-01-22)
o `La.eigen' is deprecated and `eigen' replaces it in R-1.9.0
Changes in version 0.6-5 (2003-11-14)
o check if covariance matrix is pd in rmvnorm (by Fritz Leisch)
Changes in version 0.6-4 (2003-10-06)
o use new base function `cov2cor'
Changes in version 0.6-3 (2003-07-21)
o Alans changes were restricted to N <= 100, now N <= 1000
are possible again
Changes in version 0.6-2 (2003-06-25)
o Alan's recent changes to `mvt.f' make `g77 -pedantic -Wall'
happy
Changes in version 0.6-1 (2003-06-18)
o pmvt(..., df = 0, ...) will return normal probabilities for both
the univariate and multvariate problem
Changes in version 0.6-0 (2003-06-17)
o Fortran code in `mvt.f' updated to recent version by Alan and Frank.
This fixes problems with `pmvt' and large degrees of freedom.
Changes in version 0.5-15 (2003-06-16)
o a note on one-sided probabilities in `pmvt'
correlation matrices in cats example a little bit nicer
Changes in version 0.5-14 (2003-05-06)
o the package owns a vignette based on the paper in RNews 1(2)
Changes in version 0.5-12 (2003-05-08)
o allow df=0 for pmvt
Changes in version 0.5-11 (2003-04-29)
o package npmc trys to use 'mvt' which is internal: export it anyway
Changes in version 0.5-10 (2003-04-23)
o mvtnorm is now in a NAMESPACE
Changes in version 0.5-9 (2003-02-13)
o log argument added to dmvnorm, thanks to
Jerome Asselin <jerome_at_hivnet.ubc.ca>
Changes in version 0.5-8 (2003-01-21)
o fixed bugreport PR#2478: sigma for univariate probabilities
Changes in version 0.5-7 (2002-11-27)
o use R's random number generator in the FORTRAN code:
set.seed has now has the desired impact.
Changes in version 0.5-6 (2002-10-07)
o rmvt added
Changes in version 0.5-5 (2002-07-03)
o use .Fortran(..., PACKAGE="mvtnorm")
Changes in version 0.5-4 (2002-04-09)
o correlation matrices for sigma with unequal variances incorrectly
computed, added `sig2corr' for that propose, tol argument removed,
fix by Alan to mvt.f
Changes in version 0.5-2 (2002-03-22)
o Frank added `tol' argument to MVTDST, now in mvtnorm
Changes in version 0.5-1 (2002-01-24)
o pmvt(0,1) works now
Changes in version 0.5-0 (2001-12-10)
o release for R-1.4.0
Changes in version 0.4-4 (2001-12-06)
o bugfix
Changes in version 0.4-3 (2001-12-05)
o the length of lower, upper and mean (delta) is now recycled to the
length of the largest, i.e. it is possible to say
pmvnorm(lower=-Inf, upper=1, mean=rep(1,10), corr=diag(10))
Changes in version 0.4-2 (2001-12-04)
o several typos, man-pages improved
Changes in version 0.4-1 (2001-12-04)
o interface changed: sigma (covariance matrix) can be specified as
well
o {rd}mvnorm added from package e1071 (thanks to Fritz!)
Changes to Version 3.0-11
o boxCox() function now allows the use of any of the usual graphics
parameters in the plot() function. If particuar boxCox(model,
main="my title") will add a title to the plot, and boxCox(model,
main="") will suppress it.
o car::Boot(object, method="residual") will work for
method="residual" only if the car package has been previously
attached via either library(car) or require(car).
o Added error checking with vcov. argument. Changed vcov.boot to
print a warning of bootstrap replicates that returned NA
o Introduced brief.tbl(), which simply calls print(), to cope with
changes to tibbles.
o qqPlot() fills (shades) confidence envelopes by default, and
smoothers for scatterplots fill variance (spread) envelopes by
default (suggestions of Michael Friendly).
o Fixed problem in infIndexPlot.influence.lme() (reported by Francis
L. Huang).
o New "polr" and "svyolr" methods for vif() (following report by
Abra Jeffers).
o Make linearHypothesis() and Anova() work with "svyolr" objects via
their default methods.
o Regularize handling of vcov. argument in Anova() and
linearHypothesis().
o vcov. argument now works with Anova() for models produced by
lme4::lmer() and glmer(), (fixing a bug reported by Amy MacDougall).
o New linearHypothesis.lmList() method.
o New "lm" method for symbox().
o New cex and pt.wts arguments for avPlot() "lm" and "glm" methods,
and for mcPlot.lm().
o Fix handling of imatrix argument to Anova.mlm() (suggestion of
Benedikt Langenberg).
o Remove influence.merMod() and related methods in favor of versions
of these methods in the lme4 package.
o Rewrite "embedding" vignette.
o Small fixes and improvements.
Added math/R-hexbin version 1.28.2
Added devel/R-R.methodsS3 version 1.8.1
Added devel/R-R.utils version 2.10.1
Updated graphics/R-latex2exp to 0.5.0
Updated math/R-compositions to 2.0.2
Added devel/R-R.oo version 1.24.0
Added math/R-sets version 1.0.18
Added math/R-stat.extend version 0.1.4
Updated graphics/R-ggplot2 to 3.3.5
Updated graphics/R-ggtern to 3.3.5
Highest Density Regions are the smallest set in the support of a
probability distribution with the specified coverage probability.
'HDRs' may contain disjoint intervals, but can be calculated
efficiently using iterative methods. One can similarly construct
optimal (i.e., shortest) confidence intervals for some basic
inferential problems, including for population means, variances, or
proportion parameters.
Data structures and basic operations for ordinary sets,
generalizations such as fuzzy sets, multisets, and fuzzy multisets,
customizable sets, and intervals.
Version 2.0-1.9001
Minor changes / Bugfixes:
* functions that do not work with sticky classes are now wrapped
(e.g. `anova()`)
Version 2.0-1.9000
Major change: sticky classes!
Now objects of compositional classes do not miss their class
when subsetting. For example, if `x` is an "acomp" object,
x[1:2,] will also be an "acomp" object. Selection of columns work
as well, but it is a bit more tricky. Check ?`[.acomp` for
details. You can get skip this behaviour by setting
setStickyClassOption(FALSE). The dollar notation `$` also works!
Added:
* Limited support for using compositions classes as formal S4
classes, for instance in slots of S4 classes expecting a
"data.frame" or a "structure" (matrix or array).
* self-invertibility: now "rmult" objects created by any
transformation (cdt, clr, cpt, idt, ilr, ipt, iit, ilt, alr,
apt) remember the original data and the transformation between
them, and can be back-transformed with `backtransform`.
* added cdt and idt methods for objects of class "factor" (returning
the contrasts and their ipt transformation), and for "data.frame"
objects (exploiting the attribute "origClass" if they have it).
* `pwlr()`: pairwise logratio transformation (and inverse: `pwlrInv()`)
* `pwlrPlot()`: pairwise logratio plots vs covariables, both as explained
and as explanatory variables. This makes use of the ability of plot(x~y)
to react to the nature of `x` and `y` to create scatterplots, boxplots
and spineplots.
* transformation functions between variation and clrvar: variation2clrvar
and clrvar2variation
* `split()` methods for compositional classes
* new panels for filling `pairs()` plots with boxplots, densities,
kde2d-densities, etc...: check ?vp.kde2dplot
Minor Changes:
* the function to fit linear models of coregionalisation is now called
`fit.lmc()`; use full name specification with it! `compositions::fit.lmc()`
Bugfixes:
* bug in subsetting of one-column rmult object corected
## Version 3.1.2 (July 31, 2021)
Patch release that fixes a Windows header issue.
* Improve handling of ``#include <*intrin.h>``
## Version 3.1.1 (July 20, 2021)
Patch release that fixes a build failure on ARM64 macOS
## Version 3.1.0 (July 13, 2021)
Minor release with new features:
* Optimized half-to-float and float-to-half conversion, using F16C SSE
instruction set if available. Non-SSE conversion eliminates the
float-to-half exponent lookup table, and half-to-float conversion
provides a compile-time-optional bit shifting that is slower but
eliminates the need for the lookup table, for applications where
memory is limited.
Half-to-float and float-to-half conversion is also available as
C-language functions ``imath_half_to_float()`` and
``imath_float_to_half()``.
All new conversions produced identical results, and new options are
off by default to ensure backwards compatibility. See
https://imath.readthedocs.io for more info.
* NOEXCEPT specifier can be eliminated at compile-time via the
``IMATH_USE_NOEXCEPT`` CMake option.
* Python bindings:
* FixedArray objects support a "read only" state.
* FixedArray objects support python buffer protocol.
* Optimized 4x4 matrix multiplication.
Upstream changes:
CHANGES IN R 4.1.1:
NEW FEATURES:
* require(pkg, quietly = TRUE) is quieter and in particular does
not warn if the package is not found.
DEPRECATED AND DEFUNCT:
* Use of ftp:// URIs should be regarded as deprecated, with
on-going support confined to method = "libcurl" and not routinely
tested. (Nowadays no major browser supports them.)
* The non-default method = "internal" is deprecated for http:// and
ftp:// URIs for both download.file and url.
* On Windows, method = "wininet" is deprecated for http://,
https:// and ftp:// URIs for both download.file and url. (A
warning is only given for ftp://.)
For ftp:// URIs the default method is now "libcurl" if available
(which it is on CRAN builds).
method = "wininet" remains the default for http:// and https://
URIs but if libcurl is available, using method = "libcurl" is
preferred.
INSTALLATION:
* make check now works also without a LaTeX installation. (Thanks
to Sebastian Meyer's PR#18103.)
BUG FIXES:
* make check-devel works again in an R build configured with
--without-recommended-packages.
* qnbinom(p, size, mu) for large size/mu is correct now in a range
of cases (PR#18095); similarly for the (size, prob)
parametrization of the negative binomial. Also qpois() and
qbinom() are better and or faster for extreme cases. The
underlying C code has been modularized and is common to all four
cases of discrete distributions.
* gap.axis is now part of the axis() arguments which are passed
from bxp(), and hence boxplot(). (Thanks to Martin Smith's
report and suggestions in PR#18109.)
* .First and .Last can again be set from the site profile.
* seq.int(from, to, *) and seq.default(..) now work better in large
range cases where from-to is infinite where the two boundaries
are finite.
* all.equal(x,y) now returns TRUE correctly also when several
entries of abs(x) and abs(y) are close to .Machine$double.xmax,
the largest finite numeric.
* model.frame() now clears the object bit when removing the class
attribute of a value via na.action (PR#18100).
* charClass() now works with multi-character strings on Windows
(PR#18104, fixed by Bill Dunlap).
* encodeString() on Solaris now works again in Latin-1 encoding on
characters represented differently in UTF-8. Support for
surrogate pairs on Solaris has been improved.
* file.show() on Windows now works with non-ASCII path names
representable in the current native encoding (PR#18132).
* Embedded R on Windows can now find R home directory via the
registry even when installed only for the current user
(PR#18135).
* pretty(x) with finite x now returns finite values also in the
case where the extreme x values are close in size to the maximal
representable number .Machine$double.xmax.
Also, it's been tweaked for very small ranges and when a boundary
is close (or equal) to zero; e.g., pretty(c(0,1e-317)) no longer
has negative numbers, currently still warning about a very small
range, and pretty(2^-(1024 - 2^-1/(c(24,10)))) is more accurate.
* The error message for not finding vignette files when weaving has
correct file sizes now. (Thanks to Sebastian Meyer's PR#18154.)
* dnbinom(20, <large>, 1) now correctly gives 0, and similar cases
are more accurate with underflow precaution. (Reported by
Francisco Vera Alcivar in PR#18072.)
0.8.2
Changes
- Improved yank and undo alloc'ing. Malloc as much we need from start
in a long batch and avoid small mallocs.
- Changed the way lua scripts are referenced in formulas. Now they are
input as any other string formula, like this:
\"@lua("script_name.lua", 1) being 1 if the reference should be added
to the depgraph or not, making it evaluated just once or every time
the depgraph is evaluated.
NOTE that if set to 0 and the cell is referenced by another cell, it
will be executed nonetheless.
- Added new exec_lua configuration variable.
- Rows now can have height higher than one LINE. See fj and fk in
normal mode or :formatrow in command mode.
- Wrap cell content. new autowrap config value. works when nooverlap
and notruncate are set.
- Open URL or file specified on cell (PR 401)
- Import mkd files
- Multiple frozen rows/columns (fr / fc in normal mode)
- Added mapping_timeout configuration variable with a default value of
1500ms (used to be a fixed value of 800ms).
- Added mouse support in insert and command mode. The selection of a
cell gets copied to inputbar.
- Added command_timeout configuration variable.
- handle hidden rows/cols in undo/redo of ir/ic/dr/dc
- Added backwards search with '?'
- Restore \\* from old SC. \\{char} fills the cell with n occurrences
of {char} to complete its width
- Store frozen rows and cols when saving file
- Added :formatcol command (handling its undo as well)
- Added :formatrow command (handling its undo as well)
- Added undo of freeze row and col
- Handle \n in cell input, and with autowrap
- Handle undoing changes in row height produced by string input
- Changed input bar from window to pad: permits entering string longer
than COLS.
- @count counts cells with strings as well, and not just with numbers.
- Handle entering a label after :datefmt for datetime value edition.
- New dracula / papercolor themes.
- Added EvalRange() so that the graph is not evaluated entirely all the
time.
- Replaced 'EvalAll' with 'EvalRange'.
- Removed unneeded parameters on EvalJustVertex"
- Added eval_order in EvalRange and rebuild_graph.
- Added @evaluate / @sevaluate functions
- Handle @nval dependencies.
- Handle @mycol/@myrow calls during startup when no EvalJustOneVertex
is yet called
- Added @getent (FR issue #451)
- The saving format for :w command would be according to current file
format. #493
- modified savefile() of file.c to check current file format before
saving a file.
- Keep consistent with other format such as csv and save the file with
the same format as current file.
- Added HELP_HIGHLIGHT definition color for help page.
- Renamed GRID_PAIR to GRID_EVEN in color.c.
- UNDO of :fsum is handled by let.
- calc_offscr_rows/cols rewriten and renamed to calc_mobile_rows/cols
Fixes
- Fix old sc bug - issue #371
- Fix when saving sc files of cells that has some string expressions -
issue #541
- Fix leak in nval.
- Fix Issue #372.
- Free lua memory at exit.
- Fix when saving marks in file after importing xlsx file and saving it
in sc format.
- EXPR and NUMBER colors were overloaded by STRING color #546
- Fix markdown export when empty col was added left to data
- Fix in :showrows command.
- :fsum added to command mode commands. It was missing.
- Added :showcols command that was missing.
- Handled issue #429
- handled issue #374
- Ignore SIGWINCH outside ncurses.
- triggers: Avoid segfault when not being able to load module. Issue
#325
0.8.1
New features
- Braille support
- Added latex export - issue #394
- Added mappings for command mode
- Work on issues #225 and #247: support mapping of ñ and other special
chars
- Basic ODS file import
- Paste to a range of selected cells - (actually added on v0.8 - issue
438 - PR 445)
- Added txtdelim | for csv files import - issue 409
- Added macros to --version (show version)
- Support higher versions of lua.
- Handle ESC key in mappings. related to issue #492.
- Added freeze to visual mode - issue #459
Changes
- Recognise SPACE in mappings rather than simple ' '
- Visual change: Moved cmd multiplier to the left of mode
- Changed default headings colors
- many improvements to the config facility and usage - PR 519
- improved sort for 65k rows
Fixes
- Fix issues on CIRCULAR REFERENCES: #473#201#475#321. these were as
hard.
- Fix issue 417 and added a date type in xlsx import.
- Fix Engformat overlap text y número. Mostraba * (actually fixed
on v0.8)
- Fix column header display - overflow with column width 2 and column
with two letters - PR 517
- Fix isnumeric test to recognise floats: affects copy/paste - PR 450
- Fix issue setting conf variables like nonumeric
- Fix when showing empty text - 944844505d7cdb7d3d392a5c1d2b3ffde40a1fff
- Fix issue #227 - this was hard. used to segfault and keep wrong
reference after deleting row that is last in range of expr. ex.
@avg(B1:B4) and deleting row 4
- Fix issue #433: large memory use with multiple linked cells.
- Fix issue #287 - valueize didnt update depgraph
- Solved issue #399. 'g' command of NORMAL_MODE changed to 'gt'"
- Fixed vmaps in get_mappings function.
- Fixed bug on 'error' in gram.y - comment on issue #482
- Fix issue #457: cursor position could add empty rows or columns when
exporting csv files
- Fix issue #288: ^ misbehaving when having fixed rows
- Fix in mouse clicks
- Fix possible memory leak in add freeze
- XLSX: Free memory leak when looking for specified sheet.
- XLSX: Avoid segfault when using shared formulas. issue #218.
Imath is a basic, light-weight, and efficient C++ representation of 2D
and 3D vectors and matrices and other simple but useful mathematical
objects, functions, and data types common in computer graphics
applications.
While the license allows to re-distribute the source tarball
unchanged, an automatic download fails, so it will have to be
downloaded in a browser.
From the upstream description:
SMath Studio is a tiny, powerful, free mathematical program with
WYSIWYG editor and complete units of measurements support.
It provides numerous computing features and rich user interface
translated into about 40 different languages. The application also
contains an integrated mathematical reference book.
It can be easily extended based on your needs. A built-in Extensions
Manager tool allows to get access to hundreds official and third-party
resources of the following types: usage examples, plug-ins, SMath
Viewer based applications, snippets, interface translations,
interactive books, handbooks and tutorials.
* What is new in gsl-2.7:
** fixed doc bug for gsl_histogram_min_bin (lhcsky at 163.com)
** fixed bug #60335 (spmatrix test failure, J. Lamb)
** fixed bug #36577
** clarified documentation on interpolation accelerators (V. Krishnan)
** fixed bug #45521 (erroneous GSL_ERROR_NULL in ode-initval2, thanks to M. Sitte)
** fixed doc bug #59758
** fixed bug #58202 (rstat median for n=5)
** added support for native C complex number types in gsl_complex
when using a C11 compiler
** upgraded to autoconf 2.71, automake 1.16.3, libtool 2.4.6
** updated exponential fitting example for nonlinear least squares
** added banded LU decomposition and solver (gsl_linalg_LU_band)
** New functions added to the library:
- gsl_matrix_norm1
- gsl_spmatrix_norm1
- gsl_matrix_complex_conjtrans_memcpy
- gsl_linalg_QL: decomp, unpack
- gsl_linalg_complex_QR_* (thanks to Christian Krueger)
- gsl_vector_sum
- gsl_matrix_scale_rows
- gsl_matrix_scale_columns
- gsl_multilarge_linear_matrix_ptr
- gsl_multilarge_linear_rhs_ptr
- gsl_spmatrix_dense_add (renamed from gsl_spmatrix_add_to_dense)
- gsl_spmatrix_dense_sub
- gsl_linalg_cholesky_band: solvem, svxm, scale, scale_apply
- gsl_linalg_QR_UD: decomp, lssolve
- gsl_linalg_QR_UU: decomp, lssolve, QTvec
- gsl_linalg_QR_UZ: decomp
- gsl_multifit_linear_lcurvature
- gsl_spline2d_eval_extrap
** bug fix in checking vector lengths in gsl_vector_memcpy (dieggsy@pm.me)
** made gsl_sf_legendre_array_index() inline and documented
gsl_sf_legendre_nlm()
The omppool file is both in PLIST and PLIST.Linux. One needs to go. This hotfix
just removes the typo. Do we remove PLIST.Linux and assume every platform
of interest has working OpenMP? Add Darwin dep for parallel/openmp?
The problem was:
~/usr/include/g++/bits/c++0x_warning.h:32:2: error: #error
This file requires compiler and library support for the ISO C++ 2011 standard.
This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
#error This file requires compiler and library support \
^~~~~
This delivers 64 bit index BLAS libraries alongside 32 bit ones. This is often
called ILP64 in the BLAS world, as opposed to LP64 where integers are 32 bit
due to the Fortran default integer type, not to be confused with the basic
system ABI used by C. For really large vectors on modern machines, you want
an 'ILP64' BLAS and layers on top of it.
In preparation of better support for vendor BLAS libraries, I had to realize
that you better use the C interfaces supplied by them, not the netlib one
strapped on. A simple reason of practicability: The vendor blas libraries,
just like openblas, like to ship all symbols in one library, so you get them
whether you want it or not. Also implementations may skip Fortran and implement
the underlying functionality directly in C anyway, so one might skip a
layer of indirection. Future will tell if other layers will follow. We still
have the framework of individual layers from Netlib to combine with certain
implementations that miss them (Accelerate framework comes to mind, which
needs further work).
The framework of netlib reference packages for the separate libraries
is instructive and helps keeping things small when you not need all of them.
The installation location of the headers is now in a subdirectory to be able
to have 32 and 64 bit variants independently. The 32 bit ones are linked to
${PREFIX}/include to keep the old picture. We could be brave and remove
those, but there is some value in a build just trying -lcblas and
inclusion of <cblas.h> to be happy.
There is one blas.buildlink3.mk that is supposed to be used only once and
so avoids a combination of conflicting libraries (as the 64 bit index symbols
have the same names as the 32 bit ones).
Basic usage for getting LAPACK+BLAS is still the same as before. You get
CBLAS and LAPACKE by setting BLAS_C_INTERFACE=yes in the package. The 64 bit
indices are selected via BLAS_INDEX64=yes.
Due to the special nature of the Accelerate framework, a package has to
explicitly indicate support for it and it will also not appear on the
list of implementations by default. The reason is that it does provide
mainly CBLAS and CLAPACK (another version of C interface to LAPACK, f2c-based)
and BLAS/LAPACK with f2c/g77 calling conventions. A default build with
gfortran would not like that
This commit also fixes up math/py-numpy and math/py-numpy16 to follow the
new scheme, as that are the only packages directly affected by the change
in CBLAS providership.
Change the way iconv_t void* conflict is handled
using a patch from upstream to fix PR pkg/56240 .
Due to the above remove
patch-libinterp_corefcn_input.cc and
patch-liboctave_wrappers_iconv-wrappers.h .
Execute autoconf in the configuration step so that
patch-configure.ac and patch-m4_acinclude.m4 is
actually used.
Change the PLIST so that -gnu is not used
references in patch-m4_acinclude.m4 mentions this.
Explicitly don't generate any docs since
generation octave.pdf breaks and it already exists.
Install info and man pages manually since they are
not installed due to docs not being generated.
Bump pkgrevision due to PLIST change.
Upstream changes:
CHANGES IN R 4.1.0:
FUTURE DIRECTIONS:
* It is planned that the 4.1.x series will be the last to support
32-bit Windows, with production of binary packages for that
series continuing until early 2023.
SIGNIFICANT USER-VISIBLE CHANGES:
* Data set esoph in package datasets now provides the correct
numbers of controls; previously it had the numbers of cases added
to these. (Reported by Alexander Fowler in PR#17964.)
NEW FEATURES:
* www.omegahat.net is no longer one of the repositories known by
default to setRepositories(). (Nowadays it only provides source
packages and is often unavailable.)
* Function package_dependencies() (in package tools) can now use
different dependency types for direct and recursive dependencies.
* The checking of the size of tarball in R CMD check --as-cran
<pkg> may be tweaked via the new environment variable
_R_CHECK_CRAN_INCOMING_TARBALL_THRESHOLD_, as suggested in
PR#17777 by Jan Gorecki.
* Using c() to combine a factor with other factors now gives a
factor, an ordered factor when combining ordered factors with
identical levels.
* apply() gains a simplify argument to allow disabling of
simplification of results.
* The format() method for class "ftable" gets a new option justify.
(Suggested by Thomas Soeiro.)
* New ...names() utility. (Proposed by Neal Fultz in PR#17705.)
* type.convert() now warns when its as.is argument is not
specified, as the help file always said it _should_. In that
case, the default is changed to TRUE in line with its change in
read.table() (related to stringsAsFactor) in R 4.0.0.
* When printing list arrays, classed objects are now shown _via_
their format() value if this is a short enough character string,
or by giving the first elements of their class vector and their
length.
* capabilities() gets new entry "Rprof" which is TRUE when R has
been configured with the equivalent of --enable-R-profiling (as
it is by default). (Related to Michael Orlitzky's report
PR#17836.)
* str(xS4) now also shows extraneous attributes of an S4 object
xS4.
* Rudimentary support for vi-style tags in rtags() and R CMD rtags
has been added. (Based on a patch from Neal Fultz in PR#17214.)
* checkRdContents() is now exported from tools; it and also
checkDocFiles() have a new option chkInternal allowing to check
Rd files marked with keyword "internal" as well. The latter can
be activated for R CMD check via environment variable
_R_CHECK_RD_INTERNAL_TOO_.
* New functions numToBits() and numToInts() extend the raw
conversion utilities to (double precision) numeric.
* Functions URLencode() and URLdecode() in package utils now work
on vectors of URIs. (Based on patch from Bob Rudis submitted
with PR#17873.)
* path.expand() can expand ~user on most Unix-alikes even when
readline is not in use. It tries harder to expand ~, for example
should environment variable HOME be unset.
* For HTML help (both dynamic and static), Rd file links to help
pages in external packages are now treated as references to
topics rather than file names, and fall back to a file link only
if the topic is not found in the target package. The earlier rule
which prioritized file names over topics can be restored by
setting the environment variable _R_HELP_LINKS_TO_TOPICS_ to a
false value.
* c() now removes NULL arguments before dispatching to methods,
thus simplifying the implementation of c() methods, _but_ for
back compatibility keeps NULL when it is the first argument.
(From a report and patch proposal by Lionel Henry in PR#17900.)
* Vectorize()'s result function's environment no longer keeps
unneeded objects.
* Function ...elt() now propagates visibility consistently with
..n. (Thanks to Lionel Henry's PR#17905.)
* capture.output() no longer uses non-standard evaluation to
evaluate its arguments. This makes evaluation of functions like
parent.frame() more consistent. (Thanks to Lionel Henry's
PR#17907.)
* packBits(bits, type="double") now works as inverse of
numToBits(). (Thanks to Bill Dunlap's proposal in PR#17914.)
* curlGetHeaders() has two new arguments, timeout to specify the
timeout for that call (overriding getOption("timeout")) and TLS
to specify the minimum TLS protocol version to be used for
https:// URIs (_inter alia_ providing a means to check for sites
using deprecated TLS versions 1.0 and 1.1).
* For nls(), an optional constant scaleOffset may be added to the
denominator of the relative offset convergence test for cases
where the fit of a model is expected to be exact, thanks to a
proposal by John Nash. nls(*, trace=TRUE) now also shows the
convergence criterion.
* Numeric differentiation _via_ numericDeriv() gets new optional
arguments eps and central, the latter for taking central divided
differences. The latter can be activated for nls() via
nls.control(nDcentral = TRUE).
* nls() now passes the trace and control arguments to getInitial(),
notably for all self-starting models, so these can also be fit in
zero-noise situations via a scaleOffset. For this reason, the
initial function of a selfStart model must now have ... in its
argument list.
* bquote(splice = TRUE) can now splice expression vectors with
attributes: this makes it possible to splice the result of
parse(keep.source = TRUE). (Report and patch provided by Lionel
Henry in PR#17869.)
* textConnection() gets an optional name argument.
* get(), exists(), and get0() now signal an error if the first
argument has length greater than 1. Previously additional
elements were silently ignored. (Suggested by Antoine Fabri on
R-devel.)
* R now provides a shorthand notation for creating functions, e.g.
\(x) x + 1 is parsed as function(x) x + 1.
* R now provides a simple native forward pipe syntax |>. The
simple form of the forward pipe inserts the left-hand side as the
first argument in the right-hand side call. The pipe
implementation as a syntax transformation was motivated by
suggestions from Jim Hester and Lionel Henry.
* all.equal(f, g) for functions now by default also compares their
environment(.)s, notably via new all.equal method for class
function. Comparison of nls() fits, e.g., may now need
all.equal(m1, m2, check.environment = FALSE).
* .libPaths() gets a new option include.site, allowing to _not_
include the site library. (Thanks to Dario Strbenac's suggestion
and Gabe Becker's PR#18016.)
* Lithuanian translations are now available. (Thanks to Rimantas
Zakauskas.)
* names() now works for DOTSXP objects. On the other hand, in
R-lang, the R language manual, we now warn against relying on the
structure or even existence of such dot-dot-dot objects.
* all.equal() no longer gives an error on DOTSXP objects.
* capabilities("cairo") now applies only to the file-based devices
as it is now possible (if very unusual) to build R with Cairo
support for those but not for X11().
* There is optional support for tracing the progress of
loadNamespace() - see its help.
* (Not Windows.) l10n_info() reports an additional element, the
name of the encoding as reported by the OS (which may differ from
the encoding part (if any) of the result from
Sys.getlocale("LC_CTYPE").
* New function gregexec() which generalizes regexec() to find _all_
disjoint matches and well as all substrings corresponding to
parenthesized subexpressions of the given regular expression.
(Contributed by Brodie Gaslam.)
* New function charClass() in package utils to query the
wide-character classification functions in use (such as
iswprint).
* The names of quantile()'s result no longer depend on the global
getOption("digits"), but quantile() gets a new optional argument
digits = 7 instead.
* grep(), sub(), regexp and variants work considerably faster for
long factors with few levels. (Thanks to Michael Chirico's
PR#18063.)
* Provide grouping of x11() graphics windows within a window
manager such as Gnome or Unity; thanks to a patch by Ivan Krylov
posted to R-devel.
* The split() method for class data.frame now allows the f argument
to be specified as a formula.
* sprintf now warns on arguments unused by the format string.
* New palettes "Rocket" and "Mako" for hcl.colors() (approximating
palettes of the same name from the 'viridisLite' package).
Contributed by Achim Zeileis.
* The base environment and its namespace are now locked (so one can
no longer add bindings to these or remove from these).
* Rterm handling of multi-byte characters has been improved,
allowing use of such characters when supported by the current
locale.
* Rterm now accepts ALT+ +xxxxxxxx sequences to enter Unicode
characters as hex digits.
* Environment variable LC_ALL on Windows now takes precedence over
LC_CTYPE and variables for other supported categories, matching
the POSIX behaviour.
* duplicated() and anyDuplicated() are now optimized for integer
and real vectors that are known to be sorted via the ALTREP
framework. Contributed by Gabriel Becker via PR#17993.
GRAPHICS:
* The graphics engine version, R_GE_version, has been bumped to 14
and so packages that provide graphics devices should be
reinstalled.
* Graphics devices should now specify deviceVersion to indicate
what version of the graphics engine they support.
* Graphics devices can now specify deviceClip. If TRUE, the
graphics engine will never perform any clipping of output itself.
The clipping that the graphics engine does perform (for both
canClip = TRUE and canClip = FALSE) has been improved to avoid
producing unnecessary artifacts in clipped output.
* The grid package now allows gpar(fill) to be a linearGradient(),
a radialGradient(), or a pattern(). The viewport(clip) can now
also be a grob, which defines a clipping path, and there is a new
viewport(mask) that can also be a grob, which defines a mask.
These new features are only supported so far on the Cairo-based
graphics devices and on the pdf() device.
* (Not Windows.) A warning is given when a Cairo-based type is
specified for a png(), jpeg(), tiff() or bmp() device but Cairo
is unsupported (so type = "Xlib" is tried instead).
* grSoftVersion() now reports the versions of FreeType and
FontConfig if they are used directly (not _via_ Pango), as is
most commonly done on macOS.
C-LEVEL FACILITIES:
* The _standalone_ libRmath math library and R's C API now provide
log1pexp() again as documented, and gain log1mexp().
INSTALLATION on a UNIX-ALIKE:
* configure checks for a program pkgconf if program pkg-config is
not found. These are now only looked for on the path (like
almost all other programs) so if needed specify a full path to
the command in PKG_CONFIG, for example in file config.site.
* C99 function iswblank is required - it was last seen missing ca
2003 so the workaround has been removed.
* There are new configure options --with-internal-iswxxxxx,
--with-internal-towlower and --with-internal-wcwidth which allows
the system functions for wide-character classification,
case-switching and width (wcwidth and wcswidth) to be replaced by
internal ones. The first has long been used on macOS, AIX (and
Windows) but this enables it to be unselected there and selected
for other platforms (it is the new default on Solaris). The
second is new in this version of R and is selected by default on
macOS and Solaris. The third has long been the default and
remains so as it contains customizations for East Asian
languages.
System versions of these functions are often minimally
implemented (sometimes only for ASCII characters) and may not
cover the full range of Unicode points: for example Solaris (and
Windows) only cover the Basic Multilingual Plane.
* Cairo installations without X11 are more likely to be detected by
configure, when the file-based Cairo graphics devices will be
available but not X11(type = "cairo").
* There is a new configure option --with-static-cairo which is the
default on macOS. This should be used when only static cairo
(and where relevant, Pango) libraries are available.
* Cairo-based graphics devices on platforms without Pango but with
FreeType/FontConfig will make use of the latter for font
selection.
LINK-TIME OPTIMIZATION on a UNIX-ALIKE:
* Configuring with flag --enable-lto=R now also uses LTO when
installing the recommended packages.
* R CMD INSTALL and R CMD SHLIB have a new flag --use-LTO to use
LTO when compiling code, for use with R configured with
--enable-lto=R. For R configured with --enable-lto, they have
the new flag --no-use-LTO.
Packages can opt in or out of LTO compilation _via_ a UseLTO
field in the DESCRIPTION file. (As usual this can be overridden
by the command-line flags.)
BUILDING R on Windows:
* for GCC >= 8, FC_LEN_T is defined in config.h and hence character
lengths are passed from C to Fortran in _inter alia_ BLAS and
LAPACK calls.
* There is a new text file src/gnuwin32/README.compilation, which
outlines how C/Fortran code compilation is organized and
documents new features:
* R can be built with Link-Time Optimization with a suitable
compiler - doing so with GCC 9.2 showed several
inconsistencies which have been corrected.
* There is support for cross-compiling the C and Fortran code
in R and standard packages on suitable (Linux) platforms.
This is mainly intended to allow developers to test later
versions of compilers - for example using GCC 9.2 or 10.x has
detected issues that GCC 8.3 in Rtools40 does not.
* There is experimental support for cross-building R packages
with C, C++ and/or Fortran code.
* The R installer can now be optionally built to support a single
architecture (only 64-bit or only 32-bit).
PACKAGE INSTALLATION:
* The default C++ standard has been changed to C++14 where
available (which it is on all currently checked platforms): if
not (as before) C++11 is used if available otherwise C++ is not
supported.
Packages which specify C++11 will still be installed using C++11.
C++14 compilers may give deprecation warnings, most often for
std::random_shuffle (deprecated in C++14 and removed in C++17).
Either specify C++11 (see 'Writing R Extensions') or modernize
the code and if needed specify C++14. The latter has been
supported since R 3.4.0 so the package's DESCRIPTION would need
to include something like
Depends: R (>= 3.4)
PACKAGE INSTALLATION on Windows:
* R CMD INSTALL and R CMD SHLIB make use of their flag --use-LTO
when the LTO_OPT make macro is set in file etc/${R_ARCH}/Makeconf
or in a personal/site Makevars file. (For details see 'Writing R
Extensions' SS4.5.)
This provides a valuable check on code consistency. It does work
with GCC 8.3 as in Rtools40, but that does not detect everything
the CRAN checks with current GCC do.
PACKAGE INSTALLATION on macOS:
* The default personal library directory on builds with
--enable-aqua (including CRAN builds) now differs by CPU type,
one of
~/Library/R/x86_64/x.y/library
~/Library/R/arm64/x.y/library
This uses the CPU type R (and hence the packages) were built for,
so when a x86_64 build of R is run under Rosetta emulation on an
arm64 Mac, the first is used.
UTILITIES:
* R CMD check can now scan package functions for bogus return
statements, which were possibly intended as return() calls (wish
of PR#17180, patch by Sebastian Meyer). This check can be
activated via the new environment variable
_R_CHECK_BOGUS_RETURN_, true for --as-cran.
* R CMD build omits tarballs and binaries of previous builds from
the top-level package directory. (PR#17828, patch by Sebastian
Meyer.)
* R CMD check now runs sanity checks on the use of LazyData, for
example that a data directory is present and that
LazyDataCompression is not specified without LazyData and has a
documented value. For packages with large LazyData databases
without specifying LazyDataCompression, there is a reference to
the code given in 'Writing R Extensions' SS1.1.6 to test the
choice of compression (as in all the CRAN packages tested a
non-default method was preferred).
* R CMD build removes LazyData and LazyDataCompression fields from
the DESCRIPTION file of packages without a data directory.
ENCODING-RELATED CHANGES:
* The parser now treats \Unnnnnnnn escapes larger than the upper
limit for Unicode points (\U10FFFF) as an error as they cannot be
represented by valid UTF-8.
Where such escapes are used for outputting non-printable
(including unassigned) characters, 6 hex digits are used (rather
than 8 with leading zeros). For clarity, braces are used, for
example \U{0effff}.
* The parser now looks for non-ASCII spaces on Solaris (as
previously on most other OSes).
* There are warnings (including from the parser) on the use of
unpaired surrogate Unicode points such as \uD834. (These cannot
be converted to valid UTF-8.)
* Functions nchar(), tolower(), toupper() and chartr() and those
using regular expressions have more support for inputs with a
marked Latin-1 encoding.
* The character-classification functions used (by default) to
replace the system iswxxxxx functions on Windows, macOS and AIX
have been updated to Unicode 13.0.0.
The character-width tables have been updated to include new
assignments in Unicode 13.0.0.
* The code for evaluating default (extended) regular expressions
now uses the same character-classification functions as the rest
of R (previously they differed on Windows, macOS and AIX).
* There is a build-time option to replace the system's
wide-character wctrans C function by tables shipped with R: use
configure option --with-internal-towlower or (on Windows)
-DUSE_RI18N_CASE in CFLAGS when building R. This may be needed
to allow tolower() and toupper() to work with Unicode characters
beyond the Basic Multilingual Plane where not supported by system
functions (e.g. on Solaris where it is the new default).
* R is more careful when truncating UTF-8 and other multi-byte
strings that are too long to be printed, passed to the system or
libraries or placed into an internal buffer. Truncation will no
longer produce incomplete multibyte characters.
DEPRECATED AND DEFUNCT:
* Function plclust() from the package stats and
package.dependencies(), pkgDepends(), getDepList(),
installFoundDepends(), and vignetteDepends() from package tools
are defunct.
* Defunct functions checkNEWS() and readNEWS() from package tools
and CRAN.packages() from utils have been removed.
* R CMD config CXXCPP is defunct (it was deprecated in R 3.6.2).
* parallel::detectCores() drops support for Irix (retired in 2013).
* The LINPACK argument to chol.default(), chol2inv(),
solve.default() and svd() has been defunct since R 3.1.0. It was
silently ignored up to R 4.0.3 but now gives an error.
* Subsetting/indexing, such as ddd[*] or ddd$x on a DOTSXP
(dot-dot-dot) object ddd has been disabled; it worked by accident
only and was undocumented.
BUG FIXES:
* Many more C-level allocations (mainly by malloc and strdup) are
checked for success with suitable alternative actions.
* Bug fix for replayPlot(); this was turning off graphics engine
display list recording if a recorded plot was replayed in the
same session. The impact of the bug became visible if resize the
device after replay OR if attempted another savePlot() after
replay (empty display list means empty screen on resize or empty
saved plot).
* R CMD check etc now warn when a package exports non-existing S4
classes or methods, also in case of no "methods" presence.
(Reported by Alex Bertram; reproducible example and patch by
Sebastian Meyer in PR#16662.)
* boxplot() now also accepts calls for labels such as ylab, the
same as plot(). (Reported by Marius Hofert.)
* The help page for xtabs() now correctly states that addNA is
setting na.action = na.pass among others. (Reported as PR#17770
by Thomas Soeiro.)
* The R CMD check <pkg> gives a longer and more comprehensible
message when DESCRIPTION misses dependencies, e.g., in Imports:.
(Thanks to the contributors of PR#17179.)
* update.default() now calls the generic update() on the formula to
work correctly for models with extended formulas. (As reported
and suggested by Neal Fultz in PR#17865.)
* The horizontal position of leaves in a dendrogram is now correct
also with center = FALSE. (PR#14938, patch from Sebastian
Meyer.)
* all.equal.POSIXt() no longer warns about and subsequently ignores
inconsistent "tzone" attributes, but describes the difference in
its return value (PR#17277). This check can be disabled _via_
the new argument check.tzone = FALSE as suggested by Sebastian
Meyer.
* as.POSIXct() now populates the "tzone" attribute from its tz
argument when x is a logical vector consisting entirely of NA
values.
* x[[2^31]] <- v now works. (Thanks to the report and patch by
Suharto Anggono in PR#17330.)
* In log-scale graphics, axis() ticks and label positions are now
computed more carefully and symmetrically in their range,
typically providing _more_ ticks, fulfilling wishes in PR#17936.
The change really corresponds to an improved axisTicks() (package
grDevices), potentially influencing grid and lattice, for
example.
* qnorm(<very large negative>, log.p=TRUE) is now correct to at
least five digits where it was catastrophically wrong,
previously.
* sum(df) and similar "Summary"- and "Math"-group member functions
now work for data frames df with logical columns, notably also of
zero rows. (Reported to R-devel by Martin "b706".)
* unsplit() had trouble with tibbles due to unsound use of rep(NA,
len)-indexing, which should use NA_integer_ (Reported to R-devel
by Mario Annau.)
* pnorm(x, log.p = TRUE) underflows to -Inf slightly later.
* show(<hidden S4 generic>) prints better and without quotes for
non-hidden S4 generics.
* read.table() and relatives treated an "NA" column name as missing
when check.names = FALSE PR#18007.
* Parsing strings containing UTF-16 surrogate pairs such as
"\uD834\uDD1E" works better on some (uncommon) platforms.
sprintf("%X", utf8ToInt("\uD834\uDD1E")) should now give "1D11E"
on all platforms.
* identical(x,y) is no longer true for differing DOTSXP objects,
fixing PR#18032.
* str() now works correctly for DOTSXP and related exotics, even
when these are doomed.
Additionally, it no longer fails for lists with a class and
"irregular" method definitions such that e.g. lapply(*) will
necessarily fail, as currently for different igraph objects.
* Too long lines in environment files (e.g. Renviron) no longer
crash R. This limit has been increased to 100,000 bytes.
(PR#18001.)
* There is a further workaround for FreeType giving incorrect
italic font faces with cairo-based graphics devices on macOS.
* add_datalist(*, force = TRUE) (from package tools) now actually
updates an existing data/datalist file for new content. (Thanks
to a report and patch by Sebastian Meyer in PR#18048.)
* cut.Date() and cut.POSIXt() could produce an empty last interval
for breaks = "months" or breaks = "years". (Reported as PR#18053
by Christopher Carbone.)
* Detection of the encoding of 'regular' macOS locales such as
en_US (which is UTF-8) had been broken by a macOS change:
fortunately these are now rarely used with en_US.UTF-8 being
preferred.
* sub() and gsub(pattern, repl, x, *) now keep attributes of x such
as names() also when pattern is NA (PR#18079).
* Time differences ("difftime" objects) get a replacement and a
rep() method to keep "units" consistent. (Thanks to a report and
patch by Nicolas Bennett in PR#18066.)
* The \RdOpts macro, setting defaults for \Sexpr options in an Rd
file, had been ineffective since R 2.12.0: it now works again.
(Thanks to a report and patch by Sebastian Meyer in PR#18073.)
* mclapply and pvec no longer accidentally terminate parallel
processes started before by mcparallel or related calls in
package parallel (PR#18078).
* grep and other functions for evaluating (extended) regular
expressions handle in Unicode also strings not explicitly flagged
UTF-8, but flagged native when running in UTF-8 locale.
* Fixed a crash in fifo implementation on Windows (PR#18031).
* Binary mode in fifo on Windows is now properly detected from
argument open (PR#15600, PR#18031).
# dplyr 1.0.6
* `add_count()` is now generic (#5837).
* `if_any()` and `if_all()` abort when a predicate is mistakingly used
as `.cols=` (#5732).
* Multiple calls to `if_any()` and/or `if_all()` in the same
expression are now properly disambiguated (#5782).
* `filter()` now inlines `if_any()` and `if_all()` expressions. This
greatly improves performance with grouped data frames.
* Fixed behaviour of `...` in top-level `across()` calls (#5813, #5832).
* `across()` now inlines lambda-formulas. This is slightly more performant and
will allow more optimisations in the future.
* Fixed issue in `bind_rows()` causing lists to be incorrectly transformed as
data frames (#5417, #5749).
* `select()` no longer creates duplicate variables when renaming a variable
to the same name as a grouping variable (#5841).
* `dplyr_col_select()` keeps attributes for bare data frames (#5294, #5831).
* Fixed quosure handling in `dplyr::group_by()` that caused issues with extra
arguments (tidyverse/lubridate#959).
* Removed the `name` argument from the `compute()` generic (@ianmcook, #5783).
* row-wise data frames of 0 rows and list columns are supported again (#5804).
# dplyr 1.0.5
* Fixed edge case of `slice_sample()` when `weight_by=` is used and there
0 rows (#5729).
* `across()` can again use columns in functions defined inline (#5734).
* Using testthat 3rd edition.
* Fixed bugs introduced in `across()` in previous version (#5765).
* `group_by()` keeps attributes unrelated to the grouping (#5760).
* The `.cols=` argument of `if_any()` and `if_all()` defaults to `everything()`.
# dplyr 1.0.4
* Improved performance for `across()`. This makes `summarise(across())` and
`mutate(across())` perform as well as the superseded colwise equivalents (#5697).
* New functions `if_any()` and `if_all()` (#4770, #5713).
* `summarise()` silently ignores NULL results (#5708).
* Fixed a performance regression in `mutate()` when warnings occur once per
group (#5675). We no longer instrument warnings with debugging information
when `mutate()` is called within `suppressWarnings()`.
# dplyr 1.0.3
* `summarise()` no longer informs when the result is ungrouped (#5633).
* `group_by(.drop = FALSE)` preserves ordered factors (@brianrice2, #5545).
* `count()` and `tally()` are now generic.
* Removed default fallbacks to lazyeval methods; this will yield
better error messages when you call a dplyr function with the wrong
input, and is part of our long term plan to remove the deprecated
lazyeval interface.
* `inner_join()` gains a `keep` parameter for consistency with the other
mutating joins (@patrickbarks, #5581).
* Improved performance with many columns, with a dynamic data mask using active
bindings and lazy chops (#5017).
* `mutate()` and friends preserves row names in data frames once more (#5418).
* `group_by()` uses the ungrouped data for the implicit mutate step (#5598).
You might have to define an `ungroup()` method for custom classes.
For example, see https://github.com/hadley/cubelyr/pull/3.
* `relocate()` can rename columns it relocates (#5569).
* `distinct()` and `group_by()` have better error messages when the
mutate step fails (#5060).
* Clarify that `between()` is not vectorised (#5493).
* Fixed `across()` issue where data frame columns would could not be referred to
with `all_of()` in the nested case (`mutate()` within `mutate()`) (#5498).
* `across()` handles data frames with 0 columns (#5523).
* `mutate()` always keeps grouping variables, unconditional to `.keep=` (#5582).
* dplyr now depends on R 3.3.0
# dplyr 1.0.2
* Fixed `across()` issue where data frame columns would mask objects referred to
from `all_of()` (#5460).
* `bind_cols()` gains a `.name_repair` argument, passed to
`vctrs::vec_cbind()` (#5451)
* `summarise(.groups = "rowwise")` makes a rowwise data frame even if
the input data is not grouped (#5422).
# dplyr 1.0.1
* New function `cur_data_all()` similar to `cur_data()` but includes
the grouping variables (#5342).
* `count()` and `tally()` no longer automatically weights by column `n` if
present (#5298). dplyr 1.0.0 introduced this behaviour because of Hadley's
faulty memory. Historically `tally()` automatically weighted and `count()`
did not, but this behaviour was accidentally changed in 0.8.2 (#4408) so that
neither automatically weighted by `n`. Since 0.8.2 is almost a year old,
and the automatically weighting behaviour was a little confusing anyway,
we've removed it from both `count()` and `tally()`.
Use of `wt = n()` is now deprecated; now just omit the `wt` argument.
* `coalesce()` now supports data frames correctly (#5326).
* `cummean()` no longer has off-by-one indexing problem (@cropgen, #5287).
* The call stack is preserved on error. This makes it possible to `recover()`
into problematic code called from dplyr verbs (#5308).
These produce poor code and it's always better to use the CPU-specific
intrinsics instead, which we already do on platforms where the test
suite doesn't fail.
Those cmake config files are not useful for us and they are incorrect
for the upcoming 64-bit-index variants. Also, we could switch back
to the Makefile build from cmake in future. Let's treat the question of
CMake as implementation detail of the packages.
The actual use is via mk/blas.bl3 in pkgsrc and pkg-config. There isn't
even added value in these files, were they to be correct. CMake builds
can use pkg-config just fine.
Changed in xts 0.12.1:
o Various function could change the tclass of xts objects. This would happen
in calls to reclass(), period.apply(), and for logical operations on
POSIXct indexes. Thanks to Tom Andrews for the report and testing, and to
Panagiotis Cheilaris for contributing test cases (#322, #323).
o plot.xts() now supports y-axis labels via 'ylab'. Thanks to Jasen Mackie
for the suggestion and PR (#333, #334).
o The API header has been updated to fix the signatures of do_merge_xts() and
is_xts, which did not return a SEXP as required of functions callable by
.Call(). Thanks to Tomas Kalibera for the report (#317), and Dirk
Eddelbuettel for the PR (#337). This is a breaking change, but is required
to avoid the potential for a segfault.
o Michael Chirico added an internal isUTC() function to recognize many UTC-
equivalent time zones (#319).
o first() now operates correctly on non-xts objects when 'n = -1'. Previously
it would always return the last two values. Thanks to GitHub user vxg20
for the report (#325).
o The .xts() constructor would create an xts object with row names if 'x' had
row names. This shouldn't happen, because xts objects do not have or
support row names (#298).
o Claymore Marshall added many examples of time-of-day subsetting to
?subset.xts. He also fixed a bug in time-of-day subsetting where subsetting
by hour only returned wrong results (#304, #326, #328).
Changed in xts 0.12-0:
o All the index-attributes have been removed from the xts object and are now
only attached to the index itself (#245). We took great care to maintain
backward compatibility, and throw warnings when deprecated functions are
called and when index-attributes are found on the xts object. But there
still may be some breaking changes lurking in edge cases.
o @SamoPP found one edge case (#297) where an error was thrown when index()
was called on an xts object with an index that had no tclass attribute.
o ...which led Joshua to find that the index setting functions did not
always copy index attributes (#305).
o Several binary operations (e.g. +, -, !=, <, etc.) on variations of
uncommon xts objects with other xts, matrix, or vector objects, could
result in malformed xts objects (#295). Some examples of the types of
uncommon xts objects: no dim attribute, zero-width, zero-length.
o Calling as.matrix() on an xts object without a dim attribute no longer
throws an error (#294).
o merge.xts() now honors check.names = FALSE (#293).
o The possible values for major.ticks, minor.ticks, and grid.ticks.on in the
Details section of ?plot.xts have been corrected. Thanks to Harvey Smith
(@harvey131) for the report and patch (#291).
o as.zoo.xts() is now only registered for zoo versions prior to 1.8-5. Methods
to convert an object to another class should reside in the package that
implements the target class. Thanks to Kurt Hornik for the report (#287).
o .parseISO8601() no longer has a potential length-1 logical error. Thanks to
Kurt Hornik for the report (#280).
o endpoints() now honors k > 0 when on = "quarters". Thanks to @alkment for
the report (#279).
o Performance for the period.XYZ() functions (sum, prod, min, max) is much
faster (#278). Thanks to Harvey Smith (@harvey131) for the report and
examples.
o merge.xts() now creates shorter column names when passed unnamed objects.
This is now consistent with zoo (#248).
o Time-of-day performance is ~200x faster, thanks to StackOverflow
user3226167 (#193).
Changes in Version 1.8-9
o Added a basic boxplot(x, ...) method for zoo objects that simply calls
boxplot(coredata(x), ...).
o Bug fix in [.zoo and [<-.zoo where indexing with matrices did not
work correctly anymore in R 4.x.y because "matrix" objects now additionally
inherit from "array" objects. (Reported by Bill Cunliffe.)
o Improved internal functionality in na.spline.default() in the same way
na.approx.default() was enhanced in zoo 1.7-14 and 1.7-13. One difference
is that while na.approx() requires at least two non-NA observations,
na.spline() just needs one non-NA observation (using a constant to
interpolate in that case).
o If the FUN in rollapply() returns a matrix or data.frame with more than
one row per element/time point, then this is flattened now so that the
result is again a matrix with one row per element/time point.
o merge.zoo() now handles the case of all indexes being integer or numeric
by coercing the integer indexes to numeric (reported by Simone Giannerini).
o zooreg(x) now allows to create an integer index if start (and end, if any)
are integer and the implied deltat is not numerically different from an
integer value.
Changes in Version 1.8-8
o diff.zoo(x, arithmetic = FALSE) now also works if x contains negative
data.
o merge.zoo() now handles the combination of Date and numeric indexes
explicitly to work around the new behavior of c.Date() in R >= 4.1.0.
Changes in Version 1.8-7
o Added scale_type() methods for yearmon/yearqtr to facilitate ggplot2
visualizations of zoo series with yearmon/yearqtr time index (suggested
by Brian Diggs). This requires at least ggplot2 3.0.0.
o In merge.zoo() "character" columns are now processed in the same way
as "logical" columns.
o Replaced the "fruitohms" example in the "zoo" vignette because the
corresponding "DAAG" package is not actively maintained on CRAN anymore.
Instead the "Journals" data from the "AER" package is used.
# forcats 0.5.1
* Re-license as MIT (#277).
* `fct_lump_n()` no longer uses a partial argument name (@malcolmbarrett, #276).
# forcats 0.5.0
* `as_factor()` gains a logical method that always returns a factor with
levels "FALSE" and "TRUE" (#185).
* `fct_c()`, `fct_collapse()` and `fct_recode()` are now explicitly
documented as using [dynamic dots](https://rlang.r-lib.org/reference/dyn-dots.html)
(@labouz, #234).
* `fct_collapse()` now accepts a `other_level` argument, to allow a
user-specified `Other` level (@gtm19, #194). It now correctly collapses
factors when `other_level` is not `NULL` (#172), and makes `"Other"` the
last level (#202) (@gtm19, #172 & #202)
* `fct_count()` no longer converts implicit NAs into explicit NAs (#151).
* `fct_inseq()` behaves more robustly when factor levels aren't all numbers
(#221).
* `fct_lump()` has been split up into three new functions: `fct_lump_prop()`,
`fct_lump_n()`, and `fct_lump_lowfreq()`. (@jonocarroll, #167, #142).
All `fct_lump_()` functions check their inputs more carefully
(@robinson_es, #169)
* `fct_reorder2()` gains a helper function `first2()`, that sorts `.y` by the
first value of `.x` (@jtr13).
# version 0.7-1
* allow longer units grouping; #270 addressing #269 @bart1
* fix regression in `set_units` method for `mixed_units` to ensure that
ordering is preserved; #272 addressing #271
# version 0.7-0
* add `load_units_xml` to enable database reloading as well as loading
user-provided unit systems; #254 addressing #243, #244
* add `install_unit` and `remove_unit` for adding/removing custom user-defined
symbols or names, with optional mapping to existing units;
`install_symbolic_unit`, `remove_symbolic_unit`, `install_conversion_constant`,
`install_conversion_offset` are deprecated; #261 addressing #89
* add `keep_units`, a helper to apply functions that do not preserve units;
#255 addressing #252
* fix `as_units("")`, which is now equivalent to `unitless`; #199
* fix plot axes for `plot.formula` and `plot.data.frame`; #213
* fix arithmetic for powers above 1 and below -1; #264
* improve arithmetic of logarithms; #249
* export `ud_are_convertible`; #263 addressing #258 @cregouby
* remove deprecations: `as.units`, `as_cf`, `make_unit`, `parse_unit`; #259
* remove deprecated pre-computed `ud_units` database; #259
# version 0.6-7
* port `isFALSE` to fix regression in old R versions; #230 addressing #229
* fix replacement operation for `units` objects; #233 addressing #232
* fix compatibility with dplyr 1.0; #247 addressing #239
# version 0.6-6
* prettier `str` print for units and mixed units; #228 addressing #227
* add compatibility with upcoming tibble v3.0.0; #225
Without this change, I have following error with 9.99.82 host (amd64) which
has gcc-10. And buildlink for libgfortran was only made for gcc-10 side.
Adding this line makes both gcc-7 and gcc-10 buildlinked.
The error I had was: ( the line folded)
** libs
----------
gcc -shared -Wl,-R/usr/pkg/lib/R/lib -L/usr/pkg/lib/R/lib
-L/usr/pkg/lib -L/usr/lib -Wl,-R/usr/lib -Wl,-R/usr/pkg/lib -pthrea d
-L/usr/X11R7/lib -Wl,-R/usr/X11R7/lib -o classInt.so fish1.o init.o
-L/usr/pkg/gcc7/lib/gcc/x86_64--netbsd/7.5.0 -L/usr/pkg/gcc7/lib
-Wl,-R/usr/pkg/gcc7/x86_64--netbsd/lib/. -Wl,-R/usr/pkg/gcc7/lib/. -lgfortran
-lm -lquadmath -lpthread -Wl,-R/usr/pkg/lib/R/lib -L/usr/pkg/lib/R/lib
-lR
ld: cannot find -lgfortran
ld: cannot find -lquadmath
*** Error code 1
----------
Please correct me if my understanding (or correction) is wrong, sorry and tks
# generics 0.1.0
* Maintainer changed to Hadley Wickham.
* Re-licensed with MIT license.
* New `min_grid()`, `required_pkgs()`, and `tunable()` generics.
# `generics` 0.0.2
* Removed the `data` argument to `augment` to resolve issues with `broom`
# tibble 3.1.2
- Bump required versions of ellipsis and vctrs to avoid warning during package load.
# tibble 3.1.1
- `num()` and `char()` are reexported from pillar (#880).
- `tribble()` and `frame_matrix()` give an error if values are named (#871, @lorenzwalthert).
- Document `cli.num_colors` option (#410).
- Fix `new_tibble()` examples for compatibility with pillar 1.6.0.
# tibble 3.1.0
## Bug fixes
- `has_rownames()` now works correctly for data frames with a `"row.names"` attribute malformed due to a problem in `structure()` (#852).
- `tbl[FALSE, "column"] <- x` adds new column again (#846).
## Features
- Importing pillar 1.5.0, cli and crayon are now suggested packages (#475).
- `size_sum()` is now reexported from pillar (#850, @topepo).
- `as_tibble()` hints more often to use the `.name_repair` argument if column names are invalid (#855).
- `as_tibble.table()` mentions `.name_repair` argument in the error message (#839).
## Internal
- Remove compatibility code for pillar < 1.5.0 (#861).
- Moved most functions to the "stable" lifecycle (#860).
# tibble 3.0.6
- `vec_ptype_abbr.tbl_df()` and `type_sum.tbl_df()` now uses the name of the topmost class for subclasses of `"tbl_df"` (#843).
- Ignore errors in `formats.Rmd` vignette.
- Avoid tidy evaluation in pillar compatibility code.
# tibble 3.0.5
- Use testthat edition 3, compatible with testthat 3.0.1 (#827, #832).
# tibble 3.0.4
## Compatibility
- Establish compatibility with upcoming pillar 1.5.0 (#818).
- `tbl_sum()` shows "data frame" instead of "tibble" for objects inheriting from `"tbl"` but not `"tbl_df"` (#818).
- Register `format.tbl()` and `print.tbl()` methods only if pillar doesn't (#816).
- Use `vctrs::num_as_location()` internally for subset assignment of rows and columns for better error messages (#746).
- Adapt tests to the development version of testthat.
## Bug fixes
- Fix documentation link to `base::Extract`.
- `add_row(df)` adds an empty row again (#809, @DavisVaughan).
# tibble 3.0.3
- Fix test compatibility with rlang 0.4.7.
- Fix warning about `needs_dots` arguments with pillar >= 1.4.5 (#798).
# tibble 3.0.2
## Bug fixes
- `[[` works with classed indexes again, e.g. created with `glue::glue()` (#778).
- `add_column()` works without warning for 0-column data frames (#786).
- `tribble()` now better handles named inputs (#775) and objects of non-vtrs classes like `lubridate::Period` (#784) and `formattable::formattable` (#785).
## Performance
- Subsetting and subassignment are faster (#780, #790, #794).
- `is.null()` is preferred over `is_null()` for speed.
- Implement continuous benchmarking (#793).
## Compatibility
- `is_vector_s3()` is no longer reexported from pillar (#789).
# tibble 3.0.1
## Compatibility fixes
- `[<-.tbl_df()` coerces matrices to data frames (#762).
- Use delayed import for cli to work around unload problems in downstream packages (#754).
## Bug fixes
- More soft-deprecation warnings are actually visible.
- If `.name_repair` is a function, no repair messages are shown (#763).
- Remove superseded signal for `as_tibble.list()`, because `as_tibble_row()` only works for size 1.
## Enhancements
- `as_tibble(validate = )` now always triggers a deprecation warning.
- Subsetting and subassignment of rows with one-column matrices work again, with a deprecation warning (#760).
- Attempts to update a tibble row with an atomic vector give a clearer error message. Recycling message for subassignment appears only if target size is != 1.
- Tweak title of "Invariants" vignette.
# tibble 3.0.0
## Major breaking changes
- Subset assignment ("subassignment") and also subsetting has become stricter. Symptoms:
- Error: No common type for ...
- Error: Assigned data `...` must be compatible with ...
- `i` must have one dimension, not 2
- Error: Lossy cast from ... to ...
The "invariants" article at https://tibble.tidyverse.org/dev/articles/invariants.html describes the invariants that the operations follow in tibble, and the most important differences to data frames. We tried to make subsetting and subassignment as safe as possible, so that errors are caught early on, while introducing as little friction as possible.
- List classes are no longer automatically treated as vectors. Symptoms:
- Error: All columns in a tibble must be vectors
- Error: Expected a vector, not a `...` object
If you implement a class that wraps a list as S3 vector, you need to include `"list"` in the class:
```r
structure(x, class = c("your_s3_class", "list"))
```
Alternatively, implement a `vec_proxy()` method as described in https://vctrs.r-lib.org/reference/vec_data.html, or construct your class with `list_of()`.
- Added experimental support for inner names for all columns, of the form `tibble(a = c(b = 1))`. Inner names are no longer stripped when creating a tibble. They are maintained for slicing operations but not yet updated when assigning with a row subscript. This is a change that may break existing comparison tests that don't expect names in columns (#630). Symptoms:
- "names for target but not for current" when comparing
## Breaking changes
- `tibble()` now splices anonymous data frames, `tibble(tibble(a = 1), b = a)` is equivalent to `tibble(a = 1, b = a)`. This means that `tibble(iris)` now has five columns, use `tibble(iris = iris)` if the intention is to create a packed data frame (#581).
- The `name-repair` help topic is gone, refer to `?vctrs::vec_as_names` instead.
- `expression()` columns are converted to lists as a workaround for lacking support in vctrs (#657).
- `tribble()` is now stricter when combining values. All values in a column must be compatible, otherwise an error occurs (#204). The criteria for wrapping in a list column are now based on vctrs principles: non-vectors or vectors with `vctrs::vec_size()` unequal 1 are wrapped in lists.
- `$` warns unconditionally if column not found, `[[` doesn't warn.
- `add_row()` now uses `vctrs::vec_rbind()` under the hood, this means that all columns are combined with `vctrs::vec_c()`. In particular, factor columns will be converted to character if one of the columns is a character column.
## Soft deprecations
- Soft-deprecate `subclass` argument to `new_tibble()`.
- Soft-deprecate `as_tibble()` without arguments (#683).
- Preparing to move `glimpse()` and `tbl_sum()` to the pillar package. If your package implements these methods, please import the generics from pillar as soon as they become available there.
## Features
- Internals now make heavy use of the vctrs package, following most of the invariants defined there. Name repair is the responsibility of vctrs now (#464).
- All errors emitted directly by the package inherit from the `"tibble_error"` and `"rlang_error"` classes. In some cases, `"vctrs_error"` errors may be passed through. The exact subclass is subject to change.
Example: `tibble(a = quote(b))` raises an error that inherits from `"tibble_error_column_must_be_vector"`, `"tibble_error"` and `"rlang_error"`, and from `"error"` and `"condition"` like all errors. Do not rely on the wording of `"tibble_error_column_must_be_vector"`, this is likely to change.
Use the following pattern to catch errors emitted by tibble:
```r
tryCatch(
your_code(),
tibble_error = function(cnd) {
}
)
```
- New `tibble_row()` constructs tibbles that have exactly one row, or fails. Non-vector objects are automatically wrapped in a list, vectors (including lists) must have length one (#205).
- New `as_tibble_row()` and `as_tibble_col()` convert a bare vector to a one-row or one-column tibble, respectively. `as_tibble_col()` also works for non-bare vectors. Using `as_tibble()` for bare vectors is superseded (#447).
- `as_tibble.data.frame()` uses implicit row names if asked to create a column from row names. This allows lossless direct conversion of matrices with row names to tibbles (#567, @stufield).
- Implement `str.tbl_df()` (#480).
- `tribble()` now returns columns with `"unspecified"` type for 0-row tibbles.
- `add_row()` and `add_column()` now restore attributes to avoid errors when appending to sf objects or other tibble subclasses (#662).
- `add_column()` gains `.name_repair` argument. If not given, `.data` must have unique columns, with a deprecation message.
- Allow `POSIXlt` columns, they are now better supported by dplyr and other tools thanks to vctrs (#626).
- `tibble()` ignores NULL arguments, named or unnamed (#580).
- `view()` works for remote data sources by applying the same strategy as `print()` and `glimpse()`. The maximum number of rows in this case can be specified using the new `n` argument, by default it is taken from the new `"tibble.view_max"` option (#695).
## Output
- Formatting dimensions never uses scientific notation.
- `glimpse()` uses "Rows" and "Columns" instead of "Variables" and "Observations", because we're not sure if the data is tidy here (#614).
- `view()` now uses the created (or passed) title argument (#610, @xvrdm).
## Performance
- Construction and subsetting of large data frames is faster now (#717, @romainfrancois).
## Internal
- Import lifecycle package (#669).
- `new_tibble()` removes redundant subclasses from the `"class"` attribute.
- Using classed conditions. All classes start with `"tibble_error_"` and also contain `"tibble_error"` (#659).
- The magrittr pipe `%>%` is reexported.
# 1.1.1
* Fix spurious zero fractions in `pretty_bytes()` when formatting
vectors of sizes (#23).
# 1.1.0
* `pretty_dt()`, `pretty_ms()` and `pretty_sec()` now handle `NA` values
properly, and return `NA_character_` for them (#10, @petermeissner).
* `pretty_bytes()` now formats quantities just below the units better.
E.g. 1MB - 1B is formatted as `"1 MB"` instead of `""1000 kB"` (#18).
* `pretty_bytes()` now has multiple styles. In particular, a fixed width
style is useful for progress bars. Another style avoids the left-padding
with spaces.
* The new low level `compute_bytes()` function can be used to create
custom formatters for bytes.
This also affects py-{ailment,archinfo,cle,pyvex,claripy}, which get updated to
the same version at the same time.
I could not find any specific release notes or changelog.
The whole list of changes can be found at:
https://github.com/angr/angr/compare/v9.0.4378...v9.0.7833.
The upcoming lapack64 needs the library name liblapack64, the
variable for that was missing in the patch. This does not change
the build of math/lapack itself.
* What is new in gsl-2.6:
** add BLAS calls for the following functions:
- gsl_vector_memcpy
- gsl_vector_scale
- gsl_matrix_memcpy
- gsl_matrix_transpose_memcpy
- gsl_matrix_tricpy
- gsl_matrix_transpose_tricpy
** deprecated functions gsl_linalg_complex_householder_hm and
gsl_linalg_complex_householder_mh
** add unit tests for gsl_linalg_symmtd and gsl_linalg_hermtd
** multilarge TSQR algorithm has been converted to use the new Level 3 QR decomposition
** nonlinear least squares Cholesky solver now uses the new Level 3 BLAS
method; the old modified Cholesky solver is still available under
gsl_multifit_nlinear_solver_mcholesky and gsl_multilarge_nlinear_solver_mcholesky
** implemented Level 3 BLAS versions of several linear algebra routines:
- Triangular matrix inversion
- Cholesky decomposition and inversion (real and complex)
- LU decomposition and inversion (real and complex)
- QR decomposition (courtesy of Julien Langou)
- Generalized symmetric/hermitian eigensystem reduction to standard form
** removed deprecated function gsl_linalg_hessenberg()
** renamed gsl_interp2d_eval_e_extrap() to gsl_interp2d_eval_extrap_e()
to match documentation (reported by D. Lebrun-Grandie)
** renamed some of the gsl_sf_hermite functions to be more consistent
with rest of the library, and deprecated old function names
** updated gsl_sf_hermite_func() to use a newer algorithm
due to B. Bunck which is more stable for large x; also added
gsl_sf_hermite_func_fast() which uses the faster Cauchy integral
algorithm in the same paper by Bunck
** add gsl_vector_axpby()
** add un-pivoted LDLT decomposition and its banded
variant (gsl_linalg_ldlt_* and gsl_linalg_ldlt_band_*)
** add binary search tree module (gsl_bst); based on GNU libavl
** remove -u flag to gsl-histogram
** updated spmatrix module
- added routines and data structures for all types (float,uint,char,...)
- added gsl_spmatrix_scale_columns() and gsl_spmatrix_scale_rows()
- added gsl_spmatrix_add_to_dense()
- more efficient reallocation of COO/triplet matrices (no longer rebuilds binary tree)
- enhanced test suite
- added gsl_spmatrix_min_index()
** add routines for banded Cholesky decomposition (gsl_linalg_cholesky_band_*)
** documented gsl_linalg_LQ routines and added gsl_linalg_LQ_lssolve()
This updates octave and also gets some more recommened dependencies in,
namely qrupdate and Mesalib (for osmesa) and gl2ps as well as the
qscintilla editor. The glpk option is on by default again.
This version of octave comes rather close to a standard build, with
optimzied BLAS and GUI fluff. We are still missing SuiteSparse and
SUNDIALS solvers, see
https://octave.org/doc/v6.2.0/External-Packages.html
PortAudio should also be considered, and LLVM be watched if that
experimental JIT settles in.
Upstream changes since 5.x:
Summary of important user-visible changes for version 6.1.0 (2020-11-26):
------------------------------------------------------------------------
### General improvements
- The `intersect`, `setdiff`, `setxor`, `union`, and `unique` functions
accept a new sorting option `"stable"` which will return output values
in the same order as the input, rather than in ascending order.
- Complex RESTful web services can now be accessed by the `webread` and
`webwrite` functions alongside with the `weboptions` structure. One
major feature is the support for cookies to enable RESTful
communication with the web service.
Additionally, the system web browser can be opened by the `web`
function.
- The `linspace` function now produces symmetrical sequences when the
endpoints are symmetric. This is more intuitive and also compatible
with recent changes made in Matlab R2019b.
- The underlying algorithm of the `rand` function has been changed.
For single precision outputs, the algorithm has been fixed so that it
produces values strictly in the range (0, 1). Previously, it could
occasionally generate the right endpoint value of 1 (See bug #41742).
In addition, the new implementation uses a uniform interval between
floating point values in the range (0, 1) rather than targeting a
uniform density (# of random integers / length along real number
line).
- Numerical integration has been improved. The `quadv` function has
been re-written so that it can compute integrands of periodic
functions. At the same time, performance is better with ~3.5X fewer
function evaluations required. A bug in `quadgk` that caused complex
path integrals specified with `"Waypoints"` to occasionally be
calculated in the opposite direction was fixed.
- The `edit` function option `"editinplace"` now defaults to `true` and
the option `"home"` now defaults to the empty matrix `[]`. Files will
no longer be copied to the user's HOME directory for editing. The old
behavior can be restored by setting `"editinplace"` to `false` and
`"home"` to `"~/octave"`.
- The `format` command supports two new options: `uppercase` and
`lowercase` (default). With the default, print a lowercase 'e' for
the exponent character in scientific notation and lowercase 'a-f' for
the hex digits representing 10-15. With `uppercase`, print 'E' and
'A-F' instead. The previous uppercase formats, `E` and `G`, no longer
control the case of the output.
Additionally, the `format` command can be called with multiple options
for controlling the format, spacing, and case in arbitrary order.
For example:
format long e uppercase loose
Note, in the case of multiple competing format options the rightmost
one is used, and, in case of an error, the previous format remains
unchanged.
- L-value references (e.g., increment (++), decrement (--), and all
in-place assignment operators (+=, -=, *=, /=, etc.)) are no longer
allowed in anonymous functions.
- New warnings have been added about questionable uses of the colon ':'
range operator. Each has a new warning ID so that it can be disabled
if desired.
> `Octave:colon-complex-argument` : when any arg is complex
> `Octave:colon-nonscalar-argument` : when any arg is non-scalar
- The `regexp` and related functions now correctly handle and *require*
strings in UTF-8 encoding. As with any other function that requires
strings to be encoded in Octave's native encoding, you can use
`native2unicode` to convert from your preferred locale. For example,
the copyright symbol in UTF-8 is `native2unicode (169, "latin1")`.
- The startup file `octaverc` can now be located in the platform
dependent location for user local configuration files (e.g.,
${XDG_CONFIG_HOME}/octave/octaverc on Unix-like operating systems or
%APPDATA%\octave\octaverc on Windows).
- `pkg describe` now lists dependencies and inverse dependencies
(i.e., other installed packages that depend on the package in
question).
- `pkg test` now tests all functions in a package.
- When unloading a package, `pkg` now checks if any remaining loaded
packages depend on the one to be removed. If this is the case `pkg`
aborts with an explanatory error message. This behavior can be
overridden with the `-nodeps` option.
- The command
dbstop in CLASS at METHOD
now works to set breakpoints in classdef constructors and methods.
#### Graphics backend
- The use of Qt4 for graphics and the GUI is deprecated in Octave
version 6 and no further bug fixes will be made. Qt4 support will be
removed completely in Octave version 7.
- The `legend` function has been entirely rewritten. This fixes a
number of historical bugs, and also implements new properties such as
`"AutoUpdate"` and `"NumColumns"`. The gnuplot toolkit---which is no
longer actively maintained---still uses the old legend function.
- The `axis` function was updated which resolved 10 bugs affecting
axes to which `"equal"` had been applied.
- Graphic primitives now accept a color property value of `"none"`
which is useful when a particular primitive needs to be hidden
(for example, the Y-axis of an axes object with `"ycolor" = "none"`)
without hiding the entire primitive `"visibility" = "off"`.
- A new property `"FontSmoothing"` has been added to text and axes
objects that controls whether anti-aliasing is used during the
rendering of characters. The default is `"on"` which produces smooth,
more visually appealing text.
- The figure property `"windowscrollwheelfcn"`is now implemented.
This makes it possible to provide a callback function to be executed
when users manipulate the mouse wheel on a given figure.
- The figure properties `"pointer"`, `"pointershapecdata"`, and
`"pointershapehotspot"` are now implemented. This makes it possible
to change the shape of the cursor (pointer in Matlab-speak) displayed
in a plot window.
- The figure property `"paperpositionmode"` now has the default `"auto"`
rather than `"manual"`. This change is more intuitive and is
Matlab compatible.
- The appearance of patterned lines `"LineStyle" = ":"|"--"|"-."` has
been improved for small widths (`"LineWidth"` less than 1.5 pixels)
which is a common scenario.
- Printing to EPS files now uses a tight bounding box (`"-tight"`
argument to print) by default. This makes more sense for EPS
files which are normally embedded within other documents, and is
Matlab compatible. If necessary use the `"-loose"` option to
reproduce figures as they appeared in previous versions of Octave.
- The following print devices are no longer officially supported: cdr,
corel, aifm, ill, cgm, hpgl, mf and dxf. A warning will be thrown
when using those devices, and the code for supporting those formats
will eventually be removed from a future version of Octave.
- The placement of text subscripts and superscripts has been
re-engineered and now produces visually attractive results similar to
Latex.
### Matlab compatibility
- The function `unique` now returns column index vectors for the second
and third outputs. When duplicate values are present, the default
index to return is now the `"first"` occurrence. The previous Octave
behavior, or Matlab behavior from releases prior to R2012b, can be
obtained by using the `"legacy"` flag.
- The function `setdiff` with the `"rows"` argument now returns Matlab
compatible results. The previous Octave behavior, or Matlab behavior
from releases prior to R2012b, can be obtained by using the `"legacy"`
flag.
- The functions `intersect`, `setxor`, and `union` now accept a
`"legacy"` flag which changes the index values (second and third
outputs) as well as the orientation of all outputs to match Matlab
releases prior to R2012b.
- The function `streamtube` is Matlab compatible and plots tubes along
streamlines which are scaled by the vector field divergence. The
Octave-only extension `ostreamtube` can be used to visualize the flow
expansion and contraction of the vector field due to the local
crossflow divergence.
- The interpreter now supports handles to nested functions.
- The graphics properties `"LineWidth"` and `"MarkerSize"` are now
measured in points, *not* pixels. Compared to previous versions
of Octave, some lines and markers will appear 4/3 larger.
- The meta.class property "SuperClassList" has been renamed
"Superclasslist" for Matlab compatibility. The original name will
exist as an alias until Octave version 8.1.
- Inline functions created by the function `inline` are now of type
"inline" when interrogated with the `class` function. In previous
versions of Octave, the class returned was "function_handle". This
change is Matlab compatible. Inline functions are deprecated in
both Matlab and Octave and support may eventually be removed.
Anonymous functions can be used to replace all instances of inline
functions.
- The function `javaaddpath` now prepends new directories to the
existing dynamic classpath by default. To append them instead, use
the new `"-end"` argument. Multiple directories may now be specified
in a cell array of strings.
- An undocumented function `gui_mainfcn` has been added, for compatibility
with figures created with Matlab's GUIDE.
- Several validator functions of type `mustBe*` have been added. See
the list of new functions below.
### Alphabetical list of new functions added in Octave 6
* `auto_repeat_debug_command`
* `commandhistory`
* `commandwindow`
* `filebrowser`
* `is_same_file`
* `lightangle`
* `mustBeFinite`
* `mustBeGreaterThan`
* `mustBeGreaterThanOrEqual`
* `mustBeInteger`
* `mustBeLessThan`
* `mustBeLessThanOrEqual`
* `mustBeMember`
* `mustBeNegative`
* `mustBeNonempty`
* `mustBeNonNan`
* `mustBeNonnegative`
* `mustBeNonpositive`
* `mustBeNonsparse`
* `mustBeNonzero`
* `mustBeNumeric`
* `mustBeNumericOrLogical`
* `mustBePositive`
* `mustBeReal`
* `namedargs2cell`
* `newline`
* `ode23s`
* `ostreamtube`
* `rescale`
* `rotx`
* `roty`
* `rotz`
* `stream2`
* `stream3`
* `streamline`
* `streamtube`
* `uisetfont`
* `verLessThan`
* `web`
* `weboptions`
* `webread`
* `webwrite`
* `workspace`
### Deprecated functions and properties
The following functions and properties have been deprecated in Octave 6
and will be removed from Octave 8 (or whatever version is the second
major release after 6):
- Functions
Function | Replacement
-----------------------|------------------
`runtests` | `oruntests`
- Properties
Object | Property | Value
-----------------|---------------|------------
| |
- The environment variable used by `mkoctfile` for linker flags is now
`LDFLAGS` rather than `LFLAGS`. `LFLAGS` is deprecated, and a warning
is emitted if it is used, but it will continue to work.
### Removed functions and properties
The following functions and properties were deprecated in Octave 4.4
and have been removed from Octave 6.
- Functions
Function | Replacement
---------------------|------------------
`chop` | `sprintf` for visual results
`desktop` | `isguirunning`
`tmpnam` | `tempname`
`toascii` | `double`
`java2mat` | `__java2mat__`
- Properties
Object | Property | Value
---------------------|---------------------------|-----------------------
`annotation` | `edgecolor ("rectangle")` |
`axes` | `drawmode` |
`figure` | `doublebuffer` |
| `mincolormap` |
| `wvisual` |
| `wvisualmode` |
| `xdisplay` |
| `xvisual` |
| `xvisualmode` |
`line` | `interpreter` |
`patch` | `interpreter` |
`surface` | `interpreter` |
`text` | `fontweight` | `"demi"` and `"light"`
`uibuttongroup` | `fontweight` | `"demi"` and `"light"`
`uicontrol` | `fontweight` | `"demi"` and `"light"`
`uipanel` | `fontweight` | `"demi"` and `"light"`
`uitable` | `fontweight` | `"demi"` and `"light"`
It is wrong to disable OpenMP and this setting does nothing anyway.
Maybe it did in the past. Now, the build tries to use OpenMP if
possible and this is the right thing to do.
Repeat: This change doesn't affect the build at all since that variable
is not checked (since some time?).
(pkgsrc changes)
- Add TEST_DEPENDS+, but still one missing is there
(upstream changes)
# vctrs 0.3.8
* Compatibility with next version of rlang.
# vctrs 0.3.7
* `vec_ptype_abbr()` gains arguments to control whether to indicate
named vectors with a prefix (`prefix_named`) and indicate shaped
vectors with a suffix (`suffix_shape`) (#781, @krlmlr).
* `vec_ptype()` is now an optional _performance_ generic. It is not necessary
to implement, but if your class has a static prototype, you might consider
implementing a custom `vec_ptype()` method that returns a constant to
improve performance in some cases (such as common type imputation).
* New `vec_detect_complete()`, inspired by `stats::complete.cases()`. For most
vectors, this is identical to `!vec_equal_na()`. For data frames and
matrices, this detects rows that only contain non-missing values.
* `vec_order()` can now order complex vectors (#1330).
* Removed dependency on digest in favor of `rlang::hash()`.
* Fixed an issue where `vctrs_rcrd` objects were not being proxied correctly
when used as a data frame column (#1318).
* `register_s3()` is now licensed with the "unlicense" which makes it very
clear that it's fine to copy and paste into your own package
(@maxheld83, #1254).
# vctrs 0.3.6
* Fixed an issue with tibble 3.0.0 where removing column names with
`names(x) <- NULL` is now deprecated (#1298).
* Fixed a GCC 11 issue revealed by CRAN checks.
# vctrs 0.3.5
* New experimental `vec_fill_missing()` for filling in missing values with
the previous or following value. It is similar to `tidyr::fill()`, but
also works with data frames and has an additional `max_fill` argument to
limit the number of sequential missing values to fill.
* New `vec_unrep()` to compress a vector with repeated values. It is very
similar to run length encoding, and works nicely alongside `vec_rep_each()`
as a way to invert the compression.
* `vec_cbind()` with only empty data frames now preserves the common size of
the inputs in the result (#1281).
* `vec_c()` now correctly returns a named result with named empty inputs
(#1263).
* vctrs has been relicensed as MIT (#1259).
* Functions that make comparisons within a single vector, such as
`vec_unique()`, or between two vectors, such as `vec_match()`, now
convert all character input to UTF-8 before making comparisons (#1246).
* New `vec_identify_runs()` which returns a vector of identifiers for the
elements of `x` that indicate which run of repeated values they fall in
(#1081).
* Fixed an encoding translation bug with lists containing data frames which
have columns where `vec_size()` is different from the low level
`Rf_length()` (#1233).
# vctrs 0.3.4
* Fixed a GCC sanitiser error revealed by CRAN checks.
# vctrs 0.3.3
* The `table` class is now implemented as a wrapper type that
delegates its coercion methods. It used to be restricted to integer
tables (#1190).
* Named one-dimensional arrays now behave consistently with simple
vectors in `vec_names()` and `vec_rbind()`.
* `new_rcrd()` now uses `df_list()` to validate the fields. This makes
it more flexible as the fields can now be of any type supported by
vctrs, including data frames.
* Thanks to the previous change the `[[` method of records now
preserves list fields (#1205).
* `vec_data()` now preserves data frames. This is consistent with the
notion that data frames are a primitive vector type in vctrs. This
shouldn't affect code that uses `[[` and `length()` to manipulate
the data. On the other hand, the vctrs primitives like `vec_slice()`
will now operate rowwise when `vec_data()` returns a data frame.
* `outer` is now passed unrecycled to name specifications. Instead,
the return value is recycled (#1099).
* Name specifications can now return `NULL`. The names vector will
only be allocated if the spec function returns non-`NULL` during the
concatenation. This makes it possible to ignore outer names without
having to create an empty names vector when there are no inner
names:
```
zap_outer_spec <- function(outer, inner) if (is_character(inner)) inner
# `NULL` names rather than a vector of ""
names(vec_c(a = 1:2, .name_spec = zap_outer_spec))
#> NULL
# Names are allocated when inner names exist
names(vec_c(a = 1:2, c(b = 3L), .name_spec = zap_outer_spec))
#> [1] "" "" "b"
```
* Fixed several performance issues in `vec_c()` and `vec_unchop()`
with named vectors.
* The restriction that S3 lists must have a list-based proxy to be considered
lists by `vec_is_list()` has been removed (#1208).
* New performant `data_frame()` constructor for creating data frames in a way
that follows tidyverse semantics. Among other things, inputs are recycled
using tidyverse recycling rules, strings are never converted to factors,
list-columns are easier to create, and unnamed data frame input is
automatically spliced.
* New `df_list()` for safely and consistently constructing the data structure
underlying a data frame, a named list of equal-length vectors. It is useful
in combination with `new_data_frame()` for creating user-friendly
constructors for data frame subclasses that use the tidyverse rules for
recycling and determining types.
* Fixed performance issue with `vec_order()` on classed vectors which
affected `dplyr::group_by()` (tidyverse/dplyr#5423).
* `vec_set_names()` no longer alters the input in-place (#1194).
* New `vec_proxy_order()` that provides an ordering proxy for use in
`vec_order()` and `vec_sort()`. The default method falls through to
`vec_proxy_compare()`. Lists are special cased, and return an integer
vector proxy that orders by first appearance.
* List columns in data frames are no longer comparable through `vec_compare()`.
* The experimental `relax` argument has been removed from
`vec_proxy_compare()`.
Ellipsis 0.3.2
* Compatibility with next version of rlang.
* Changed license to MIT (#39).
----------------------------------------------------------------------
This includes a rework of our patchery with the hope of upstreaming a good deal
of it.
These are the upstream changes since 0.3.10:
Version 0.3.15
2-May-2021
common:
- imported improvements and bugfixes from Reference-LAPACK 3.9.1
- imported LAPACKE interface fixes from Reference-LAPACK PRs 534 + 537
- fixed a problem in the cpu detection of 0.3.14 that prevented cross-compilation
- fixed a sequence problem in the generation of softlinks to the library in GMAKE
RISC V:
- fixed compilation on RISCV (missing entry in getarch)
- fixed a potential division by zero in CROTG and ZROTG
POWER:
- fixed LAPACK testsuite failures seen with the NVIDIA HPC compiler
- improved CGEMM, DGEMM and ZGEMM performance on POWER10
- added an optimized ZGEMV kernel for POWER10
- fixed a potential division by zero in CROTG and ZROTG
x86_64:
- added support for Intel Control-flow Enforcement Technology (CET)
- reverted the DOMATCOPY_RT code to the generic C version
- fixed a bug in the AVX512 SGEMM kernel introduced in 0.3.14
- fixed misapplication of -msse flag to non-SSE cpus in DYNAMIC_ARCH
- added support for compilation of the benchmarks on older OSX versions
- fix propagation of the NO_AVX512 option in CMAKE builds
- fix compilation of the AVX512 SGEMM kernel with clang-cl on Windows
- fixed compilation of the CTESTs with INTERFACE64=1 (random faults on OSX)
- corrected the Haswell DROT kernel to require AVX2/FMA3 rather than AVX512
ARM:
- fixed a potential division by zero in CROTG and ZROTG
- fixed a potential overflow in IMATCOPY/ZIMATCOPY and the CTESTs
ARM64:
- fixed spurious reads outside the array in the SGEMM tcopy macro
- fixed a potential division by zero in CROTG and ZROTG
- fixed a segmentation fault in DYNAMIC_ARCH builds (reappeared in 0.3.14)
MIPS
- fixed a potential division by zero in CROTG and ZROTG
- fixed a potential overflow in IMATCOPY/ZIMATCOPY and the CTESTs
MIPS64:
- fixed a potential division by zero in CROTG and ZROTG
SPARC:
- fixed a potential division by zero in CROTG and ZROTG
====================================================================
Version 0.3.14
17-Mar-2021
common:
* Fixed a race condition on thread shutdown in non-OpenMP builds
* Fixed custom BUFFERSIZE option getting ignored in gmake builds
* Fixed CMAKE compilation of the TRMM kernels for GENERIC platforms
* Added CBLAS interfaces for CROTG, ZROTG, CSROT and ZDROT
* Improved performance of OMATCOPY_RT across all platforms
* Changed perl scripts to use env instead of a hardcoded /usr/bin/perl
* Fixed potential misreading of the GCC compiler version in the build scripts
* Fixed convergence problems in LAPACK complex GGEV/GGES (Reference-LAPACK #477)
* Reduced the stacksize requirements for running the LAPACK testsuite (Reference-LAPACK #335)
RISCV:
* Fixed compilation on RISCV (missing entry in getarch)
POWER:
* Fixed compilation for DYNAMIC_ARCH with clang and with old gcc versions
* Added support for compilation on FreeBSD/ppc64le
* Added optimized POWER10 kernels for SSCAL, DSCAL, CSCAL, ZSCAL
* Added optimized POWER10 kernels for SROT, DROT, CDOT, SASUM, DASUM
* Improved SSWAP, DSWAP, CSWAP, ZSWAP performance on POWER10
* Improved SCOPY and CCOPY performance on POWER10
* Improved SGEMM and DGEMM performance on POWER10
* Added support for compilation with the NVIDIA HPC compiler
x86_64:
* Added an optimized bfloat16 GEMM kernel for Cooperlake
* Added CPUID autodetection for Intel Rocket Lake and Tiger Lake cpus
* Improved the performance of SASUM,DASUM,SROT,DROT on AMD Ryzen cpus
* Added support for compilation with the NAG Fortran compiler
* Fixed recognition of the AMD AOCC compiler
* Fixed compilation for DYNAMIC_ARCH with clang on Windows
* Added support for running the BLAS/CBLAS tests on Windows
* Fixed signatures of the tls callback functions for Windows x64
* Fixed various issues with fma intrinsics support handling
ARM:
* Added support for embedded Cortex M targets via a new option EMBEDDED
ARMV8:
* Fixed the THUNDERX2T99 and NEOVERSEN1 DNRM2/ZNRM2 kernels for inputs with Inf
* Added support for the DYNAMIC_LIST option
* Added support for compilation with the NVIDIA HPC compiler
* Added support for compiling with the NAG Fortran compiler
====================================================================
Version 0.3.13
12-Dec-2020
common:
* Added a generic bfloat16 SBGEMV kernel
* Fixed a potentially severe memory leak after fork in OpenMP builds
that was introduced in 0.3.12
* Added detection of the Fujitsu Fortran compiler
* Added detection of the (e)gfortran compiler on OpenBSD
* Added support for overriding the default name of the library independently
from symbol suffixing in the gmake builds (already supported in cmake)
RISCV:
* Added a RISC V port optimized for C910V
POWER:
* Added optimized POWER10 kernels for SAXPY, CAXPY, SDOT, DDOT and DGEMV_N
* Improved DGEMM performance on POWER10
* Improved STRSM and DTRSM performance on POWER9 and POWER10
* Fixed segmemtation faults in DYNAMIC_ARCH builds
* Fixed compilation with the PGI compiler
x86:
* Fixed compilation of kernels that require SSE2 intrinsics since 0.3.12
x86_64:
* Added an optimized bfloat16 SBGEMV kernel for SkylakeX and Cooperlake
* Improved the performance of SASUM and DASUM kernels through parallelization
* Improved the performance of SROT and DROT kernels
* Improved the performance of multithreaded xSYRK
* Fixed OpenMP builds that use the LLVM Clang compiler together with GNU gfortran
(where linking of both the LLVM libomp and GNU libgomp could lead to lockups or
wrong results)
* Fixed miscompilations by old gcc 4.6
* Fixed misdetection of AVX2 capability in some Sandybridge cpus
* Fixed lockups in builds combining DYNAMIC_ARCH with TARGET=GENERIC on OpenBSD
ARM64:
* Fixed segmemtation faults in DYNAMIC_ARCH builds
MIPS:
* Improved kernels for Loongson 3R3 ("3A") and 3R4 ("3B") models, including MSA
* Fixed bugs in the MSA kernels for CGEMM, CTRMM, CGEMV and ZGEMV
* Added handling of zero increments in the MSA kernels for SSWAP and DSWAP
* Added DYNAMIC_ARCH support for MIPS64 (currently Loongson3R3/3R4 only)
SPARC:
* Fixed building 32 and 64 bit SPARC kernels with the SolarisStudio compilers
====================================================================
Version 0.3.12
24-Oct-2020
common:
* Fixed missing BLAS/LAPACK functions (inadvertently dropped during
the build system restructuring)
* Fixed argument conversion macro in LAPACKE_zgesvdq (LAPACK #458)
POWER:
* Added optimized SCOPY/CCOPY kernels for POWER10
* Increased and unified the default size of the GEMM BUFFER
* Fixed building for POWER10 in DYNAMIC_ARCH mode
* POWER10 compatibility test now checks binutils version as well
* Cleaned up compiler warnings
x86_64:
* corrected compiler version checks for AVX2 compatibility
* added compiler option -mavx2 for building with flang
* fixed direct SGEMM pathway for small matrix sizes (broken by
the code refactoring in 0.3.11)
* fixed unhandled partial register clobbers in several kernels
for AXPY,DOT,GEMV_N and GEMV_T flagged by gcc10 tree-vectorizer
ARMV8:
* improved Apple Vortex support to include cross-compiling
====================================================================
Version 0.3.11
17-Oct-2020
common:
* API change:
the newly added BFLOAT16 functions were renamed to use the
letter "B" instead of "H" to avoid potential confusion with
the IEEE "half precision float" type, i.e. the 0.3.10
SHGEMM is now SBGEMM and the corresponding build option
was changed from "BUILD_HALF" to "BUILD_BFLOAT16".
* Reduced the default BLAS3_MEM_ALLOC_THRESHOLD (used as an upper
limit for placing temporary arrays on the stack) to be compatible
with a stack size of 1mb (as imposed by the JAVA runtime library)
* Added mixed-precision dot function SBDOT and utility functions
shstobf16, shdtobf16, sbf16tos and dbf16tod to convert between
single or double precision float arrays and bfloat16 arrays
* Fixed prototypes of LAPACK_?ggsvp and LAPACK_?ggsvd functions
in lapack.h
* Fixed underflow and rounding errors in LAPACK SLANV2 and DLANV2
(causing miscalculations in e.g. SHSEQR/DHSEQR, LAPACK issue #263)
* Fixed workspace calculation in LAPACK ?GELQ (LAPACK issue #415)
* Fixed several bugs in the LAPACK testsuite
* Improved performance of TRMM and TRSM for certain problem sizes
* Fixed infinite recursions and workspace miscalculations in ReLAPACK
* CMAKE builds no longer require pkg-config for creating the .pc file
* Makefile builds no longer misread NO_CBLAS=0 or NO_LAPACK=0 as
enabling these options
* Fixed detection of gfortran when invoked through an mpi wrapper
* Improve thread reinitialization performance with OpenMP after a fork
* Added support for building only the subset of the library required
for a particular precision by specifying BUILD_SINGLE, BUILD_DOUBLE
* Optional function name prefixes and suffixes are now correctly
reflected in the generated cblas.h
* Added CMAKE build support for the LAPACK and multithreading tests
POWER:
* Added optimized support for POWER10
* Added support for compiling for POWER8 in 32bit mode
* Added support for compilation with LLVM/clang
* Added support for compilation with NVIDIA/PGI compilers
* Fixed building on big-endian POWER8
* Fixed miscompilation of ZDOTC by gcc10
* Fixed alignment errors in the POWER8 SAXPY kernel
* Improved CPU detection on AIX
* Supported building with older compilers on POWER9
x86_64:
* Added support for Intel Cooperlake
* Added autodetection of AMD Renoir/Matisse/Zen3 cpus
* Added autodetection of Intel Comet Lake cpus
* Reimplemented ?sum, ?dot and daxpy using universal intrinsics
* Reset the fpu state before using the fpu on Windows as a workaround
for a problem introduced in Windows 10 build 19041 (a.k.a. SDK 2004)
* Fixed potentially undefined behaviour in the dot and gemv_t kernels
* Fixed a potential segmentation fault in DYNAMIC_ARCH builds
* Fixed building for ZEN with PGI/NVIDIA and AMD AOCC compilers
ARMV7:
* Fixed cpu detection on BSD-like systems
ARMV8:
* Added preliminary support for Apple Vortex cpus
* Added support for the Cavium ThunderX3T110 cpu
* Fixed cpu detection on BSD-like systems
* Fixed compilation in -std=C18 mode
IBM Z:
* Added support for compiling with the clang compiler
* Improved GEMM performance on Z14
This is scheduled to be a dependency for math/octave to support the
named operations.
Qrupdate is a linear algebra library for fast updating of QR and Cholesky
decompositions.
Supported operations:
- QR rank-1 update (qr1up)
- QR column insert (qrinc)
- QR column delete (qrdec)
- QR column shift (qrshc)
- QR row insert (qrinr)
- QR row delete (qrder)
- Cholesky rank-1 update (ch1up)
- Cholesky rank-1 downdate (ch1dn)
- Cholesky symmetric insert (chinx)
- Cholesky symmetric insert (chdex)
- Cholesky symmetric shift (chshx)
- LU rank-1 update (lu1up)
- LU pivoted rank-1 update (lup1up)
-Adjusted estimation and rounding to include imaginary numbers
-Division with complex numbers
-Fixed negative scientific notation
-Basics of complex numbers
-Made sum() and ans compatible with complex numbers
-Implemented complex variants of prelude functions
-Allow a comma before 'dx' in integrals
-Always round values <= 10^-16 down to zero
-Finding square roots for estimate()
-Created synonym 'integral' for 'integrate'
-Convert fract to f64 before turning into string in estimate()
-Avoid panic because of invalid number literal
-Fixed integration with expressions like xdx
-Fixed rounding for complex numbers resulting in 0
-Integration with complex numbers
v0.18.2 (19 May 2021)
---------------------
This release reverts a regression in xarray's unstacking of dask-backed arrays.
v0.18.1 (18 May 2021)
---------------------
This release is intended as a small patch release to be compatible with the new
2021.5.0 ``dask.distributed`` release. It also includes a new
``drop_duplicates`` method, some documentation improvements, the beginnings of
our internal Index refactoring, and some bug fixes.
New Features
- Implement :py:meth:`DataArray.drop_duplicates`
to remove duplicate dimension values (:pull:`5239`).
- Allow passing ``combine_attrs`` strategy names to the ``keep_attrs`` parameter of
:py:func:`apply_ufunc` (:pull:`5041`)
- :py:meth:`Dataset.interp` now allows interpolation with non-numerical datatypes,
such as booleans, instead of dropping them. (:issue:`4761` :pull:`5008`).
- Raise more informative error when decoding time variables with invalid reference dates.
(:issue:`5199`, :pull:`5288`).
Bug fixes
- Opening netCDF files from a path that doesn't end in ``.nc`` without supplying
an explicit ``engine`` works again (:issue:`5295`), fixing a bug introduced in
0.18.0.
Documentation
- Clean up and enhance docstrings for the :py:class:`DataArray.plot` and ``Dataset.plot.*``
families of methods (:pull:`5285`).
- Explanation of deprecation cycles and how to implement them added to contributors
guide. (:pull:`5289`)
0.4.1
=====
-Use KalkNum's to_string() function in to_scientific_notation()
-kalk_web: Added integral and estimation support
-Combined to_scientific_notation() methods for both types, and added types,
and added tests
-Added wasm binding to KalkNum.estimate()
0.4.0
=====
-Fixed mod.rs errors for when rug is not used, and added some unit tests
-Estimation/rounding for final results
-Lex special symbols as one token
-Basic rounding for calculus functions
-Higher order derivatation
-Improved accuracy for derivation
-Basics of derivation
-Created 'Identifier' struct that contains prime count and name
-Fixed integrate function test
-Lex '**' as power sign
-Switched to Simpson's rule (composite, 3/8) for integration
-Fixed "dx" in integrals, and created calculus.rs
-Integration estimation
-Fixed zeroes being trimmed for non-rug numbers
-kalk: Fixed type error in kalk_num/regular.rs
-Trimming trailing zeroes for non-rug numbers
-Fixed xy^z precedence, from (xy)^2 to x(y^2)
the package previously used PKG_OPTIONS for this, but PKG_OPTIONS
are harmful in the case that they effect the resulting ABI of
library packages. this way, things that actually need fftwl and fftwq
can depend on these sub-packages.
this also fixes fftwq on NetBSD by making it pull in libquadmath.
another thing about PKG_OPTIONS for library components is that
they mean certain components don't get tested...
This was lost on the recent rework of the patches:
On NetBSD.
In PKGSRC_FORTRAM=gfortran case, libcblas has no RPATH=/usr/pkg/gccXX/lib
and libgfortran and libquadmath are not found.
In PKGSRC_FORTRAN=g95 case, libcblas has no
RPATH=/usr/pkg/lib/gcc-lib/x86_64--netbsd/4.1.2 and libf95 is not found.
Use Fortran compiler as linker instread of C compiler to fix link.
1.8:
Backwards compatibility breaks and deprecations
Please manually add any backwards compatibility breaks or deprecations here, in addition to the automatic listing below.
assumptions
AskHandler(), register_handler() and remove_handler() are deprecated. Handler now must be multipledispatch instance.
parsing
Parsing of "Q" returns AssumptionKeys instance in assumptions module. This means that sympify("Q") will no longer return a symbol.
Changes
assumptions
Q.infinite now correctly evaluates to True for oo, -oo, and zoo.
Assumption predicates now correctly evaluates to None for S.NaN.
Relational objects do not need to be wrapped by Q.is_true to be asked or refined anymore
Q.is_true wrapping over AppliedPredicate now just return the argument.
refine arg(x) when x is real and nonzero
assumptions/relation module is introduced. This module implements binary relation as predicate.
AskHandler(), register_handler() and remove_handler() are deprecated. Handler now must be multipledispatch instance.
Predicate now uses a single handler which is multipledispatch instance.
Predicate can now take multiple arguments.
Predicate("...") now returns UndefinedPredicate instance. To define a predicate, you must make a subclass of Predicate.
calculus
Using maximum with a piecewise expression over a domain no longer fails due to a bug fix in Piecewise.as_expr_set_pairs.
codegen
allowing for multi-dimensional arrays as arguments/locals in c code generation
create_expand_pow_optimization is now customizable with respect to requirement on base.
Support flattening of elementwise additions of array expressions.
Fixes to array-expressions in order to properly work with ZeroArray and ZeroMatrix.
Fixing matrix expression recognition from array-expressions.
Minor fixes to the way the AST of array expressions is built
Add normalization of CodegenArrayDiagonal when it's nested with CodegenArrayPermuteDims and CodegenArrayContraction.
Increased support for the normalization of array expressions and permutations of indices.
parse_matrix_expression( ) is now able to parse traces of matrices.
combinatorics
Added a section to the permutation docs about containment in permutation groups.
concrete
Improved infinite summation capability by adding residue formula.
A bug leading to incorrect evaluation of a summation of an exponential function was fixed.
core
Fixed a bug in Pow._eval_nseries that added Order terms to exact expansions
Fixed a bug in Expr.round that could lead to infinite recursion in integrate.
Removed deprecated ClassRegistry
get_integer_part no longer has a threshold on the approximation to closest integer based on difference, allowing floor to give more accurate results for smaller evalf precisions also
A bug causing match to fail for expressions with different signs was fixed. Previously this resulted in solve raising an exception for some inputs.
Make S(0.0) == S.false return False
.refine() method is moved from Expr to Basic.
gcd correctly handles unevaluated Mul
Fixed a bug leading to infinite recursion in the old assumptions under evaluate(False).
Fixed _eval_is_zero() functionality when imaginary numbers are involved.
Kind classification of objects is introduced. This feature is experimental, and can be replaced or deleted in the future.
Make class Eq with sets as arguments work with simplify().
Fixed a few broken cases of expr.is_integer
functions
Implemented Riemann Xi function
riemaan xi function
Added nseries expansion for besselj and bessely
Fixed leading term calculation of sin functions to handle angles outside (-pi, pi)
Added aseries expansion to error functions
Changes _eval_nseries of Abs to no longer return a Piecewise
Modified _eval_nseries to handle infinity and added _eval_as_leading_term in floor and ceiling
Added Generalized Incomplete, Generalized Regularized and Central Beta functions
Added _eval_nseries support to sign
Fixed assumption is_algebraic for exponentials with rational multiples of I*pi to be True.
geometry
Fix AssertError for vertical tangent
Geometric entities with symbolic coordinates will not be printed in SVG.
integrals
Fixed a bug that led to RecursionError in integrals involving hyperbolic functions.
The heurisch integration method was made faster by improvements in the sparse linear systems solver.
A bug leading to incorrect results when integrating Piecewise expressions where a condition simplifies to True was fixed.
logic
simplify_logic faster in most cases, especially for larger expressions.
refine() on Boolean objects reduces them to true or false if the truth value can be determined.
matrices
Fixed a bug that led to the wrong derivative result in matrix expressions.
The eye and zero functions have been made much faster for large matrices.
Added two new functions upper_triangular and lower_triangular, that return upper and lower triangular parts of a matrix.
Minus one, integers, rational numbers multiplied with MatAdd is automatically distributed.
Added function returning Wilkinson matrix
Implemented Singular Value decomposition for matrices
Implemented Upper Hessenberg Decomposition for a matrix
eigenvals, eigenvects without radical solution will be returned as CRootOf
Added function to calculate Generalized Schur Complement for Block Matrices
Added functions to compute LDU, UDL and LU decompositions for Block Matrices
Fixed issues with dot product for Matrix.orthogonalize with complex vectors.
Fixed zero division issues for Matrix.QRdecomposition with zero columns coming first than nonzero columns.
Added a function to compute the permanent of a matrix
Changed behaviour of eq() of class DenseMatrix
det has a new option 'gauss-ge' which is much faster in many cases
ntheory
Added documentation of ecm and qs functions
Fixed a bug in the is_gaussian_prime function for python complex numbers (e.g. 1+1j).
primerange now accepts a single argument i.e., primerange(input_arg) is valid and is same as primerange(2, input_arg).
Added motzkin numbers
parsing
Fixed issue with parsing logarithm bases without curly braces
Fix parse_expr parsing of expressions with methods when using the implicit_multiplications transformation.
Include the transformed code in the error message when the evaluation in parse_expr fails.
Extended the LaTeX parser with support for complex conjugates (via \overline{...}).
Latex parser does not evaluate sqrt expressions anymore.
physics.continuum_mechanics
make beam module compute correctly internal forces
physics.optics
Fixed bugs related to basic operations on TWave
physics.quantum
WignerD now evaluates to KroneckerDelta in some cases.
physics.units
Fix bug when input argument to a function is an integer
Change default behavior for functions (all function arguments must be dimensionless by default)
sin, cos, tan, cot, sec, and csc functions may have a dimensionless or angle input argument
Exponents must now be dimensionless
Constants such as pi and E are now treated as dimensionless (raised exception previously)
Numbers with an imaginary component are now treated as dimensionless (raised exception previously)
Fixed a bug with derived units and dimensions in check_dimensions.
Fix bug in convert_to returning wrong units in some cases where the linear equation system between canonical units is unsolvable.
physics.vector
Fix documentation for v1pt_theory
Introduced new methods on ReferenceFrame: .orient_axis(), .orient_explicit(), .orient_body_fixed(), .orient_space_fixed(), and .orient_quaternion(). .orient() calls out to each new method and it is recommended to use the new methods.
Added .xreplace() to Vector Class.
Added .xreplace() to Dyadic Class.
Added .evalf() to Vector class
Added .evalf() to Dyadic class
plotting
Added handling for OverflowError (when plotting functions like exp(1/x)).
polys
Added internal representation as both dense and sparse matrix
Added docstrings for Domain Matrix class
Add zeros method to DomainMatrix
A new sparse implementation of DomainMatrix is added.
make is_disjoint strict so that inequalities evaluated with solve() return consistent results
The DomainMatrix class has moved from sympy.polys.domainmatrix to sympy.polys.matrices and should now be imported as from sympy.polys.matrices import DomainMatrix.
A new polys FiniteExtension domain is added.
numberfields: implemented new algorithm for primitive_element in case ex=True.
added boilerplate index method for FracField
Solved bug in Poly.replace
Solve a bug in polytools.degree.
Use assumption system instead of structural equality check in __bool__ method of Expression domain element (fixing cases where Poly(...).is_zero would incorrectly return False)
printing
The pretty printer was made faster when printing large sequences (e.g. tuples, sets etc).
Fixed a bug which led to latex printing error in singularity function expressions.
Replaced the Theano printer with an Aesara printer
Symbols with Unicode character names and no underscores, like ω0 now properly pretty print subscripts.
Fix the printing of the vertical bar in ImageSet, ConditionSet, and ComplexRegion so that it is the full height in the pretty and LaTeX printers.
Fix the tag for the degree of a root with a rational base in MathML output.
irrational powers are no longer printed with square root sign, they are printed as fractional powers
Allow spreading assignments across multiple symbols when printing multi-member objects.
Support various array constructor types when printing arrays to GLSL.
Fixes a bug when printing negative expressions to GLSL with operators printed as functions.
Support a custom 0 substitution for printing expressions representing various GLSL types.
make cxxcode correctly print the first argument of Min/Max functions
sets
Added basic denesting functionaility for sets of the form ConditionSet(x, Contains(x, ...)).
ConditionSet.contains(x) now returns False if x is not in the base set (even if its substitution into the condition will cause an error).
FiniteSet.evalf with a subs argument now does the substitution. Previously, the argument was ignored.
Add .simplify to FiniteSet.
Make 'is_subset' work for ProductSet
changed behavior of Rationals.contains(float) to indeterminate
tests modified to include new behavior
.evalf() precisions with x and FiniteSet(x) is same now.
simplify
Fix simplify calls sympify without rational parameter
TRmorrie now takes powers of cos terms into account
solvers
Fixed a bug in solve that expanded hyperbolic function constants to equivalent exp form.
Handle x**r=0 case in invert_complex
Fixed a bug in solveset, which led to infinite recursion for solving some expressions involving radicals.
The new sparse DomainMatrix implementation is used in linsolve to make it much faster when solving large sparse systems of linear equations.
Modified symbols sorting in solvers._solve_system to ensure solve and linsolve solve the same way
Added solver for 2nd order nonlinear autonomous ODE.
speed improvement in a substep of rsolve_hyper (when computing constant solutions to constant coefficient recurrences).
Fixed incorrect solutions from rsolve for higher order recurrences
stats
Refactory and simplification of sampling backends for random variables.
Expectation can now be calculated across multiple Uniform RVs evaluating to zero
Implemented Matrix Student's t-distribution
Fixed simplification bug in Stochastic Processes by introducing abstract Distribution class
API changed for StochasticProcess.distribution which now expects a timestamp argument instead of RandomIndexedSymbol object.
Implemented FlorySchulz Distribution
implemented LogCauchy Distribution
Implemented Logit-Normal probability distribution
Fixes cdf computation of Discrete random variables by using integer limits
Added 2 new distributions in frv_types.
added support for fundamental matrix for regular markov chains
Added support for multiple RandomIndexedSymbols in DiscreteMarkovChain
tensor
Introduced objects ArraySymbol and ArrayElement for array expressions equivalent to MatrixSymbol and MatrixElement in the matrix expression module.
shape() function is introduced in array module.
Add class ZeroArray for array expressions of zero-valued elements.
Make Array differentiation(derive_by_array) work with non sympy expressions.
Added tensordiagonal( ) function to perform diagonalization of array expressions.
Adding an array with any other type now consistently gives NotImplemented.
utilities
Added official support for using CuPy to GPU accelerate lambdify functions.
Added Replacer class to simplify the creation of replacement expressions with MatchPy.
Added tests for optional parameter in MatchPy patterns.
Added string printers for MatchPy-compatible wildcards in sympy.utilities.matchpy_connector
Added WildDot, WildPlus and WildStar classes to MatchPy connector. These classes correspond to the dot, dot-plut and dot-star expressions in regular expression, but operate on SymPy expression trees and are aware of associative and commutative properties, features supported through the MatchPy library.
minlex no longer accepts is_set or small arguments
minlex and least_rotation now accept key= arguments similar to sorted.
vector
Fixed a bug with integral over ImplicitRegion objects
other
Expanding documentation to include all class members with docstrings
--1.2.0--
Released February 1, 2021
Features and optimizations:
* Support @ operator for matrix multiplication (Max Gaukler)
* Add eta() implementing the Dedekind eta function
* Optimized the python_trailing function (adhoc-king)
* Implement unary plus for matrices (Max Gaukler)
* Improved calculation of gram_index (p15-git-acc)
Compatibility:
* Enable sage backend by default only if SAGE_ROOT is set (Pauli Virtanen)
* Fix syntax warnings on CPython 3.8 (Sergey B Kirpichev)
* Changed version requirements to Python 2.7 and 3.4 or later
(Sergey B Kirpichev)
* Improvements to the setup and test code (Sergey B Kirpichev)
* Fix sys.version comparisons for compatibility with Python 3.10 (Jakub Wilk)
* Fixes to Python2/3 compatibility for printing (Christian Clauss)
Bug fixes:
* Fix a possible division by zero in shanks() (Pascal Hebbeker)
* Fixed indexing errors in deHoog, Knight & Stokes inverse laplace
transform algorithm (Kris Kuhlman)
* Corrected branch cuts of the elliprj() function in some cases
* Fix initialization of iv.matrix from non-interval matrix (Max Gaukler)
* Preserve function signatures in PrecisionManager (Viet Tran)
* Implemented float and complex conversions for ivmpf
(Jonathan Warner)
* Fixed issue with scalar-matrix multiplication for interval matrices
(Jonathan Warner)
* Fix estimation of quadrature error with multiple subintervals (Tom Minka)
* Fixed a problem with the defun decorators (Sergey B Kirpichev)
* Fix eigenvalue sorting by absolute value (Georg Ostrovski)
Cleanup:
* Documentation corrections (Paul Masson, S.Y. Lee)
* Remove inaccessible logic in fsum/fdot (Sergey B Kirpichev)
* Remove broken force_type option for matrix constructor (Max Gaukler)
* Fix text of the BSD license in LICENSE (Sergey B Kirpichev)
* Minor code cleanup (Frédéric Chapoton)
* Removed old, unused code
1.20.3:
BUG: Correct ``datetime64`` missing type overload for ``datetime.date``
MAINT: Remove ``__all__`` in favor of explicit re-exports
BLD: Strip extra newline when dumping gfortran version on MacOS
BUG: fix segfault in object/longdouble operations
MAINT: Use towncrier build explicitly
MAINT: Relax certain integer-type constraints
MAINT: Remove unsafe unions and ABCs from return-annotations
MAINT: Allow more recursion depth for scalar tests.
BUG: Initialize the full nditer buffer in case of error
BLD: remove unnecessary flag ``-faltivec`` on macOS
MAINT, CI: treats _SIMD module build warnings as errors through...
BUG: for MINGW, threads.h existence test requires GLIBC > 2.12
BUG: Make changelog recognize gh- as a PR number prefix.
REL, DOC: Prepare for the NumPy 1.20.3 release.
BUG: Fix failing mypy test in 1.20.x.
Fixes build errors of the form
/tmp/pkgsrc/math/arpack-ng/work.x86_64/arpack-ng-3.7.0/SRC/cnaitr.f:666:35:
383 | call svout (logfil, 1, rnorm, ndigit,
| 2
......
666 | call svout (logfil, 2, rtemp, ndigit,
| 1
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (scalar and rank-1)
seen in arpack-ng-3.7.0nb1
v0.18.0 (6 May 2021)
This release brings a few important performance improvements, a wide range of usability upgrades, lots of bug fixes, and some new features. These include a plugin API to add backend engines, a new theme for the documentation, curve fitting methods, and several new plotting functions.
v0.17.0 (24 Feb 2021)
This release brings a few important performance improvements, a wide range of usability upgrades, lots of bug fixes, and some new features. These include better cftime support, a new quiver plot, better unstack performance, more efficient memory use in rolling operations, and some python packaging improvements. We also have a few documentation improvements (and more planned!).
v0.16.2 (30 Nov 2020)
This release brings the ability to write to limited regions of zarr files, open zarr files with :py:func:`open_dataset` and :py:func:`open_mfdataset`, increased support for propagating attrs using the keep_attrs flag, as well as numerous bugfixes and documentation improvements.
v0.16.1 (2020-09-20)
This patch release fixes an incompatibility with a recent pandas change, which was causing an issue indexing with a datetime64. It also includes improvements to rolling, to_dataframe, cov & corr methods and bug fixes. Our documentation has a number of improvements, including fixing all doctests and confirming their accuracy on every commit.
v0.16.0 (2020-07-11)
This release adds xarray.cov & xarray.corr for covariance & correlation respectively; the idxmax & idxmin methods, the polyfit method & xarray.polyval for fitting polynomials, as well as a number of documentation improvements, other features, and bug fixes. Many thanks to all 44 contributors who contributed to this release:
version 1.5.6 (tag v1.5.6rel)
=============================
* move CI/CD tests from travis/appveyor to Github Actions.
* move netCDF4 dir under src so module can be imported in source directory.
* change numpy.bool to numpy.bool_ and numpy.float to numpy.float_ (float and
bool are deprecated in numpy 1.20)
* clean up docstrings so that they work with latest pdoc.
* update cython numpy API to remove deprecation warnings.
* Add "fromcdl" and "tocdl" Dataset methods for import/export of CDL
via ncdump/ncgen called externally via the subprocess module.
* remove python 2.7 support.
* broadcast data (if possible)to conform to variable shape when writing to a slice
version 1.5.5.1 (tag v1.5.5.1rel)
=================================
* rebuild binary wheels for linux and OSX to link netcdf-c 4.7.4 and hdf5 1.12.0.
version 1.5.5 (tag v1.5.5rel)
=============================
* have setup.py always try use nc-config first to find paths to netcdf and
hdf5 libraries and headers. Don't use pkg-config to find HDF5 if HDF5 env
vars are set (or read from setup.cfg).
* Change MIT license text to standard OSI wording.
version 1.5.4 (tag v1.5.4rel)
=============================
* fix printing of variable objects for variables that end with the letter 'u'
* make sure root group has 'name' attribute.
* add the ability to pack vlen floats to integers using
scale_factor/add_offset
* use len instead of deprecated numpy.alen
* check size on valid_range instead of using len.
* add `set_chunk_cache/get_chunk_cache` module functions to reset the
default chunk cache sizes before opening a Dataset.
* replace use of numpy's deprecated tostring() method with tobytes()
* bump minimal numpy version to 1.9 (first version to have tobytes()).
What's new in 1.2.4 (April 12, 2021)
Fixed regressions
- Fixed regression in :meth:`DataFrame.sum` when ``min_count`` greater than the :class:`DataFrame` shape was passed resulted in a ``ValueError`` (:issue:`39738`)
- Fixed regression in :meth:`DataFrame.to_json` raising ``AttributeError`` when run on PyPy (:issue:`39837`)
- Fixed regression in (in)equality comparison of ``pd.NaT`` with a non-datetimelike numpy array returning a scalar instead of an array (:issue:`40722`)
- Fixed regression in :meth:`DataFrame.where` not returning a copy in the case of an all True condition (:issue:`39595`)
- Fixed regression in :meth:`DataFrame.replace` raising ``IndexError`` when ``regex`` was a multi-key dictionary (:issue:`39338`)
- Fixed regression in repr of floats in an ``object`` column not respecting ``float_format`` when printed in the console or outputted through :meth:`DataFrame.to_string`, :meth:`DataFrame.to_html`, and :meth:`DataFrame.to_latex` (:issue:`40024`)
- Fixed regression in NumPy ufuncs such as ``np.add`` not passing through all arguments for :class:`DataFrame`
What's new in 1.2.3 (March 02, 2021)
Fixed regressions
- Fixed regression in :meth:`~DataFrame.to_excel` raising ``KeyError`` when giving duplicate columns with ``columns`` attribute (:issue:`39695`)
- Fixed regression in nullable integer unary ops propagating mask on assignment (:issue:`39943`)
- Fixed regression in :meth:`DataFrame.__setitem__` not aligning :class:`DataFrame` on right-hand side for boolean indexer (:issue:`39931`)
- Fixed regression in :meth:`~DataFrame.to_json` failing to use ``compression`` with URL-like paths that are internally opened in binary mode or with user-provided file objects that are opened in binary mode (:issue:`39985`)
- Fixed regression in :meth:`Series.sort_index` and :meth:`DataFrame.sort_index`, which exited with an ungraceful error when having kwarg ``ascending=None`` passed. Passing ``ascending=None`` is still considered invalid, and the improved error message suggests a proper usage (``ascending`` must be a boolean or a list-like of boolean) (:issue:`39434`)
- Fixed regression in :meth:`DataFrame.transform` and :meth:`Series.transform` giving incorrect column labels when passed a dictionary with a mix of list and non-list values (:issue:`40018`)
What's new in 1.2.2 (February 09, 2021)
---------------------------------------
These are the changes in pandas 1.2.2. See :ref:`release` for a full changelog
including other versions of pandas.
{{ header }}
.. ---------------------------------------------------------------------------
.. _whatsnew_122.regressions:
Fixed regressions
~~~~~~~~~~~~~~~~~
- Fixed regression in :func:`read_excel` that caused it to raise ``AttributeError`` when checking version of older xlrd versions (:issue:`38955`)
- Fixed regression in :class:`DataFrame` constructor reordering element when construction from datetime ndarray with dtype not ``"datetime64[ns]"`` (:issue:`39422`)
- Fixed regression in :meth:`DataFrame.astype` and :meth:`Series.astype` not casting to bytes dtype (:issue:`39474`)
- Fixed regression in :meth:`~DataFrame.to_pickle` failing to create bz2/xz compressed pickle files with ``protocol=5`` (:issue:`39002`)
- Fixed regression in :func:`pandas.testing.assert_series_equal` and :func:`pandas.testing.assert_frame_equal` always raising ``AssertionError`` when comparing extension dtypes (:issue:`39410`)
- Fixed regression in :meth:`~DataFrame.to_csv` opening ``codecs.StreamWriter`` in binary mode instead of in text mode and ignoring user-provided ``mode`` (:issue:`39247`)
- Fixed regression in :meth:`Categorical.astype` casting to incorrect dtype when ``np.int32`` is passed to dtype argument (:issue:`39402`)
- Fixed regression in :meth:`~DataFrame.to_excel` creating corrupt files when appending (``mode="a"``) to an existing file (:issue:`39576`)
- Fixed regression in :meth:`DataFrame.transform` failing in case of an empty DataFrame or Series (:issue:`39636`)
- Fixed regression in :meth:`~DataFrame.groupby` or :meth:`~DataFrame.resample` when aggregating an all-NaN or numeric object dtype column (:issue:`39329`)
- Fixed regression in :meth:`.Rolling.count` where the ``min_periods`` argument would be set to ``0`` after the operation (:issue:`39554`)
- Fixed regression in :func:`read_excel` that incorrectly raised when the argument ``io`` was a non-path and non-buffer and the ``engine`` argument was specified (:issue:`39528`)
.. ---------------------------------------------------------------------------
.. _whatsnew_122.bug_fixes:
Bug fixes
~~~~~~~~~
- :func:`pandas.read_excel` error message when a specified ``sheetname`` does not exist is now uniform across engines (:issue:`39250`)
- Fixed bug in :func:`pandas.read_excel` producing incorrect results when the engine ``openpyxl`` is used and the excel file is missing or has incorrect dimension information; the fix requires ``openpyxl`` >= 3.0.0, prior versions may still fail (:issue:`38956`, :issue:`39001`)
- Fixed bug in :func:`pandas.read_excel` sometimes producing a ``DataFrame`` with trailing rows of ``np.nan`` when the engine ``openpyxl`` is used (:issue:`39181`)
What's new in 1.2.1 (January 20, 2021)
--------------------------------------
These are the changes in pandas 1.2.1. See :ref:`release` for a full changelog
including other versions of pandas.
{{ header }}
.. ---------------------------------------------------------------------------
.. _whatsnew_121.regressions:
Fixed regressions
~~~~~~~~~~~~~~~~~
- Fixed regression in :meth:`~DataFrame.to_csv` that created corrupted zip files when there were more rows than ``chunksize`` (:issue:`38714`)
- Fixed regression in :meth:`~DataFrame.to_csv` opening ``codecs.StreamReaderWriter`` in binary mode instead of in text mode (:issue:`39247`)
- Fixed regression in :meth:`read_csv` and other read functions were the encoding error policy (``errors``) did not default to ``"replace"`` when no encoding was specified (:issue:`38989`)
- Fixed regression in :func:`read_excel` with non-rawbyte file handles (:issue:`38788`)
- Fixed regression in :meth:`DataFrame.to_stata` not removing the created file when an error occured (:issue:`39202`)
- Fixed regression in ``DataFrame.__setitem__`` raising ``ValueError`` when expanding :class:`DataFrame` and new column is from type ``"0 - name"`` (:issue:`39010`)
- Fixed regression in setting with :meth:`DataFrame.loc` raising ``ValueError`` when :class:`DataFrame` has unsorted :class:`MultiIndex` columns and indexer is a scalar (:issue:`38601`)
- Fixed regression in setting with :meth:`DataFrame.loc` raising ``KeyError`` with :class:`MultiIndex` and list-like columns indexer enlarging :class:`DataFrame` (:issue:`39147`)
- Fixed regression in :meth:`~DataFrame.groupby()` with :class:`Categorical` grouping column not showing unused categories for ``grouped.indices`` (:issue:`38642`)
- Fixed regression in :meth:`.GroupBy.sem` where the presence of non-numeric columns would cause an error instead of being dropped (:issue:`38774`)
- Fixed regression in :meth:`.DataFrameGroupBy.diff` raising for ``int8`` and ``int16`` columns (:issue:`39050`)
- Fixed regression in :meth:`DataFrame.groupby` when aggregating an ``ExtensionDType`` that could fail for non-numeric values (:issue:`38980`)
- Fixed regression in :meth:`.Rolling.skew` and :meth:`.Rolling.kurt` modifying the object inplace (:issue:`38908`)
- Fixed regression in :meth:`DataFrame.any` and :meth:`DataFrame.all` not returning a result for tz-aware ``datetime64`` columns (:issue:`38723`)
- Fixed regression in :meth:`DataFrame.apply` with ``axis=1`` using str accessor in apply function (:issue:`38979`)
- Fixed regression in :meth:`DataFrame.replace` raising ``ValueError`` when :class:`DataFrame` has dtype ``bytes`` (:issue:`38900`)
- Fixed regression in :meth:`Series.fillna` that raised ``RecursionError`` with ``datetime64[ns, UTC]`` dtype (:issue:`38851`)
- Fixed regression in comparisons between ``NaT`` and ``datetime.date`` objects incorrectly returning ``True`` (:issue:`39151`)
- Fixed regression in calling NumPy :func:`~numpy.ufunc.accumulate` ufuncs on DataFrames, e.g. ``np.maximum.accumulate(df)`` (:issue:`39259`)
- Fixed regression in repr of float-like strings of an ``object`` dtype having trailing 0's truncated after the decimal (:issue:`38708`)
- Fixed regression that raised ``AttributeError`` with PyArrow versions [0.16.0, 1.0.0) (:issue:`38801`)
- Fixed regression in :func:`pandas.testing.assert_frame_equal` raising ``TypeError`` with ``check_like=True`` when :class:`Index` or columns have mixed dtype (:issue:`39168`)
We have reverted a commit that resulted in several plotting related regressions in pandas 1.2.0 (:issue:`38969`, :issue:`38736`, :issue:`38865`, :issue:`38947` and :issue:`39126`).
As a result, bugs reported as fixed in pandas 1.2.0 related to inconsistent tick labeling in bar plots are again present (:issue:`26186` and :issue:`11465`)
What's new in 1.2.0 (December 26, 2020)
Performance improvements
- Performance improvements when creating DataFrame or Series with dtype ``str`` or :class:`StringDtype` from array with many string elements (:issue:`36304`, :issue:`36317`, :issue:`36325`, :issue:`36432`, :issue:`37371`)
- Performance improvement in :meth:`.GroupBy.agg` with the ``numba`` engine (:issue:`35759`)
- Performance improvements when creating :meth:`Series.map` from a huge dictionary (:issue:`34717`)
- Performance improvement in :meth:`.GroupBy.transform` with the ``numba`` engine (:issue:`36240`)
- :class:`.Styler` uuid method altered to compress data transmission over web whilst maintaining reasonably low table collision probability (:issue:`36345`)
- Performance improvement in :func:`to_datetime` with non-ns time unit for ``float`` ``dtype`` columns (:issue:`20445`)
- Performance improvement in setting values on an :class:`IntervalArray` (:issue:`36310`)
- The internal index method :meth:`~Index._shallow_copy` now makes the new index and original index share cached attributes, avoiding creating these again, if created on either. This can speed up operations that depend on creating copies of existing indexes (:issue:`36840`)
- Performance improvement in :meth:`.RollingGroupby.count` (:issue:`35625`)
- Small performance decrease to :meth:`.Rolling.min` and :meth:`.Rolling.max` for fixed windows (:issue:`36567`)
- Reduced peak memory usage in :meth:`DataFrame.to_pickle` when using ``protocol=5`` in python 3.8+ (:issue:`34244`)
- Faster ``dir`` calls when the object has many index labels, e.g. ``dir(ser)`` (:issue:`37450`)
- Performance improvement in :class:`ExpandingGroupby` (:issue:`37064`)
- Performance improvement in :meth:`Series.astype` and :meth:`DataFrame.astype` for :class:`Categorical` (:issue:`8628`)
- Performance improvement in :meth:`DataFrame.groupby` for ``float`` ``dtype`` (:issue:`28303`), changes of the underlying hash-function can lead to changes in float based indexes sort ordering for ties (e.g. :meth:`Index.value_counts`)
- Performance improvement in :meth:`pd.isin` for inputs with more than 1e6 elements (:issue:`36611`)
- Performance improvement for :meth:`DataFrame.__setitem__` with list-like indexers (:issue:`37954`)
- :meth:`read_json` now avoids reading entire file into memory when chunksize is specified (:issue:`34548`)
Bug fixes
Categorical
- :meth:`Categorical.fillna` will always return a copy, validate a passed fill value regardless of whether there are any NAs to fill, and disallow an ``NaT`` as a fill value for numeric categories (:issue:`36530`)
- Bug in :meth:`Categorical.__setitem__` that incorrectly raised when trying to set a tuple value (:issue:`20439`)
- Bug in :meth:`CategoricalIndex.equals` incorrectly casting non-category entries to ``np.nan`` (:issue:`37667`)
- Bug in :meth:`CategoricalIndex.where` incorrectly setting non-category entries to ``np.nan`` instead of raising ``TypeError`` (:issue:`37977`)
- Bug in :meth:`Categorical.to_numpy` and ``np.array(categorical)`` with tz-aware ``datetime64`` categories incorrectly dropping the time zone information instead of casting to object dtype (:issue:`38136`)
Datetime-like
- Bug in :meth:`DataFrame.combine_first` that would convert datetime-like column on other :class:`DataFrame` to integer when the column is not present in original :class:`DataFrame` (:issue:`28481`)
- Bug in :attr:`.DatetimeArray.date` where a ``ValueError`` would be raised with a read-only backing array (:issue:`33530`)
- Bug in ``NaT`` comparisons failing to raise ``TypeError`` on invalid inequality comparisons (:issue:`35046`)
- Bug in :class:`.DateOffset` where attributes reconstructed from pickle files differ from original objects when input values exceed normal ranges (e.g. months=12) (:issue:`34511`)
- Bug in :meth:`.DatetimeIndex.get_slice_bound` where ``datetime.date`` objects were not accepted or naive :class:`Timestamp` with a tz-aware :class:`.DatetimeIndex` (:issue:`35690`)
- Bug in :meth:`.DatetimeIndex.slice_locs` where ``datetime.date`` objects were not accepted (:issue:`34077`)
- Bug in :meth:`.DatetimeIndex.searchsorted`, :meth:`.TimedeltaIndex.searchsorted`, :meth:`PeriodIndex.searchsorted`, and :meth:`Series.searchsorted` with ``datetime64``, ``timedelta64`` or :class:`Period` dtype placement of ``NaT`` values being inconsistent with NumPy (:issue:`36176`, :issue:`36254`)
- Inconsistency in :class:`.DatetimeArray`, :class:`.TimedeltaArray`, and :class:`.PeriodArray` method ``__setitem__`` casting arrays of strings to datetime-like scalars but not scalar strings (:issue:`36261`)
- Bug in :meth:`.DatetimeArray.take` incorrectly allowing ``fill_value`` with a mismatched time zone (:issue:`37356`)
- Bug in :class:`.DatetimeIndex.shift` incorrectly raising when shifting empty indexes (:issue:`14811`)
- :class:`Timestamp` and :class:`.DatetimeIndex` comparisons between tz-aware and tz-naive objects now follow the standard library ``datetime`` behavior, returning ``True``/``False`` for ``!=``/``==`` and raising for inequality comparisons (:issue:`28507`)
- Bug in :meth:`.DatetimeIndex.equals` and :meth:`.TimedeltaIndex.equals` incorrectly considering ``int64`` indexes as equal (:issue:`36744`)
- :meth:`Series.to_json`, :meth:`DataFrame.to_json`, and :meth:`read_json` now implement time zone parsing when orient structure is ``table`` (:issue:`35973`)
- :meth:`astype` now attempts to convert to ``datetime64[ns, tz]`` directly from ``object`` with inferred time zone from string (:issue:`35973`)
- Bug in :meth:`.TimedeltaIndex.sum` and :meth:`Series.sum` with ``timedelta64`` dtype on an empty index or series returning ``NaT`` instead of ``Timedelta(0)`` (:issue:`31751`)
- Bug in :meth:`.DatetimeArray.shift` incorrectly allowing ``fill_value`` with a mismatched time zone (:issue:`37299`)
- Bug in adding a :class:`.BusinessDay` with nonzero ``offset`` to a non-scalar other (:issue:`37457`)
- Bug in :func:`to_datetime` with a read-only array incorrectly raising (:issue:`34857`)
- Bug in :meth:`Series.isin` with ``datetime64[ns]`` dtype and :meth:`.DatetimeIndex.isin` incorrectly casting integers to datetimes (:issue:`36621`)
- Bug in :meth:`Series.isin` with ``datetime64[ns]`` dtype and :meth:`.DatetimeIndex.isin` failing to consider tz-aware and tz-naive datetimes as always different (:issue:`35728`)
- Bug in :meth:`Series.isin` with ``PeriodDtype`` dtype and :meth:`PeriodIndex.isin` failing to consider arguments with different ``PeriodDtype`` as always different (:issue:`37528`)
- Bug in :class:`Period` constructor now correctly handles nanoseconds in the ``value`` argument (:issue:`34621` and :issue:`17053`)
Timedelta
- Bug in :class:`.TimedeltaIndex`, :class:`Series`, and :class:`DataFrame` floor-division with ``timedelta64`` dtypes and ``NaT`` in the denominator (:issue:`35529`)
- Bug in parsing of ISO 8601 durations in :class:`Timedelta` and :func:`to_datetime` (:issue:`29773`, :issue:`36204`)
- Bug in :func:`to_timedelta` with a read-only array incorrectly raising (:issue:`34857`)
- Bug in :class:`Timedelta` incorrectly truncating to sub-second portion of a string input when it has precision higher than nanoseconds (:issue:`36738`)
Timezones
- Bug in :func:`date_range` was raising ``AmbiguousTimeError`` for valid input with ``ambiguous=False`` (:issue:`35297`)
- Bug in :meth:`Timestamp.replace` was losing fold information (:issue:`37610`)
Numeric
- Bug in :func:`to_numeric` where float precision was incorrect (:issue:`31364`)
- Bug in :meth:`DataFrame.any` with ``axis=1`` and ``bool_only=True`` ignoring the ``bool_only`` keyword (:issue:`32432`)
- Bug in :meth:`Series.equals` where a ``ValueError`` was raised when NumPy arrays were compared to scalars (:issue:`35267`)
- Bug in :class:`Series` where two Series each have a :class:`.DatetimeIndex` with different time zones having those indexes incorrectly changed when performing arithmetic operations (:issue:`33671`)
- Bug in :mod:`pandas.testing` module functions when used with ``check_exact=False`` on complex numeric types (:issue:`28235`)
- Bug in :meth:`DataFrame.__rmatmul__` error handling reporting transposed shapes (:issue:`21581`)
- Bug in :class:`Series` flex arithmetic methods where the result when operating with a ``list``, ``tuple`` or ``np.ndarray`` would have an incorrect name (:issue:`36760`)
- Bug in :class:`.IntegerArray` multiplication with ``timedelta`` and ``np.timedelta64`` objects (:issue:`36870`)
- Bug in :class:`MultiIndex` comparison with tuple incorrectly treating tuple as array-like (:issue:`21517`)
- Bug in :meth:`DataFrame.diff` with ``datetime64`` dtypes including ``NaT`` values failing to fill ``NaT`` results correctly (:issue:`32441`)
- Bug in :class:`DataFrame` arithmetic ops incorrectly accepting keyword arguments (:issue:`36843`)
- Bug in :class:`.IntervalArray` comparisons with :class:`Series` not returning Series (:issue:`36908`)
- Bug in :class:`DataFrame` allowing arithmetic operations with list of array-likes with undefined results. Behavior changed to raising ``ValueError`` (:issue:`36702`)
- Bug in :meth:`DataFrame.std` with ``timedelta64`` dtype and ``skipna=False`` (:issue:`37392`)
- Bug in :meth:`DataFrame.min` and :meth:`DataFrame.max` with ``datetime64`` dtype and ``skipna=False`` (:issue:`36907`)
- Bug in :meth:`DataFrame.idxmax` and :meth:`DataFrame.idxmin` with mixed dtypes incorrectly raising ``TypeError`` (:issue:`38195`)
Conversion
- Bug in :meth:`DataFrame.to_dict` with ``orient='records'`` now returns python native datetime objects for datetime-like columns (:issue:`21256`)
- Bug in :meth:`Series.astype` conversion from ``string`` to ``float`` raised in presence of ``pd.NA`` values (:issue:`37626`)
Strings
- Bug in :meth:`Series.to_string`, :meth:`DataFrame.to_string`, and :meth:`DataFrame.to_latex` adding a leading space when ``index=False`` (:issue:`24980`)
- Bug in :func:`to_numeric` raising a ``TypeError`` when attempting to convert a string dtype Series containing only numeric strings and ``NA`` (:issue:`37262`)
Interval
- Bug in :meth:`DataFrame.replace` and :meth:`Series.replace` where :class:`Interval` dtypes would be converted to object dtypes (:issue:`34871`)
- Bug in :meth:`IntervalIndex.take` with negative indices and ``fill_value=None`` (:issue:`37330`)
- Bug in :meth:`IntervalIndex.putmask` with datetime-like dtype incorrectly casting to object dtype (:issue:`37968`)
- Bug in :meth:`IntervalArray.astype` incorrectly dropping dtype information with a :class:`CategoricalDtype` object (:issue:`37984`)
Indexing
- Bug in :meth:`PeriodIndex.get_loc` incorrectly raising ``ValueError`` on non-datelike strings instead of ``KeyError``, causing similar errors in :meth:`Series.__getitem__`, :meth:`Series.__contains__`, and :meth:`Series.loc.__getitem__` (:issue:`34240`)
- Bug in :meth:`Index.sort_values` where, when empty values were passed, the method would break by trying to compare missing values instead of pushing them to the end of the sort order (:issue:`35584`)
- Bug in :meth:`Index.get_indexer` and :meth:`Index.get_indexer_non_unique` where ``int64`` arrays are returned instead of ``intp`` (:issue:`36359`)
- Bug in :meth:`DataFrame.sort_index` where parameter ascending passed as a list on a single level index gives wrong result (:issue:`32334`)
- Bug in :meth:`DataFrame.reset_index` was incorrectly raising a ``ValueError`` for input with a :class:`MultiIndex` with missing values in a level with ``Categorical`` dtype (:issue:`24206`)
- Bug in indexing with boolean masks on datetime-like values sometimes returning a view instead of a copy (:issue:`36210`)
- Bug in :meth:`DataFrame.__getitem__` and :meth:`DataFrame.loc.__getitem__` with :class:`IntervalIndex` columns and a numeric indexer (:issue:`26490`)
- Bug in :meth:`Series.loc.__getitem__` with a non-unique :class:`MultiIndex` and an empty-list indexer (:issue:`13691`)
- Bug in indexing on a :class:`Series` or :class:`DataFrame` with a :class:`MultiIndex` and a level named ``"0"`` (:issue:`37194`)
- Bug in :meth:`Series.__getitem__` when using an unsigned integer array as an indexer giving incorrect results or segfaulting instead of raising ``KeyError`` (:issue:`37218`)
- Bug in :meth:`Index.where` incorrectly casting numeric values to strings (:issue:`37591`)
- Bug in :meth:`DataFrame.loc` returning empty result when indexer is a slice with negative step size (:issue:`38071`)
- Bug in :meth:`Series.loc` and :meth:`DataFrame.loc` raises when the index was of ``object`` dtype and the given numeric label was in the index (:issue:`26491`)
- Bug in :meth:`DataFrame.loc` returned requested key plus missing values when ``loc`` was applied to single level from a :class:`MultiIndex` (:issue:`27104`)
- Bug in indexing on a :class:`Series` or :class:`DataFrame` with a :class:`CategoricalIndex` using a list-like indexer containing NA values (:issue:`37722`)
- Bug in :meth:`DataFrame.loc.__setitem__` expanding an empty :class:`DataFrame` with mixed dtypes (:issue:`37932`)
- Bug in :meth:`DataFrame.xs` ignored ``droplevel=False`` for columns (:issue:`19056`)
- Bug in :meth:`DataFrame.reindex` raising ``IndexingError`` wrongly for empty DataFrame with ``tolerance`` not ``None`` or ``method="nearest"`` (:issue:`27315`)
- Bug in indexing on a :class:`Series` or :class:`DataFrame` with a :class:`CategoricalIndex` using list-like indexer that contains elements that are in the index's ``categories`` but not in the index itself failing to raise ``KeyError`` (:issue:`37901`)
- Bug on inserting a boolean label into a :class:`DataFrame` with a numeric :class:`Index` columns incorrectly casting to integer (:issue:`36319`)
- Bug in :meth:`DataFrame.iloc` and :meth:`Series.iloc` aligning objects in ``__setitem__`` (:issue:`22046`)
- Bug in :meth:`MultiIndex.drop` does not raise if labels are partially found (:issue:`37820`)
- Bug in :meth:`DataFrame.loc` did not raise ``KeyError`` when missing combination was given with ``slice(None)`` for remaining levels (:issue:`19556`)
- Bug in :meth:`DataFrame.loc` raising ``TypeError`` when non-integer slice was given to select values from :class:`MultiIndex` (:issue:`25165`, :issue:`24263`)
- Bug in :meth:`Series.at` returning :class:`Series` with one element instead of scalar when index is a :class:`MultiIndex` with one level (:issue:`38053`)
- Bug in :meth:`DataFrame.loc` returning and assigning elements in wrong order when indexer is differently ordered than the :class:`MultiIndex` to filter (:issue:`31330`, :issue:`34603`)
- Bug in :meth:`DataFrame.loc` and :meth:`DataFrame.__getitem__` raising ``KeyError`` when columns were :class:`MultiIndex` with only one level (:issue:`29749`)
- Bug in :meth:`Series.__getitem__` and :meth:`DataFrame.__getitem__` raising blank ``KeyError`` without missing keys for :class:`IntervalIndex` (:issue:`27365`)
- Bug in setting a new label on a :class:`DataFrame` or :class:`Series` with a :class:`CategoricalIndex` incorrectly raising ``TypeError`` when the new label is not among the index's categories (:issue:`38098`)
- Bug in :meth:`Series.loc` and :meth:`Series.iloc` raising ``ValueError`` when inserting a list-like ``np.array``, ``list`` or ``tuple`` in an ``object`` Series of equal length (:issue:`37748`, :issue:`37486`)
- Bug in :meth:`Series.loc` and :meth:`Series.iloc` setting all the values of an ``object`` Series with those of a list-like ``ExtensionArray`` instead of inserting it (:issue:`38271`)
Missing
- Bug in :meth:`.SeriesGroupBy.transform` now correctly handles missing values for ``dropna=False`` (:issue:`35014`)
- Bug in :meth:`Series.nunique` with ``dropna=True`` was returning incorrect results when both ``NA`` and ``None`` missing values were present (:issue:`37566`)
- Bug in :meth:`Series.interpolate` where kwarg ``limit_area`` and ``limit_direction`` had no effect when using methods ``pad`` and ``backfill`` (:issue:`31048`)
MultiIndex
- Bug in :meth:`DataFrame.xs` when used with :class:`IndexSlice` raises ``TypeError`` with message ``"Expected label or tuple of labels"`` (:issue:`35301`)
- Bug in :meth:`DataFrame.reset_index` with ``NaT`` values in index raises ``ValueError`` with message ``"cannot convert float NaN to integer"`` (:issue:`36541`)
- Bug in :meth:`DataFrame.combine_first` when used with :class:`MultiIndex` containing string and ``NaN`` values raises ``TypeError`` (:issue:`36562`)
- Bug in :meth:`MultiIndex.drop` dropped ``NaN`` values when non existing key was given as input (:issue:`18853`)
- Bug in :meth:`MultiIndex.drop` dropping more values than expected when index has duplicates and is not sorted (:issue:`33494`)
I/O
- :func:`read_sas` no longer leaks resources on failure (:issue:`35566`)
- Bug in :meth:`DataFrame.to_csv` and :meth:`Series.to_csv` caused a ``ValueError`` when it was called with a filename in combination with ``mode`` containing a ``b`` (:issue:`35058`)
- Bug in :meth:`read_csv` with ``float_precision='round_trip'`` did not handle ``decimal`` and ``thousands`` parameters (:issue:`35365`)
- :meth:`to_pickle` and :meth:`read_pickle` were closing user-provided file objects (:issue:`35679`)
- :meth:`to_csv` passes compression arguments for ``'gzip'`` always to ``gzip.GzipFile`` (:issue:`28103`)
- :meth:`to_csv` did not support zip compression for binary file object not having a filename (:issue:`35058`)
- :meth:`to_csv` and :meth:`read_csv` did not honor ``compression`` and ``encoding`` for path-like objects that are internally converted to file-like objects (:issue:`35677`, :issue:`26124`, :issue:`32392`)
- :meth:`DataFrame.to_pickle`, :meth:`Series.to_pickle`, and :meth:`read_pickle` did not support compression for file-objects (:issue:`26237`, :issue:`29054`, :issue:`29570`)
- Bug in :func:`LongTableBuilder.middle_separator` was duplicating LaTeX longtable entries in the List of Tables of a LaTeX document (:issue:`34360`)
- Bug in :meth:`read_csv` with ``engine='python'`` truncating data if multiple items present in first row and first element started with BOM (:issue:`36343`)
- Removed ``private_key`` and ``verbose`` from :func:`read_gbq` as they are no longer supported in ``pandas-gbq`` (:issue:`34654`, :issue:`30200`)
- Bumped minimum pytables version to 3.5.1 to avoid a ``ValueError`` in :meth:`read_hdf` (:issue:`24839`)
- Bug in :func:`read_table` and :func:`read_csv` when ``delim_whitespace=True`` and ``sep=default`` (:issue:`36583`)
- Bug in :meth:`DataFrame.to_json` and :meth:`Series.to_json` when used with ``lines=True`` and ``orient='records'`` the last line of the record is not appended with 'new line character' (:issue:`36888`)
- Bug in :meth:`read_parquet` with fixed offset time zones. String representation of time zones was not recognized (:issue:`35997`, :issue:`36004`)
- Bug in :meth:`DataFrame.to_html`, :meth:`DataFrame.to_string`, and :meth:`DataFrame.to_latex` ignoring the ``na_rep`` argument when ``float_format`` was also specified (:issue:`9046`, :issue:`13828`)
- Bug in output rendering of complex numbers showing too many trailing zeros (:issue:`36799`)
- Bug in :class:`HDFStore` threw a ``TypeError`` when exporting an empty DataFrame with ``datetime64[ns, tz]`` dtypes with a fixed HDF5 store (:issue:`20594`)
- Bug in :class:`HDFStore` was dropping time zone information when exporting a Series with ``datetime64[ns, tz]`` dtypes with a fixed HDF5 store (:issue:`20594`)
- :func:`read_csv` was closing user-provided binary file handles when ``engine="c"`` and an ``encoding`` was requested (:issue:`36980`)
- Bug in :meth:`DataFrame.to_hdf` was not dropping missing rows with ``dropna=True`` (:issue:`35719`)
- Bug in :func:`read_html` was raising a ``TypeError`` when supplying a ``pathlib.Path`` argument to the ``io`` parameter (:issue:`37705`)
- :meth:`DataFrame.to_excel`, :meth:`Series.to_excel`, :meth:`DataFrame.to_markdown`, and :meth:`Series.to_markdown` now support writing to fsspec URLs such as S3 and Google Cloud Storage (:issue:`33987`)
- Bug in :func:`read_fwf` with ``skip_blank_lines=True`` was not skipping blank lines (:issue:`37758`)
- Parse missing values using :func:`read_json` with ``dtype=False`` to ``NaN`` instead of ``None`` (:issue:`28501`)
- :meth:`read_fwf` was inferring compression with ``compression=None`` which was not consistent with the other ``read_*`` functions (:issue:`37909`)
- :meth:`DataFrame.to_html` was ignoring ``formatters`` argument for ``ExtensionDtype`` columns (:issue:`36525`)
- Bumped minimum xarray version to 0.12.3 to avoid reference to the removed ``Panel`` class (:issue:`27101`, :issue:`37983`)
- :meth:`DataFrame.to_csv` was re-opening file-like handles that also implement ``os.PathLike`` (:issue:`38125`)
- Bug in the conversion of a sliced ``pyarrow.Table`` with missing values to a DataFrame (:issue:`38525`)
- Bug in :func:`read_sql_table` raising a ``sqlalchemy.exc.OperationalError`` when column names contained a percentage sign (:issue:`37517`)
Period
- Bug in :meth:`DataFrame.replace` and :meth:`Series.replace` where :class:`Period` dtypes would be converted to object dtypes (:issue:`34871`)
Plotting
- Bug in :meth:`DataFrame.plot` was rotating xticklabels when ``subplots=True``, even if the x-axis wasn't an irregular time series (:issue:`29460`)
- Bug in :meth:`DataFrame.plot` where a marker letter in the ``style`` keyword sometimes caused a ``ValueError`` (:issue:`21003`)
- Bug in :meth:`DataFrame.plot.bar` and :meth:`Series.plot.bar` where ticks positions were assigned by value order instead of using the actual value for numeric or a smart ordering for string (:issue:`26186`, :issue:`11465`). This fix has been reverted in pandas 1.2.1, see :doc:`v1.2.1`
- Twinned axes were losing their tick labels which should only happen to all but the last row or column of 'externally' shared axes (:issue:`33819`)
- Bug in :meth:`Series.plot` and :meth:`DataFrame.plot` was throwing a :exc:`ValueError` when the Series or DataFrame was
indexed by a :class:`.TimedeltaIndex` with a fixed frequency and the x-axis lower limit was greater than the upper limit (:issue:`37454`)
- Bug in :meth:`.DataFrameGroupBy.boxplot` when ``subplots=False`` would raise a ``KeyError`` (:issue:`16748`)
- Bug in :meth:`DataFrame.plot` and :meth:`Series.plot` was overwriting matplotlib's shared y axes behavior when no ``sharey`` parameter was passed (:issue:`37942`)
- Bug in :meth:`DataFrame.plot` was raising a ``TypeError`` with ``ExtensionDtype`` columns (:issue:`32073`)
Styler
- Bug in :meth:`Styler.render` HTML was generated incorrectly because of formatting error in ``rowspan`` attribute, it now matches with w3 syntax (:issue:`38234`)
Groupby/resample/rolling
- Bug in :meth:`.DataFrameGroupBy.count` and :meth:`SeriesGroupBy.sum` returning ``NaN`` for missing categories when grouped on multiple ``Categoricals``. Now returning ``0`` (:issue:`35028`)
- Bug in :meth:`.DataFrameGroupBy.apply` that would sometimes throw an erroneous ``ValueError`` if the grouping axis had duplicate entries (:issue:`16646`)
- Bug in :meth:`DataFrame.resample` that would throw a ``ValueError`` when resampling from ``"D"`` to ``"24H"`` over a transition into daylight savings time (DST) (:issue:`35219`)
- Bug when combining methods :meth:`DataFrame.groupby` with :meth:`DataFrame.resample` and :meth:`DataFrame.interpolate` raising a ``TypeError`` (:issue:`35325`)
- Bug in :meth:`.DataFrameGroupBy.apply` where a non-nuisance grouping column would be dropped from the output columns if another groupby method was called before ``.apply`` (:issue:`34656`)
- Bug when subsetting columns on a :class:`~pandas.core.groupby.DataFrameGroupBy` (e.g. ``df.groupby('a')[['b']])``) would reset the attributes ``axis``, ``dropna``, ``group_keys``, ``level``, ``mutated``, ``sort``, and ``squeeze`` to their default values (:issue:`9959`)
- Bug in :meth:`.DataFrameGroupBy.tshift` failing to raise ``ValueError`` when a frequency cannot be inferred for the index of a group (:issue:`35937`)
- Bug in :meth:`DataFrame.groupby` does not always maintain column index name for ``any``, ``all``, ``bfill``, ``ffill``, ``shift`` (:issue:`29764`)
- Bug in :meth:`.DataFrameGroupBy.apply` raising error with ``np.nan`` group(s) when ``dropna=False`` (:issue:`35889`)
- Bug in :meth:`.Rolling.sum` returned wrong values when dtypes where mixed between float and integer and ``axis=1`` (:issue:`20649`, :issue:`35596`)
- Bug in :meth:`.Rolling.count` returned ``np.nan`` with :class:`~pandas.api.indexers.FixedForwardWindowIndexer` as window, ``min_periods=0`` and only missing values in the window (:issue:`35579`)
- Bug where :class:`pandas.core.window.Rolling` produces incorrect window sizes when using a ``PeriodIndex`` (:issue:`34225`)
- Bug in :meth:`.DataFrameGroupBy.ffill` and :meth:`.DataFrameGroupBy.bfill` where a ``NaN`` group would return filled values instead of ``NaN`` when ``dropna=True`` (:issue:`34725`)
- Bug in :meth:`.RollingGroupby.count` where a ``ValueError`` was raised when specifying the ``closed`` parameter (:issue:`35869`)
- Bug in :meth:`.DataFrameGroupBy.rolling` returning wrong values with partial centered window (:issue:`36040`)
- Bug in :meth:`.DataFrameGroupBy.rolling` returned wrong values with time aware window containing ``NaN``. Raises ``ValueError`` because windows are not monotonic now (:issue:`34617`)
- Bug in :meth:`.Rolling.__iter__` where a ``ValueError`` was not raised when ``min_periods`` was larger than ``window`` (:issue:`37156`)
- Using :meth:`.Rolling.var` instead of :meth:`.Rolling.std` avoids numerical issues for :meth:`.Rolling.corr` when :meth:`.Rolling.var` is still within floating point precision while :meth:`.Rolling.std` is not (:issue:`31286`)
- Bug in :meth:`.DataFrameGroupBy.quantile` and :meth:`.Resampler.quantile` raised ``TypeError`` when values were of type ``Timedelta`` (:issue:`29485`)
- Bug in :meth:`.Rolling.median` and :meth:`.Rolling.quantile` returned wrong values for :class:`.BaseIndexer` subclasses with non-monotonic starting or ending points for windows (:issue:`37153`)
- Bug in :meth:`DataFrame.groupby` dropped ``nan`` groups from result with ``dropna=False`` when grouping over a single column (:issue:`35646`, :issue:`35542`)
- Bug in :meth:`.DataFrameGroupBy.head`, :meth:`DataFrameGroupBy.tail`, :meth:`SeriesGroupBy.head`, and :meth:`SeriesGroupBy.tail` would raise when used with ``axis=1`` (:issue:`9772`)
- Bug in :meth:`.DataFrameGroupBy.transform` would raise when used with ``axis=1`` and a transformation kernel (e.g. "shift") (:issue:`36308`)
- Bug in :meth:`.DataFrameGroupBy.resample` using ``.agg`` with sum produced different result than just calling ``.sum`` (:issue:`33548`)
- Bug in :meth:`.DataFrameGroupBy.apply` dropped values on ``nan`` group when returning the same axes with the original frame (:issue:`38227`)
- Bug in :meth:`.DataFrameGroupBy.quantile` couldn't handle with arraylike ``q`` when grouping by columns (:issue:`33795`)
- Bug in :meth:`DataFrameGroupBy.rank` with ``datetime64tz`` or period dtype incorrectly casting results to those dtypes instead of returning ``float64`` dtype (:issue:`38187`)
Reshaping
- Bug in :meth:`DataFrame.crosstab` was returning incorrect results on inputs with duplicate row names, duplicate column names or duplicate names between row and column labels (:issue:`22529`)
- Bug in :meth:`DataFrame.pivot_table` with ``aggfunc='count'`` or ``aggfunc='sum'`` returning ``NaN`` for missing categories when pivoted on a ``Categorical``. Now returning ``0`` (:issue:`31422`)
- Bug in :func:`concat` and :class:`DataFrame` constructor where input index names are not preserved in some cases (:issue:`13475`)
- Bug in func :meth:`crosstab` when using multiple columns with ``margins=True`` and ``normalize=True`` (:issue:`35144`)
- Bug in :meth:`DataFrame.stack` where an empty DataFrame.stack would raise an error (:issue:`36113`). Now returning an empty Series with empty MultiIndex.
- Bug in :meth:`Series.unstack`. Now a Series with single level of Index trying to unstack would raise a ``ValueError`` (:issue:`36113`)
- Bug in :meth:`DataFrame.agg` with ``func={'name':<FUNC>}`` incorrectly raising ``TypeError`` when ``DataFrame.columns==['Name']`` (:issue:`36212`)
- Bug in :meth:`Series.transform` would give incorrect results or raise when the argument ``func`` was a dictionary (:issue:`35811`)
- Bug in :meth:`DataFrame.pivot` did not preserve :class:`MultiIndex` level names for columns when rows and columns are both multiindexed (:issue:`36360`)
- Bug in :meth:`DataFrame.pivot` modified ``index`` argument when ``columns`` was passed but ``values`` was not (:issue:`37635`)
- Bug in :meth:`DataFrame.join` returned a non deterministic level-order for the resulting :class:`MultiIndex` (:issue:`36910`)
- Bug in :meth:`DataFrame.combine_first` caused wrong alignment with dtype ``string`` and one level of ``MultiIndex`` containing only ``NA`` (:issue:`37591`)
- Fixed regression in :func:`merge` on merging :class:`.DatetimeIndex` with empty DataFrame (:issue:`36895`)
- Bug in :meth:`DataFrame.apply` not setting index of return value when ``func`` return type is ``dict`` (:issue:`37544`)
- Bug in :meth:`DataFrame.merge` and :meth:`pandas.merge` returning inconsistent ordering in result for ``how=right`` and ``how=left`` (:issue:`35382`)
- Bug in :func:`merge_ordered` couldn't handle list-like ``left_by`` or ``right_by`` (:issue:`35269`)
- Bug in :func:`merge_ordered` returned wrong join result when length of ``left_by`` or ``right_by`` equals to the rows of ``left`` or ``right`` (:issue:`38166`)
- Bug in :func:`merge_ordered` didn't raise when elements in ``left_by`` or ``right_by`` not exist in ``left`` columns or ``right`` columns (:issue:`38167`)
- Bug in :func:`DataFrame.drop_duplicates` not validating bool dtype for ``ignore_index`` keyword (:issue:`38274`)
ExtensionArray
- Fixed bug where :class:`DataFrame` column set to scalar extension type via a dict instantiation was considered an object type rather than the extension type (:issue:`35965`)
- Fixed bug where ``astype()`` with equal dtype and ``copy=False`` would return a new object (:issue:`28488`)
- Fixed bug when applying a NumPy ufunc with multiple outputs to an :class:`.IntegerArray` returning ``None`` (:issue:`36913`)
- Fixed an inconsistency in :class:`.PeriodArray`'s ``__init__`` signature to those of :class:`.DatetimeArray` and :class:`.TimedeltaArray` (:issue:`37289`)
- Reductions for :class:`.BooleanArray`, :class:`.Categorical`, :class:`.DatetimeArray`, :class:`.FloatingArray`, :class:`.IntegerArray`, :class:`.PeriodArray`, :class:`.TimedeltaArray`, and :class:`.PandasArray` are now keyword-only methods (:issue:`37541`)
- Fixed a bug where a ``TypeError`` was wrongly raised if a membership check was made on an ``ExtensionArray`` containing nan-like values (:issue:`37867`)
Other
- Bug in :meth:`DataFrame.replace` and :meth:`Series.replace` incorrectly raising an ``AssertionError`` instead of a ``ValueError`` when invalid parameter combinations are passed (:issue:`36045`)
- Bug in :meth:`DataFrame.replace` and :meth:`Series.replace` with numeric values and string ``to_replace`` (:issue:`34789`)
- Fixed metadata propagation in :meth:`Series.abs` and ufuncs called on Series and DataFrames (:issue:`28283`)
- Bug in :meth:`DataFrame.replace` and :meth:`Series.replace` incorrectly casting from ``PeriodDtype`` to object dtype (:issue:`34871`)
- Fixed bug in metadata propagation incorrectly copying DataFrame columns as metadata when the column name overlaps with the metadata name (:issue:`37037`)
- Fixed metadata propagation in the :class:`Series.dt`, :class:`Series.str` accessors, :class:`DataFrame.duplicated`, :class:`DataFrame.stack`, :class:`DataFrame.unstack`, :class:`DataFrame.pivot`, :class:`DataFrame.append`, :class:`DataFrame.diff`, :class:`DataFrame.applymap` and :class:`DataFrame.update` methods (:issue:`28283`, :issue:`37381`)
- Fixed metadata propagation when selecting columns with ``DataFrame.__getitem__`` (:issue:`28283`)
- Bug in :meth:`Index.intersection` with non-:class:`Index` failing to set the correct name on the returned :class:`Index` (:issue:`38111`)
- Bug in :meth:`RangeIndex.intersection` failing to set the correct name on the returned :class:`Index` in some corner cases (:issue:`38197`)
- Bug in :meth:`Index.difference` failing to set the correct name on the returned :class:`Index` in some corner cases (:issue:`38268`)
- Bug in :meth:`Index.union` behaving differently depending on whether operand is an :class:`Index` or other list-like (:issue:`36384`)
- Bug in :meth:`Index.intersection` with non-matching numeric dtypes casting to ``object`` dtype instead of minimal common dtype (:issue:`38122`)
- Bug in :meth:`IntervalIndex.union` returning an incorrectly-typed :class:`Index` when empty (:issue:`38282`)
- Passing an array with 2 or more dimensions to the :class:`Series` constructor now raises the more specific ``ValueError`` rather than a bare ``Exception`` (:issue:`35744`)
- Bug in ``dir`` where ``dir(obj)`` wouldn't show attributes defined on the instance for pandas objects (:issue:`37173`)
- Bug in :meth:`Index.drop` raising ``InvalidIndexError`` when index has duplicates (:issue:`38051`)
- Bug in :meth:`RangeIndex.difference` returning :class:`Int64Index` in some cases where it should return :class:`RangeIndex` (:issue:`38028`)
- Fixed bug in :func:`assert_series_equal` when comparing a datetime-like array with an equivalent non extension dtype array (:issue:`37609`)
- Bug in :func:`.is_bool_dtype` would raise when passed a valid string such as ``"boolean"`` (:issue:`38386`)
- Fixed regression in logical operators raising ``ValueError`` when columns of :class:`DataFrame` are a :class:`CategoricalIndex` with unused categories (:issue:`38367`)
Changes from 2.7.2 to 2.7.3
---------------------------
- Pinned Numpy versions to minimum supported version in an effort to alleviate
issues seen in Windows machines not having the same MSVC runtime installed as
was used to build the wheels.
- ARMv8 wheels are now available, thanks to `odidev` for the pull request.
Changes from 2.7.1 to 2.7.2
---------------------------
- Support for Python 2.7 and 3.5 is deprecated and will be discontinued when
`cibuildwheels` and/or GitHub Actions no longer support these versions.
- Wheels are now provided for Python 3.7, 3.5, 3.6, 3.7, 3.8, and 3.9 via
GitHub Actions.
- The block size is now exported into the namespace as `numexpr.__BLOCK_SIZE1__`
as a read-only value.
- If using MKL, the number of threads for VML is no longer forced to 1 on loading
the module. Testing has shown that VML never runs in multi-threaded mode for
the default BLOCKSIZE1 of 1024 elements, and forcing to 1 can have deleterious
effects on NumPy functions when built with MKL.
- Use of `ndarray.tostring()` in tests has been switch to `ndarray.tobytes()`
for future-proofing deprecation of `.tostring()`, if the version of NumPy is
greater than 1.9.
- Added a utility method `get_num_threads` that returns the (maximum) number of
threads currently in use by the virtual machine. The functionality of
`set_num_threads` whereby it returns the previous value has been deprecated
and will be removed in 2.8.X.
Wrappers 1.3.1 | Solver 1.3.1 | 11/01/2020
allow to avoid linking against VC2014_1 on windows
do not mark move constructor / assignment operator of expression as noexcept. This is to circumvent a suspected bug in the GCC compiler in the manylinux1 image.
Wrappers 1.3.0 | Solver 1.3.0 | 10/21/2020
add c++ benchmarks and run them on CIs
modernize the c++ code by using more c++11 features
introduce move semantic in some c++ constructors to improve performances
add support for Python 3.9
Wrappers 1.2.0 | Solver 1.2.0 | 03/26/2020
make the the c++ part of the code c++11 compliant
use cppy for Python/C bindings
Better have this listed as breakage for py36-numpy than not having the
bulk builds start up because the packages using this still want to
build it for python 3.6
Issues closed for 1.6.3
-----------------------
* Divide by zero in distance.yule
* prerelease_deps failures
* spatial rotation failure in (1.6.3) wheels repo (ARM64)
Pull requests for 1.6.3
-----------------------
* fix the matplotlib warning emitted during builing docs
* Divide by zero in yule dissimilarity of constant vectors
* deprecated np.typeDict
* substitute np.math.factorial with math.factorial
* add random seeds in Rotation module
1.20.2:
* Update f2py from master.
* ``diagflat`` could overflow on windows or 32-bit platforms
* Fix refcount leak in f2py ``complex_double_from_pyobj``.
* Fix tiny memory leaks when ``like=`` overrides are used
* Remove temporary change of descr/flags in VOID functions
* Segfault in nditer buffer dealloc for Object arrays
* Remove suspicious type casting
* remove nonsensical comparison of pointer < 0
* verify pointer against NULL before using it
* check if PyArray_malloc succeeded
* incorrect error fallthrough in nditer
* Backport CI fixes from main.
* Add annotations for ``dtype.__getitem__``, ``__mul__`` and...
* NameError in numpy.distutils.fcompiler.compaq
* Fixed ``where`` keyword for ``np.mean`` & ``np.var`` methods
* Update apt package list before Python install
* Ensure that re-exported sub-modules are properly annotated
* Fix ma coercion list-of-ma-arrays if they do not cast to...
* Fix small valgrind-found issues
* Fix small issues found with pytest-leaks
1.20.1:
* Add missing placeholder annotations
* Fix typo in ``numpy.__init__.py``
* don't mutate list of fake libraries while iterating over...
* gracefully shuffle memoryviews
* Use C linkage for random distributions
* fix when GitHub Actions builds trigger, and allow ci skips
* Allow unmodified use of isclose, allclose, etc. with timedelta
* Allow pickling all relevant DType types/classes
* Fix missing signed_char dependency.
* Change license date 2020 -> 2021
* CircleCI seems to occasionally time out, increase the limit
* Fix f2py bugs when wrapping F90 subroutines.
* crackfortran regex simplify
* threads.h existence test requires GLIBC > 2.12.
* Prepare for the NumPy 1.20.1 release.
1.20.0:
* enable multi-platform SIMD compiler optimizations
* NEP 36 (fair play)
* Deprecate aliases of builtin types in python 3.7+
* `np.resize` negative shape and subclasses edge case fixes
* Add the method `permuted` to Generator.
* Fix issues with non-reduce broadcasting axes
* Ensure PyArray_FromScalar always returns the requested dtype
* Technical decisions for new DTypes
* Create Preliminary DTypeMeta class and np.dtype subclasses
* Avoid exception in NpzFile destructor if constructor raises...
* Improved `__str__` for polynomials
* Remove Accelerate support
* [DOC] Added tutorial about the numpy.ma module.
* Add where argument to np.mean
* Deprecate passing shape=None to mean shape=()
* Ensure indexing errors will be raised even on empty results
* improve printing of arrays with multi-line reprs
* Correct documentation of ``__array__`` when used as output...
* Implement concatenate dtype and casting keyword arguments
* Deprecate `numpy.dual`.
* Potential fix for divmod(1.0, 0.0) to raise divbyzero and...
* Increase guidance and detail of np.polynomial docstring
* Add transition note to all lib/poly functions
* Rewrite of array-coercion to support new dtypes
* Add ``full_output`` argument to ``f2py.compile``.
* Deprecate ufunc.outer with matrix inputs
* Unify cached (C-level static) imports
* Allow attach docs twice but error if wrong
* Fix default fallback in genfromtxt
* ENH:Umath Replace raw SIMD of unary float point(32-64) with NPYV...
* added edge keyword argument to digitize
* Update the f2py section of the "Using Python as Glue" page.
* Improve `rec.array` function documentation
* include dt64/td64 isinstance checks in ``__init__.pxd``
* Clarifications for np.std
* Order percentile monotonically
* cleanups to quantile
* Update master after 1.19.x branch.
* Ensure out argument is returned by identity for 0d arrays
* Clarifications for ``np.var``.
* Add a note about performance of isclose compared to math.isclose
* Clean up the implementation of quantile
* Bump hypothesis from 5.12.0 to 5.14.0
* Improve "tobytes" docstring.
* Fix tools/download-wheels.py.
* Require Python >= 3.6 in setup.py
* Fix malformed docstrings in ma.
* Optimize Cpu feature detect in X86, fix for GCC on macOS
* np.info does not show keyword-only arguments
* Fix bad reference in ``numpy.ma``
* Fix detecting and testing armhf features
* Fix packbits documentation rendering,
* Fix troubleshooting code snippet when env vars are empty
* relpath fails for different drives on windows
* Fix ``np.ma.core.doc_note``
* Bump numpydoc version
* Stop Using PyEval_Call* and simplify some uses
* Improve the ARM cpu feature detection by parsing /proc/cpuinfo
* Reconstruct Testing Guideline.
* Cleanup 'tools/download-wheels.py'
* link np.interp to SciPy's interpolation functions (closes...
* Fix spelling typo - homogenous to homogeneous.
* Use AVX-512 for np.isnan, np.infinite, np.isinf and np.signbit
* Fix refcounting in add_newdoc
* Create a link for the circleCI artifact
* Fix dtype leak in `PyArray_FromAny` error path
* Indentation for docstrings
* Fix small leaks in error path and ``empty_like`` with shape
* Streamline download-wheels.
* Fix an obvious mistake in a message printed in doc/Makefile.
* Bump cython from 0.29.17 to 0.29.19
* Bump hypothesis from 5.14.0 to 5.15.1
* Bump pytest-cov from 2.8.1 to 2.9.0
* Use AVX-512 for np.frexp and np.ldexp
* add index for user docs.
* ARM Neon implementation with intrinsic for np.argmax.
* Tighten howto-docs guide
* Make ctypes optional on Windows
* Hardcode buffer handling for simple scalars
* Stop uploading wheels to Rackspace.
* Use a raw string for the fromstring docstring.
* Validate and disable CPU features in runtime
* Implement the NumPy C SIMD vectorization interface
* Update make dist html target.
* Update sphinx conf to use xelatex.
* turn on codecov patch diffs
* endpoints of array returned by geomspace() should match...
* support python 3.10
* Chain some exceptions.
* Improve intersect1d docstring
* Update assert_warns parameter list
* Simplify assert_warns in test_io.py
* make NEP 18 status Final
* Add style guide to howto_document
* NEP for C style guide
* Fix description of dtype default in linspace
* Add extern to PyArrayDTypeMeta_Type declaration
* Add a reference into NEP 29,
* Catch remaining cases of Py_SIZE and Py_TYPE as lvalues
* Fix deprecated warn for Intel/Apple/Clang Compiler
* make clearer that sinc is normalized by a factor pi
* update roadmap
* fixes einsum output order with optimization
* add a "make show" command to doc/Makefile
* Add a NEP link to all neps.
* extend error message when Accelerate is detected
* Improve assert_warns docstring with example
* Bump hypothesis from 5.15.1 to 5.16.0
* Fix development_workflow links
* fix GCC 10 major version comparison
* install mingw32 v7.3.0 for win32
* Fixes for 18 broken links
* use zip instead of range in piecewise
* add `norm=forward,backward` to numpy.fft functions
* Optimize the performace of np.packbits in ARM-based machine.
* Fix result when a gufunc output broadcasts the inputs.
* Point Contributing page to new NEP 45
* make Py_SET_SIZE and Py_SET_TYPE macros a bit safer
* Error when ``size`` is smaller than broadcast input...
* Correct MV Normal sig
* raise IEEE exception on AIX
* only single-polynomial fitting in np.polynomial.Polynomial.fit()
* Minor rounding correction in Generator.binomial
* trivial doc style fix in NEP 45.
* add type stubs from numpy-stubs
* make callbacks threadsafe
* replace \t by whitespace for readability
* MAINT:ARMHF Fix detecting feature groups NEON_HALF and NEON_VFPV4
* Improve buffer speed
* move thread-local declaration definition to common...
* Fix cython warning in random/_common.pyx.
* Bump pytest from 5.4.2 to 5.4.3
* Remove non-threadsafe sigint handling from fft calculation
* SSE2 intrinsic implementation for float64 input of np.enisum
* Ensure SeedSequence 0-padding does not collide with spawn...
* Remove deprecated numeric types and deprecate remaining
* drop win32 3.7, 3.6 builds
* simplifying annotations for np.core.from_numeric
* make typing module available at runtime
* Throw TypeError on operator concat on Numpy Arrays
* Add new tests for array coercion
* fix sin/cos bug when input is strided array
* fix name of first parameter to dtype constructor in type...
* Added an example for np.transpose(4d_array)
* changed np.generic arguments to positional-only
* Clarify dtype default for logspace and geomspace
* Disallow complex args in arange
* Raise TypeError for float->timedelta promotion
* Add ``__f2py_numpy_version__`` attribute to Fortran modules.
* Fix reference count leak in mapping.c
* Move and improve ``test_ignore_nan_ulperror``.
* make addition of types a "new feature" in release notes
* Avx512 intrinsics implementation for float64 input np.log
* Bump pytest-cov from 2.9.0 to 2.10.0
* Bump hypothesis from 5.16.0 to 5.16.1
* bump mypy version to 0.780
* Openblas 0.3.10
* add annotation for abs
* check if std=c99 is really required
* disable Shippable cache
* Expand array-creation benchmarks
* Implemented two dtype-related TODO's
* Initialize stop-reading in array_from_text
* Updated documentation for numpy.squeeze
* add tool to find functions missing types
* ENH,BUG:distutils Remove the origins from the implied features
* Some code clean up in loadtxt
* remove obsolete goal_time param
* Fix uint->timedelta promotion to raise TypeError
* Replace `PyUString_GET_SIZE` with `PyUnicode_GetLength`.
* Fix outdated docs link
* add a static typing test for memoryviews as ArrayLikes
* Added annotations to 8 functions from np.core.fromnumeric
* Update master after 1.19.0 release.
* Allow genfromtxt to unpack structured arrays
* Prefer generator expressions over list comprehensions...
* cross-reference numpy.dot and numpy.linalg.multi_dot
* Bump hypothesis from 5.16.1 to 5.16.3
* Bump mypy from 0.780 to 0.781
* Add lib.format.open_memmap to autosummary.
* Fix bug in AVX complex absolute while processing array of...
* remove blacklist/whitelist terms
* Add extra debugging information to CPU features detection
* Add support for file like objects to np.core.records.fromfile
* updated gcc minimum recommend version to build from source
* Allow `None` to be passed to certain `generic` subclasses
* fixed docstring for descr_to_dtype
* Remove "matrix" from `triu` docstring.
* add py.typed sentinel to package manifest
* Fixup quantile tests to not use `np.float`
* Add CPU entry for Emscripten / WebAssembly
* Disable Python 3.9-dev testing.
* Add instruction about stable symlink
* Disable use_hugepages in case of ValueError
* Add dep directive to alen docstring.
* Add RPATH support for AIX
* fix typo
* Fix PyArray_SearchSorted signature.
* Add annotations to the last 8 functions in numpy.core.fromnumeric
* Use f90 compiler specified in f2py command line args for...
* reword random c-api introduction, cython is documented in...
* Tweak a sentence about broadcasting.
* Prepend `ma.` to references in ``numpy.ma``
* Remove redundant word
* add unique() to See Also of repeat()
* add example to unique() and make connection to repeat()
* Chaining exceptions in numpy/core/_internal.py
* add manylinux1 OpenBlAS 0.3.10 hashes and test for them
* Add Matti Picus to steering council page
* make dtype generic over scalar type
* Added a section in the 'Iterating over arrays' doc page...
* Tidy exception chaining in _datasource.py
* Fixes for deprecated functions in scalartypes.c.src
* Bump mypy from 0.781 to 0.782
* Bump hypothesis from 5.16.3 to 5.19.0
* Update NumPy logos
* Remove unneeded call to PyUnicode_READY
* Fix deprecated functions in scalarapi.c
* switch to logo with text
* Bring the NumPy C SIMD vectorization interface "NPYV"...
* Add basic benchmarks for scalar indexing and assignment
* fix decode error when building and get rid of warn
* Minor RST formatting.
* update cython to 0.29.21
* Upgrade to Python 3.8 for DEBUG testing.
* Fix RST/numpydoc standard.
* Move typing tests
* Explicitly disallow object user dtypes
* add example to corrcoef function
* adding docs on passing dimensions as tuple to ndindex
* Remove overzealous automatic RST link
* Add explanation of 'K' and 'A' layout options to 'asarray*'...
* Add a reST label to /user/building.rst
* fix mgrid output for lower precision float inputs
* temporarily disable OpenBLAS hash checks
* Do not inherit flags from the structured part of a union...
* replace dec.slow with pytest.mark.slow
* Make void scalar to array creation copy when dtype is...
* fix inconsistent parameter name in np.ndindex docstring
* setuptools 49.2.0 emits a warning, avoid it
* add examples to random number generator pages
* describe ufunc copy behavior when input and output overlap
* Fix ``runtest.py`` warning.
* Add pandas to doc_requirements.txt
* fix sphinx deprecation
* Avoid using uninitialized bytes in getlimits.py.
* Explaining why datetime64 doesn't work for allclose + isclose
* improve SIMD features tables
* update openblas hashes, re-enable check
* Remove code that will never run
* Bump hypothesis from 5.19.0 to 5.19.1
* linspace should round towards -infinity
* Disable shippable until we can fix it.
* Remove Duplicated Code (function extract rmap)
* Remove Duplicated Code
* Change for loop (range -> for each)
* Deprecate NumPy object scalars
* clarify whats required for new features
* fix new compiler warnings on clang
* fix the search dir of dispatch-able sources
* Remove deprecated python function 'file()'
* Validate output size in bin- and multinomial
* Pin setuptools
* Update compiler check for AVX-512F
* fix the test for ``np.ones``
* edit to the documentation of lib/polynomial.py/polyfit
* Configure hypothesis in ``np.test()`` for determinism,...
* Remove unused pip install
* Fix bad MPL kwarg in docs
* Fix types including curly braces
* Remove the links for ``True`` and ``False``
* Integrate the new CPU dispatcher with umath generator
* Fix wrong markups in `arrays.dtypes`
* Remove links for C codes
* Fix the declarations of C fuctions
* also use Py_SET_REFCNT instead of Py_REFCNT
* Chaining exceptions in numpy/__init__.py
* update val to be scalar or array like optional
* Bump hypothesis from 5.19.1 to 5.20.2
* Speed up trim_zeros
* Fix string/bytes to complex assignment
* Add correctness vs strictness consideration for np.dtype
* Add ufunc docstring to generated docs.
* Update master after 1.19.1 release.
* Revert "Merge pull request 16248 from alexrockhill/edge"
* Fix memory leak of buffer-info cache due to relaxed strides
* Store exported buffer info on the array
* update OpenBLAS build
* Allow array-like types to be coerced as object array elements
* Deprecate size-one ragged array coercion
* Change the name of the folder "icons" to "logo".
* enable colors for `runtests.py --ipython`
* Clarify input to irfft/irfft2/irfftn
* Bump hypothesis from 5.20.2 to 5.23.2
* update numpy/lib/arraypad.py with appropriate chain exception
* Use arm64 instead of aarch64 on travisCI.
* Chain exception in ``distutils/fcompiler/environment.py``.
* Added the `order` parameter to `np.array()`
* Add Neon SIMD implementations for add, sub, mul, and div
* Fixed typo in lib/recfunctions.py
* Add pypy win32 CI testing.
* Increase the use of `Literal` types
* Add NumPy declarations to be used by Cython 3.0+
* Add the new NumPy logo to Sphinx pages
* Bump hypothesis from 5.23.2 to 5.23.9
* Bump pytest from 5.4.3 to 6.0.1
* pin setuptools < 49.2.0
* Revise glossary page
* clip() allows arguments.
* Updated NEP-35 with keyword-only instruction
* Simplify scalar power
* Improve error handling in umathmodule setup
* Disclaimer for FFT library
* Add error return to all casting functionality and NpyIter
* fix a compile and a test warning
* Clarify that `np.char` comparison functions always return...
* Use a less ambiguous example for array_split
* Bump hypothesis from 5.23.9 to 5.23.12
* core._internal style fixups
* Remove _EXTRAFLAGS variable
* fix typo in polydiv that prevented promotion to poly1d
* Revert boolean casting back to elementwise comparisons...
* Raise error on complex input to i0
* Remove obsolete conversion to set
* Remove the deprecated financial functions.
* Remove uses of PyString_FromString.
* use the pydata_sphinx_theme
* Fixes duplication of toctree content
* Bump pytest-cov from 2.10.0 to 2.10.1
* Bump hypothesis from 5.23.12 to 5.26.0
* Adjust NEP-35 to make it more user-accessible
* Add placeholder stubs for all sub-modules
* Split einsum into multiple files
* Handle errors from the PyCapsule API
* Fix spacing in vectorize doc
* Remove `np.ctypeslib.ctypes_load_library`
* make spacing consistent in NEP 41 bullet points
* fix ilp64 blas dot/vdot/... for strides > int32 max
* allow running mypy through runtests.py
* Remove duplicated symbols from link step
* Check for reduce intrinsics and AVX512BW mask operations
* Chain some exceptions in arraysetops.
* Chain ValueError in ma.timer_comparison
* Rewrite promotion using common DType and common instance
* Make arrayprint str and repr the ndarray defaults.
* Fix a few typos.
* Change handling of the expired financial functions.
* Add annotations to 3 functions in `np.core.function_base`
* Replace uses of PyString_AsString.
* ``Replace PyUString_*`` by ``PyUnicode_*`` equivalents.
* Replace PyInt macros with their PyLong replacement
* Add support for the abstract scalars to cython code
* Fix incorrect cython definition of npy_cfloat
* Clean up some Npy_ vs Py_ macro usage
* Remove references to PyCObject
* Update numpy4matlab
* Clean up some more bytes vs unicode handling
* Remove Void special case for "safe casting"
* Remove redundant headers
* Remove NPY_COPY_PYOBJECT_PTR
* Merge the npysort library into multiarray
* Add tests mapping out the rules for metadata in promotion
* revert trim_zeros changes from gh-16911
* Make `np.complexfloating` generic w.r.t. `np.floating`
* remove calls to PyUnicode_AsASCIIString,...
* Added missing methods to `np.flatiter`
* Correct error in description of ndarray.base
* Document `dtype.metadata`
* Use utf8 strings in more of datetime
* Add placeholder stubs for `ndarray` and `generic`
* Bump hypothesis from 5.26.0 to 5.30.0
* Remove some callers of functions in numpy.compat
* Make the window functions exactly symmetric
* Improve error handling in npy_cpu_init
* Fix the documented signatures of four `ufunc` methods
* Make the `NPY_CPU_DISPATCH_CALL` macros expressions not...
* Fixed headings for tutorials so they appear at new theme...
* Canonical_urls
* Fix various issues with the `np.generic` annotations
* enabled negation of library choices in NPY_*_ORDER
* comment out metadata added via javascript
* move informational files from numpy.doc.*.py to their...
* use sysconfig not distutils.sysconfig where possible
* Fix dimension discovery of within array ragged cases
* Added templates for different types of issues.
* Deprecated ndindex.ndincr
* Remove old PY_VERSION_HEX and sys.version_info code
* Avoid using ``np.random`` in typing tests.
* Fix link quick-start in old random API functions
* ``__array_interface__`` data address cannot be bytes
* Run slow CI jobs earlier so builds finishes sooner
* Add tool to help speed up Travis CI
* Fix docstring cross-referencing
* Added a PR "Reviewer guidelines" document.
* work around a bug in the new theme
* add fused multiply subtract/add intrinics for all supported...
* Bump hypothesis from 5.30.0 to 5.33.0
* Bump pydata-sphinx-theme from 0.3.2 to 0.4.0
* add new glossary terms
* remove some glosssary terms
* Fix the path to `mypy.ini` in `runtests.py`
* sysconfig attributes/distutils issue
* Annotate the arithmetic operations of `ndarray` and `generic`
* Merge together index page content into a single file
* Fix a typo in shape_base.
* Pass optimizations arguments to asv build
* Change the financial name access warning to DeprecationWarning
* Update master after 1.19.2 release.
* Simplify ufunc pickling
* Cleanup some pystring macros
* Replace remaining PyString macros.
* Replace PyUString_Check by PyUnicode_Check.
* fix pickling user-scalars by allowing non-format buffer...
* Replace some ``pyint_*`` macros defined in ``npy_3kcompat``.
* set upper versions for build dependencies
* (dtype-transfer) make copyswapn and legacy cast wrapper...
* Replace PyBaseString_Check by PyUnicode_Check
* Replace a couple of missed npy_3kcompat macros
* pin pygments to 2.6.1, 2.7.0 breaks custom NumPyC lexer
* Bump hypothesis from 5.33.0 to 5.35.1
* Bump pytest from 6.0.1 to 6.0.2
* Move the `fromnumeric` annotations to their own stub file
* Syntax-highlight .src files on github
* Mark vendored/generated files in .gitattributes
* Cleanup f2py/cfuncs.py
* Set deprecated fields to null in PyArray_InitArrFuncs
* allow registration of hard-coded structured dtypes
* Add annotations for five array construction functions
* Fix incorrect `.. deprecated::` syntax that led to this...
* improve `issubdtype` and scalar type docs
* Remove the tables of scalar types, and use `..autoclass`...
* update lexer highlighting and make numpydocs a regular...
* Chaining exceptions in npyio.py
* Regenerate table in NEP 29 (add numpy 1.18 and 1.19 to list)
* Fix syntax errors in docstrings for versionchanged, versionadded
* Add partial/non-contig load and store intrinsics for 32/64-bit
* Support for the NVIDIA HPC SDK nvfortran compiler
* Fix a macOS build failure when `NPY_BLAS_ORDER=""`
* Add PR prefix labeler and numpy prefix mapping
* Guide to writing how-tos
* How-to guide for I/O
* clarify residuals return param
* Add Npy__PyLong_AsInt function.
* Bump hypothesis from 5.35.1 to 5.35.3
* Finish replacing PyInt_Check
* Remove an obsolete paragraph.
* Edit nep-0042 for more clarity
* Add annotations for remaining `ndarray` / `generic` non-magic...
* Fixes module data docstrings.
* Fix default_rng docstring
* ensure _UFuncNoLoopError can be pickled
* Minor grammatical correction in quickstart doc.
* NumPy restyling for pydata theme
* Fix docstring for np.matmul
* Bump hypothesis from 5.35.3 to 5.36.1
* Remove old debug print statement.
* Replace "About NumPy" with "Document conventions"
* Update info on doc style rules
* Fix default void, datetime, and timedelta in array coercion
* Replace append_metastr_to_string function.
* Fixed ARGOUTVIEWM memory deallocation.
* rm incorrect alias from recarray user article.
* Rewrite can-cast logic in terms of NEP 42
* Add arraysetops to an autosummary
* Replace PyUString_ConcatAndDel in nditer_constr.c.
* Replace PyUString_ConcatAndDel in mapping.c.
* Replace the module-level `__getattr__` with explicit type...
* in PR template, set expectations for PR review timeline
* Cleanup remaining PyUString_ConcatAndDel use.
* Special case how numpy scalars are coerced to signed integer
* Mark the typing tests as slow
* Fix a parameter type in the `putmask` docs
* adding operational form documentation for array ops
* Deprecate coercion to subarray dtypes
* Fix memory leak in array-coercion error paths
* chains nested try-except in numpy/ma/core.py
* Remove bogus reference to _a_
* Fix formatting issues in description of .c.src files
* nep-0029 typo correction
* Move aliases for common scalar unions to `numpy.typing`
* Fix memoryleaks related to NEP 37 function overrides
* Fix the links for ``Ellipsis``
* add references to einops and opt_einsum
* Disable 32 bit PyPy CI testing on Windows.
* Security warning for issues template
* Fix "Feature request" spelling in issue templates
* Chaining exception in numpy\numpy\ma\mrecords.py
* Cleaner template for PRs
* fix exception chaining in format.py
* Warn on unsupported Python 3.10+
* Typed` to the PyPi classifier
* Fix the references for macros
* update NEP 42 with discussion of type hinting applications
* Remove CoC pages from Sphinx
* Chain exceptions in "_polybase.py"
* Bump hypothesis from 5.36.1 to 5.37.0
* add dtype option to numpy.lib.function_base.cov and corrcoef
* Fixes incorrect error message in numpy.ediff1d
* update code of conduct URL
* Add some entries for C types and macros
* Add annotations for bitwise operations
* add some missing scalar aliases
* Fix doctest for full_like
* remove os.fspath and os.PathLike backports
* Move the `np.core.numeric` annotations to their own stub...
* type np.unicode_ as np.str_
* Fix the entries for members of structures
* Fix the references for `random.*`
* circleCI- merge before build, add -n to sphinx
* Remove duplicate placeholder annotations
* Use consistent lowercase on docs landing page
* fix incompatible type comparison in numpy.lib.utils.info
* Fix failures in master related to userdtype registeration
* remove `sys` from the type stubs
* Fix empty 'C style guide' page
* Rename 'Quickstart tutorial'
* Added the Final feature for all constants
* Fewer blank lines in PR template
* Display real license on license page
* Add docstrings for some scalar types
* Update top links in landing page
* Make merge ref grabbing conditional on the PR being active
* Fix Bool types in C functions
* Fix some links and typos
* Cleanup compatibility code for pathlib
* Fix a typo
* add function to get broadcast shape from a given set of...
* Fixed crash on self-referential dtypes
* Bump hypothesis from 5.37.0 to 5.37.1
* Bump pydata-sphinx-theme from 0.4.0 to 0.4.1
* Bump mypy from 0.782 to 0.790
* Make `np.number` generic with respect to its precision
* fix conditional for PR merge command
* explicit disabling `CCompilerOpt` in F2PY
* Cygwin Workaround for 14787 on affected platforms
* Fix the entries of C functions
* Fix wrong blockquotes
* Add NEP 43 links to NEP 42
* Remove directives for some constants
* Update the annotations in `np.core.numeric`
* Add the entry for ``NPY_FEATURE_VERSION``
* Fix typos
* Add annotations for three new constants
* Fix Boolean array indexing typo
* Respect dtype of all-zero argument to poly1d
* include additional feedback
* Cleanup swig for Python 3.
* Move the `np.core.numerictypes` annotations to their own...
* Bump hypothesis from 5.37.1 to 5.37.3
* Add annotations for `np.core._type_aliases`
* Typo in lexsort docstring
* Coercion/cast of array to a subarray dtype will be fixed
* Clean up the errors of the typing tests
* Fixed file handle leak in array_tofile.
* Fix a broken `np.core.numeric` test
* Mark dead code as intentional for clang.
* removed old references to submodule licenses
* Fix typos (general documentation)
* Fully qualify license trove classifier
* mac dylib treated as part of extra objects by f2py
* Add annotations for 9 `ndarray`/`generic` magic methods
* Fix the document for arrays interface
* Conversion of some strings to f-strings
* Fix some references
* Valid docstring for config_py function show()
* Conversion of some strings to fstrings, part II
* Conversion of some strings to fstrings, part III
* Tidy up references to str_ / bytes_
* Conversion of some strings to fstrings, part iv
* Fix the references for ``__array_*__``
* Add entries for macros
* Add ``identity_value`` to ``PyUFuncObject``
* Replace ``PyCObject`` with ``PyCapsule``
* Don't use Python highlighting for non-python code
* Fix some references
* Bump hypothesis from 5.37.3 to 5.38.0
* update to OpenBLAS v0.3.12
* Fix reference to atleast_1d
* Add annotations for `np.core._ufunc_config`
* Add annotations for `np.core.shape_base`
* fix np.timedelta64('nat').__format__ throwing an exception
* f2py incorrectly translates dimension declarations.
* Fix installing Numpy on z/OS
* Ensure inner loop signature is complete everywhere
* simplify source path names in compilation test
* Add a doctest for ``getlincoef``
* Update master after 1.19.3 release.
* Make test suite work in FIPS (140-2) Mode
* Add a docstring for getarrlen
* Update README badge for travis-ci.com
* Refine a number of ``np.generic`` annotations
* Update release documentation and software
* Add sum intrinsics for float/double.
* (nditer_impl.h) Use ``intp`` instead of ``char *`` for offset...
* Fix small bug in ``make_lite.py``.
* Modify Templates
* Bump hypothesis from 5.38.0 to 5.41.0
* Bump pytz from 2020.1 to 2020.4
* use a more standard workflow for PyPy
* Update master after 1.19.4 release.
* Rename ``DtypeLike`` to ``DTypeLike``
* Fix small typos.
* Fixed an issue where ``.pyi`` files were ignored by numpy...
* Fix Doc Typos & Added Example
* Improve the einsum bench by adding new bench cases and variable...
* Revert gh-17654 - f2py incorrectly translates dimension...
* Add more files to ``.gitgnore``
* Do not import sliding_window_view to main namespace
* Do not override ``sliding_window_view`` module to ``numpy``
* Add NEP-35 instructions on reading like= downstream
* Use importlib to find numpy root directory in distutils
* Remove unused ``**options`` from MaskedArray ``__new__``...
* Remove Python 3.6 CI testing.
* move linux jobs to github actions
* Bump hypothesis from 5.41.0 to 5.41.2
* Fix cblas detection on windows
* add pypy3.7
* compare platform.architecture() correctly
* Add "performance" category to the release notes
* Fix segfault due to out of bound pointer in floatstatus...
* Fix buffer export dtype references
* Fix memory leaks found using valgrind
* Lazy load f2py test utilities
* use BUFFERSIZE=20 in OpenBLAS
* fix reuses the previous values during the fallback...
* update link to website in FUNDING.yml
* Add BLD and STY to labeler prefixes.
* Simplify Hypothesis configuration
* Make like= argument added in NEP-35 strict
* Fix up links, code blocks of release note fragments
* Minor touchups in npyio
* Update mailmap.
* Set the ufunc and ndarray ops return type to ``Any``
* Update linalg.py
* Fix empty_like docstring
* Add missing release fragments to ``upcoming_changes``.
* Fix incorrectly passed size in masked processing
* Bump hypothesis from 5.41.2 to 5.41.3
* Add back durations flag for DEBUG builds.
* Fix subarray dtype used with too large count in fromfile
* Fix pickling of scalars with NPY_LISTPICKLE
* Update the `numpy.typing` documentation
* Fixing boilerplate code example
* Add ``__all__`` to `numpy.typing`
* Add release note for gh-16161.
* Fix incorrect C function prototypes/declarations.
* Prepare for the NumPy 1.20.x branch.
* use python-version not PYTHON_VERSION
* Fix buffer readflag errors and small leaks
* Prepare for 1.20.0 release
* Remove remaining uses of Python 3.6.
* use latest pypy37 not pypy36
* clean up a spurious warning in numpy/typing/setup.py
* Speed up default ``where`` in the reduce-like method
* remove stray '+' from f-string upgrade
* add support for fujitsu compiler to numpy.
* 'bool' object has no attribute 'ndim'
* Update release notes to mention ``type(dtype) is not np.dtype``
* Replace f-string in setup.py
* Ignore fewer errors during array-coercion
* Fix a MacOS build failure
* Fix crosstalk issues with polynomial str tests.
* Ensure tests are not sensitive to execution order
* update to OpenBLAS 0.3.13
* Futurewarn on requiring __len__ on array-likes
* make a variable volatile to work around clang compiler bug
* add back sdist test run
* Fix concatenation when the output is "S" or "U"
* Fix detecting aarch64 on macOS
* Prepare for 1.20.0rc2 release.
* Generate the main dispatcher config header into the...
* Fix _simd module build for 64bit ARM/NEON clang
* Update 1.20.x after 1.19.5 release.
* Fix promotion of half and string
* improve avx512 mask logical operations
* Promotion between strings and objects was assymetric
* Use explicit reexports for numpy.typing objects
* Keep ignoring most errors during array-protocol lookup
* warn on unrecognized objects, fix empty...
* update OpenBLAS to af2b0d02
* Clarify the type alias deprecation message
* Ensure too many advanced indices raises an exception
* add an 'apt update'
* Prepare for the NumPy 1.20.0 release.
Now it should be more obvious when a package needs it as a dependency,
as it will fail loudly if it isn't declared as a tool.
While here, some duplicate dependencies on itstool were removed from the
MATE packages
This also requires gcc 4.8 at minimum, 4.9 for the full set of SIMD.
The configure script is patched to avoid the build adding -march=core-avx2,
which could conflict with user's CFLAGS.
This yields one common package to provide libfftw3 (double) and libfftw3f
(single) by default and optionally the Fortran bindings as well as
OpenMP and MPI variants, and those with long double or quad precision.
This changes all packages depending on fftwf in the same commit to minimize
the time of inconsistency. Soon, math/fftwf will disappear.
Upstream changes:
DBI 1.1.1 (2021-01-04)
Documentation
Expand "Get started" vignette to two tutorials, basic and advanced (#332, @jawond).
Bug fixes
dbAppendTable() now allows columns named sep (#336).
dbAppendTable() shows a better error message if the input has zero columns (#313).
sqlInterpolate() now correctly interprets consecutive comments (#329, @rnorberg).
dbQuoteLiteral() works for difftime objects (#325).
dbQuoteLiteral() quotes dates as YYYY-MM-DD without time zone (#331).
Internal
Switch to GitHub Actions (#326).
Update URL in DESCRIPTION.
to be built with c++11, though the library itself is c++03 clean.
necessary for GCC 10 hosts. also tested on GCC 7 / netbsd 9.x.
from Chavdar Ivanov on current-users.
most of these simply extend matching from "aarch64" to "aarch64eb"
in various forms of code. most remaining uses in pkgsrc of
"MACHINE_ARCH == aarch64" are because of missing aarch64eb support,
such as most of the binary-bootstrap requiring languages like rust,
go, and java.
no pkg-bump because this shouldn't change packages on systems that
could already build all of these.
Changes in 0.15.0.1
* Bug in generation of Int/Word in both uniform and uniformR is
fixed. (#75)
Changes in 0.15.0.0
* withSystemRandomST and createSystemSeed are added.
* withSystemRandom is deprecated.
* random>=1.2 is dependency of mwc-random.
* Instances for type classes StatefulGen & FrozenGen defined in
random-1.2 are added for Gen.
* Functions in System.Random.MWC.Distributions and
System.Random.MWC.CondensedTable now work with arbitrary StatefulGen
* System.Random.MWC.uniformVector now works with arbitrary StatefulGen
as well and uses in-place initialization instead of generateM. It
should be faster for anything but IO and ST (those shoud remain
same).
Changes in 0.3.4.2
* Fixed crash in invIncompleteBeta (#68) for some inputs initial
approximation was computed incorrectly.
Changes in 0.3.4.1
* Precision of incompleteGamma improved.
Changes in 0.3.4.0
* Dependency on vector-th-unbox is dropped. All instances are written
by hand now.
* The build-type has been changed from Custom to Simple. To achieve
this, the doctests test suite has been removed in favor of using
cabal-docspec to run the doctests.
* Explicitly mark modules as Safe.
5.5.10 [2021.01.21]
* Fix a bug in which deriveBifoldable could generate code that
triggers -Wunused-matches warnings.
5.5.9 [2020.12.30]
* Explicitly mark modules as Safe or Trustworthy.
5.5.8 [2020.10.01]
* Fix a bug in which deriveBifunctor would fail on sufficiently
complex uses of rank-n types in constructor fields.
* Fix a bug in which deriveBiunctor and related functions would
needlessly reject data types whose two last type parameters appear
as oversaturated arguments to a type family.
5.5.7 [2020.01.29]
* Add Data.Bifunctor.Biap.
5.0.8 [2020.12.30]
* Explicitly mark modules as Safe or Trustworthy.
* The build-type has been changed from Custom to Simple. To achieve
this, the doctests test suite has been removed in favor of using
cabal-docspec to run the doctests.
5.0.7 [2020.12.15]
* Move FunctorWithIndex (TracedT m w) instance from lens. This
instance depends on the indexed-traversable package. This can be
disabled using the flag of the same name.
0.6.2.1 [2020.12.30]
* The build-type has been changed from Custom to Simple. To achieve
this, the doctests test suite has been removed in favor of using
cabal-docspec to run the doctests.
0.6.2 [2020.04.10]
* Make the Distributive instance for Tagged poly-kinded.
version: 0.23
date: Sun 01 Nov 2020 02:41:20 PM CET
changes:
- minor improvements to coalescing
- use build compiler to build extract_interface
- add some convenience functions
- ignore parameters in isl_union_* hash tables
---
version: 0.22.1
date: Sun Jan 12 10:48:18 CET 2020
changes:
- fix error handling
---
version: 0.22
date: Fri Nov 1 18:39:30 CET 2019
changes:
- require C++11 to generate bindings
- improved bindings
- scheduler fix involving fixed dimensions
- accept ranges in tuples during parsing
- add some convenience functions
---
version: 0.21
date: Sat Mar 9 15:25:29 CET 2019
changes:
- preliminary C++ bindings
- use incremental scheduler by default
- introduce isl_size type
- rename isl_ast_op_type to isl_ast_expr_op_type
- fix coalescing bugs
- use isl_bool to return extra boolean argument
---
version: 0.20
date: Sat Jul 21 18:10:08 CEST 2018
changes:
- keep track of domain in 0D isl_multi_pw_aff and isl_multi_union_pw_aff
- add isl_aff_eval and isl_pw_aff_eval
- add fixed-size rectangular box hull
---
version: 0.19
date: Sat Mar 3 10:44:49 CET 2018
changes:
- minor improvements to coalescing
- minor improvement to parametric integer programming
- try harder to avoid large coefficients in scheduler
- support kill accesses in dependence analysis
- drop deprecated isl_int
- drop deprecated band forests
- drop deprecated functions
---
version: 0.18
date: Sun Dec 18 11:01:58 CET 2016
changes:
- improve elimination of redundant existentially quantified variables
- improve coalescing
- improve parametric integer programming
- preserve isolate option in isl_schedule_node_band_split
- print AST nodes in YAML format
- minor improvements to Python bindings
On NetBSD.
In PKGSRC_FORTRAM=gfortran case, libcblas has no RPATH=/usr/pkg/gccXX/lib
and libgfortran and libquadmath are not found.
In PKGSRC_FORTRAN=g95 case, libcblas has no
RPATH=/usr/pkg/lib/gcc-lib/x86_64--netbsd/4.1.2 and libf95 is not found.
Use Fortran compiler as linker instread of C compiler to fix link.