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).
Install the new interchangeable BLAS system created by Thomas Orgis,
currently supporting Netlib BLAS/LAPACK, OpenBLAS, cblas, lapacke, and
Apple's Accelerate.framework. This system allows the user to select any
BLAS implementation without modifying packages or using package options, by
setting PKGSRC_BLAS_TYPES in mk.conf. See mk/blas.buildlink3.mk for details.
This commit should not alter behavior of existing packages as the system
defaults to Netlib BLAS/LAPACK, which until now has been the only supported
implementation.
Details:
Add new mk/blas.buildlink3.mk for inclusion in dependent packages
Install compatible Netlib math/blas and math/lapack packages
Update math/blas and math/lapack MAINTAINER approved by adam@
OpenBLAS, cblas, and lapacke will follow in separate commits
Update direct dependents to use mk/blas.buildlink3.mk
Perform recursive revbump
pkglint --only "https instead of http" -r -F
With manual adjustments afterwards since pkglint 19.4.4 fixed a few
indentations in unrelated lines.
This mainly affects projects hosted at SourceForce, as well as
freedesktop.org, CTAN and GNU.
Release 2.9.1
Changes
-------
- Fixing issue 432 (see Section Bugs fixed below) involved removed the method
`__reduce__` previously provided for all rpy2 objects representing R objects.
Bugs fixed
----------
- An error when installing with an unsupported R version was fixed.
- The docstring for `rinterface.endr()` was improperly stating that the function was not taking
any argument.
- Target version of dplyr and tidyr are now 0.7.4 and 0.7.2 respectively.
- Fixed memory leak when pickling objects. Fixing the leak caused a
slight change in the API (see Section Changes above).
- Conversion to :mod:`pandas` now handling R ordered factor.
- :mod:`jinja2` was not listed as a dependency
Release 2.9.0:
New features
- New module :mod:`rpy2.situation` to extract and report informations
about the environment, such as where is the R HOME, what is the
version of R, what is the version of R rpy2 was built with, etc...
The module is also designed to be run directly and provide diagnostics:
`python -m rpy2.situation`.
- :meth:`Environment.values`, :meth:`Environment.pop`,
:meth:`Environment.popitems`, :meth:`Environment.clear`
to match :meth:`dict.values`,
:meth:`dict.pop`, :meth:`dict.popitems`, :meth:`dict.clear`.
- :class:`VectorOperationsDelegator` now has a method `__matmul__` to implement
Python's matrix multiplication operator (PEP-0645).
- A rule to convert R POSIXct vectors to pandas Timestamp vectors was added.
- method :meth:`_repr_html_` for R vectors to display HTML in jupyter.
Changes
- Starting several times the singleton :class:`EventProcessor` longer results
in a :class:`RuntimeError`.
- The target version for the R package `dplyr` mapped is now 0.7.1, and
:func:`rpy2.robjects.lib.dplyr.src_dt` and
:func:`rpy2.robjects.lib.dplyr.src_desc` are no longer present.
- :meth:`Environment.keys` is now a iterator to match :meth:`dict.keys`,
also an interator in Python 3.
- Target version of `ggplot2` library is 2.2.1.
- Option `stringsasfactors` in the constructor for the class `DataFrame`. If `False`, the
strings are no longer converted to factors. When converting from pandas data frames
the default is to no longer convert columns of strings to factors.
- The R "magic" for jupyter is now more consistently using the conversion system, and the
use of custom converters through the magic argument `-c` will work as expected.
- Docker-related files moved to directory docker/ (where variants image for rpy2 are available)
Bugs fixed
- :func:`numpy.float128` is not available on all platforms. The unit test
for it is now skipped on systems where it is not present
- R pairlist objects can now be sliced.
- Passing parameters names that are empty string to R function was
causing a segfault.
- Trying to build an atomic R vector from a Python object that has a length,
but it not a sequence nor an iterator was causing a segfault
Release 2.5.6
=============
Bugs fixed
----------
- Detection of the R version during setup on Win8 (issues #255 and #258)
- Segmentation fault when converting :mod:`pandas` :class:`Series` with
elements of type object (issue #264)
- The default converter from Python (non-rpy2) objects to rinterface-level
objects was producing robjects-level objects whenever the input was of
type :class:`list` (discovered while fixing issue #264)
- Implemented suggested fix for issue with unlinking files on Windows
(issue #191)
- Testing rpy2 in the absence of ipython no longer stops with an error
(issue #266)
Release 2.5.5
=============
Bugs fixed
----------
- Crash (segfault) when querying an R object in an R environment triggers an
error (symbol exists, but associated values resolves to an error - issue #251)
- Change in the signature of `rcall` was not updated in the documentation
(issue #259)
- Minor update to the documentation (issue #257)
Release 2.5.4
=============
Bugs fixed
----------
- Filter PNG files on size, preventing empty files causing trouble to be
ipython notebook rendering of graphics later on (slight modification of
the pull request #39)
- Fix installation left unresolved with rpy2-2.5.3 (issue #248)
- Possible segfault with Python 3.4 (issue #249)
Release 2.5.3
=============
Changes
-------
- `setup.py` has `install_requires` in addition to `requires` in the hope to
fix the missing dependency with Python 2 (:mod:`singledispatch` is required
but not installed).
Bugs fixed
----------
- Extracting configuration information from should now work when R is emitting a warning (issue #247)
- On OS X the library discovery step can yield nothing (see issue #246). A tentative fix is to issue
a warning and keep moving.
Release 2.5.2
=============
Bugs fixed
----------
- String representation of :class:`robjects.R` (issue #238)
- Check during `build_ext` if unsupported version of R (pull request #32)
- HTMl display of columns of factors in a DataFrame (issue #236)
- HTML display of factors (issue #242)
Release 2.5.1
=============
Bugs fixed
----------
- Require singledispatch if Python 3.3 (issue #232)
- Fixed bug when R spits out a warning when asked configuration information (issue #233)
- Restored printing of compilation information when running `setup.py`
- Fixed installation issue on some systems (issue #234)
- Workaround obscure failure message from unittest if Python < 3.4 and
:mod:`singledispatch` cannot be imported (issue #235)
Release 2.5.0
=============
New features
------------
- Experimental alternative way to preserve R objects from garbage collection.
This can be activated with `rinterface.initr(r_preservehash=True)` (default
is `False`.
- :class:`GGPlot` object getting a method :meth:`save`
mirroring R's `ggplot2::ggsave()`.
- The conversion system is now using generics/single dispatch.
- New module :mod:`rpy2.ipython.html` with HTML display for rpy2 objects
- [Experimental] New function :func:`robjects.methods.rs4instance_factory`
to type RS4 objects with more specificity.
Changes
-------
- The script `setup.py` was rewritten for clarity and ease of maintenance.
Now it only uses `setuptools`.
Release 2.4.4
=============
Bugs fixed
----------
- Use `input` rather than `raw_input` in the default console callback
with Python 3 (fixes issue #222)
- Issues with conversions, pandas, and rmagic (fixes issue #218 and more)
Release 2.4.3
=============
Bugs fixed
----------
- `geom_raster` was missing from `rpy2.robjects.lib.ggplot2` (pull request #30)
- Fixed issue with SVG rendering in ipython notebook (issue #217)
- Regression with `rx2()` introduced with new conversion (issue #219)
- Fixed documentation (missing `import`) (issue #213)
Release 2.4.2
=============
Bugs fixed
----------
- Assigning an R `DataFrame` into an environment was failing if
the conversion for Pandas was activated. (Issue #207)
Release 2.4.1
=============
Bugs fixed
----------
- :meth:`rpy2.ipython` fixed spurious output to notebook cells.
Release 2.4.0
=============
Changes
-------
- Conversion system slightly changed, with the optional
conversions for :mod:`numpy` and :mod:`pandas` modified
accordingly. The changes should only matter if using
third-party conversion functions.
- The Python 3 version is now a first class citizen. `2to3`
is no longer used, and the code base is made directly
compatible with Python. This lowers significantly the
installation time with Python 3
(which matters when developping rpy2).
- The default options to initialize R (`rpy2.rinterface.initoptions') are no longer
`('rpy2', '--quiet', '--vanilla', '--no-save')` but now
`('rpy2', '--quiet', '--no-save')`.
- :class:`robjects.vectors.ListVector` can be instanciated from
any objects with a method `items()` with the expectation that the method
returns an iterable of (name, value) tuples, or even be an iterable
of (name, value) tuples.
New features
------------
- For instances of :class:`rpy2.robjects.Function`,
the `__doc__` is now a property fetching information
about the parameters in the R signature.
- Convenience function :func:`rpy2.robjects.packages.data`
to extract the datasets in an R pacakges
- :mod:`ipython`'s `rmagic` is now part of :mod:`rpy`. To use, `%load_ext
rpy2.ipython` from within IPython.
- new method :meth:`rpy2.rinterface.SexpEnvironment.keys`, returnings
the names in the environment as a tuple of Python strings.
- convenience class :class:`robjects.packages.InstalledPackages`, with a companion function
:func:`robjects.packages.isinstalled`.
- new class :class:`rinterface.SexpSymbol` to represent R symbols
Bugs fixed
----------
- :meth:`rpy2.rinterface.Sexp.do_slot` was crashing when
the parameter was an empty string (PR #155)
Release 2.3.10
==============
Bugs fixed
----------
- `setup.py build` was broken when new R compiled with OpenMP (Issue #183)
Release 2.3.9
=============
- Changes in pandas 0.13.0 broke the rpy2 conversion layer (Issue #173)
Release 2.3.8
=============
Bugs fixed
----------
- Crash with R-3.0.2. Changes in R-3.0.2's C API coupled to a strange behaviour
with R promises caused the problem. (PR #150)
Release 2.3.7
=============
Bugs fixed
----------
- ggplot2's "guides" were missing
- ggplot2's "theme_classic" was missing (PR #143)
- ggplot2's "element_rect" was missing (PR #144)
- :func:`rpy2.interactive.packages` was broken (PR #142)
Release 2.3.6
=============
Bugs fixed
----------
- Several reports of segfault on OS X (since rpy2-2.3.1 - PR #109)
- More fixes in converting `DataFrames` with dates from `pandas`
Relase 2.3.5
============
Bugs fixed
----------
- Missing mapping to ggplot2's `scale_shape_discrete` function
- Better handling of dates in Pandas
- Constructor for POSIXct improved (and fixed)
Changes
-------
- The attribute :attr:`rclass` is no longer read-only and can be set
(since R allows it)
- Importing the module :mod:`rpy2.interactive` no longer activates
event processing by default (triggering concurrency errors
when used with ipython).
New features
------------
- New module :mod:`rpy2.interactive.ipython` (so far plotting
automatically a ggplot2 figure in the iPython's console)
- It is now possible to set the :attr:`rclass`.
Relase 2.3.4
============
Bugs fixed
----------
- Spurious error when running unit tests with Python 3 and numpy
installed
- Missing mapping to ggplot2's `geom_dotplot` function
- Warnings are not longer printed (see Changes below)
Changes
-------
- Bumped target version of ggplot2 to 0.9.3.1
- Warnings are not longer printed. The C-level function in R became
hidden in R-3.0, and the cost of an R-level check/print is relatively
high if the R code called is very short. This might evolve into
printing warnings only if interactive mode in Python (if this can
be checked reliably).
Release 2.3.3
=============
Bugs fixed
----------
- Some of the data.frames converted from :mod:`pandas` were triggering
a :class:`TypeError` when calling :func:`repr`
- In :mod:`rpy2.robjects.lib.ggplot2`, a mapping to `coord_fixed` was
missing (PR #120)
- Using the parameter `lib_loc` in a call to
:func:`rpy2.robjects.packages.importr` was resulting in an error (PR #119)
- Creating a `layer` through the `rpy2.robjects.lib.ggplot2` interface did
not accept parameters (PR #122)
- Testing the Python version was crashing of a number of unsupported Python
versions (<= 2.6) (PR #117)
New features
------------
- New module pandas2ri to convert from mod:`pandas` `DataFrame` objects
- New classes :class:`rpy2.robjects.lib.grid.Unit` and
:class:`rpy2.robjects.lib.grid.Gpar` to model their counterparts in
R's `grid` package as they were previously missing from rpy2.
Release 2.3.2
=============
Bug fixed
---------
- Building on Win64 (pull request #6)
- Fetching data from an R package through `importr` was masking
any R object called `data` in that package. The data are now
under the attribute name `__rdata__`. This is not completely
safe either, although much less likely, a warning will
be issued if still masking anything.
Changes
-------
- More informative error message when failing to build because `R CMD config`
does not return what is expected
Release 2.3.1
=============
Bugs fixed
----------
- default console print callback with Python (issue #112 linked to it)
- deprecation warnings with ggplot2 (issue #111 and contributed patch)
Release 2.3.0
=============
New Features
------------
:mod:`rpy2.rinterface`:
- C-level API, allowing other C-level modules to make use of utilities
without going through the Python level. The exact definition of
the API is not yet fixed. For now there is
PyRinteractive_IsInitialized() to assess whether R was initialized
(through :mod:`rpy2.rinterface` or not).
- C-module _rpy_device, allowing one to implement R graphical devices
in Python [(very) experimental]
- Tracking of R objects kept protected from garbage collection by rpy2
is now possible.
- New method :meth:`Sexp.rid` to return the identifier of the R object
represented by a Python/rpy2 object
:mod:`rpy2.rinteractive`:
- Dynamic build of Python docstrings out of the R manual pages
:mod:`rpy2.robjects.help`:
- Build dynamic help
:mod:`rpy2.robjects.packages:
- Build anonymous R packages from strings
- When using :func:`importr`, the datasets are added as an attribute
:attr:`data`, itself an instance of a new class :class:`PackageData`.
It no longer possible to access datasets are regular objects from
a code package (because of changes in R), and the new system is
more robust against quirks.
Changes
-------
:mod:`rpy2.rinterface`:
- :attr:`SexpClosure.env` to replace the method `closureenv`.
Release 2.2.6
=============
Bugs fixed
----------
- Newest R-2.15 and ggplot2 0.9 broke the ggplot2 interaface
in :mod:`rpy2.robjects.lib.ggplot2`
Release 2.2.5
=============
Bugs fixed
----------
- install process: Library location for some of the R installations
- should compile on win32 (thanks to a patch from Evgeny Cherkashin),
a work to a limited extend
Release 2.2.4
=============
Bugs fixed
----------
- Memory leak when creating R vectors from Python (issue #82)
Release 2.2.3
=============
Bugs fixed
----------
- Dynamic construction of S4 classes was looking for R help as 'class.<class>'
rather than '<class>-class'
- The cleanup of temporary directories created by R was not happening if
the Python process terminated without calline :func:`rpy2.rinterface.endr()`
(issue #68, and proof-of-principle fix by chrish42)
Release 2.2.2
=============
Bugs fixed
----------
- With the robjects layer, repr() on a list containing non-vector elements
was failing
Release 2.2.1
=============
Bugs fixed
----------
- MANIFEST.in was missing from MANIFEST.in, required with Python 3
Release 2.2.0
=============
New Features
------------
- Support for Python 3, and for some of its features ported to Python 2.7
:mod:`rpy2.robjects`:
- :meth:`Environment.keys` to list the keys
- classes :class:`robjects.vectors.POSIXlt` and
:class:`robjects.vectors.POSIXlt` to represent vectors of R
dates/time
- :func:`packages.get_packagepath` to get the path to an R package
- module :mod:`rpy2.robjects.help` to expose the R help system to Python
- Metaclass utilities in :mod:`rpy2.robjects.methods`, allowing to reflect
automatically R S4 classes as Python classes.
- :meth:`rpy2.robjects.vectors.FactorVector.iter_labels` to iterate over the labels
- :class:`rpy2.robjects.vectors.ListVector` to represent R lists.
- Constructor for :class:`rpy2.robjects.vectors.ListVector` and
:class:`rpy2.robjects.vectors.DataFrame` accept any iterable at the condition
that the elements iterated through also valid subscripts for it (e.g., given
an iterable v, the following is valid:
.. code-block:: python
x[k] for x in v
:mod:`rpy2.rinterface`:
- :data:`NA_Complex` and :class:`NAComplexType` for missing complex values.
- :class:`SexpExtPtr` to represent R objects of type EXTPTR (external pointers).
- :func:`rpy2.rinterface.parse` to parse a string a R code
- :func:`rpy2.rinterface.rternalise` to wrap Python function as :class:`SexpClosure` that can
be called by R just as it was a function of its own.
- :class:`rpy2.rinterface.RNULLType` for R's C-level NULL value and
:class:`rpy2.rinterface.UnboundValueType` for R's C-level R_UnboundValue
(both singletons).
- :meth:`rinterface.SexpVector.index`, of similar behaviour to :meth:`list.index`.
- :meth:`rpy2.rinterface.Sexp.list_attrs` to list the names of all R attributes
for a given object.
- :class:`rpy2.rinterface.ByteSexpVector` to represent R 'raw' vectors.
- constant `R_LEN_T_MAX` to store what is the maximum length for a vector in R.
- tuple `R_VERSION_BUILD` to store the version of R rpy2 was built against
- getter :attr:`Sexp.rclass` to return the R class associated with an object
:mod:`rpy2.rlike`:
- :class:`container.OrdDict` get proper methods :meth:`keys` and `get`
:mod:`rpy2.interactive`:
- A new sub-package to provide utilities for interactive work, either for
handling R interactive events or use Python for interactive programming
(as often done with the R console)
Changes
-------
:mod:`rpy2.robjects`:
- NA_bool, NA_real, NA_integer, NA_character and NA_complex are now
deprecated (and removed).
NA_Logical, NA_Real, NA_Integer, NA_Character, NA_Complex should be used.
- :class:`rpy2.robjects.packages.Package` now inherits from :class:`types.ModuleType`
- classes representing R vector also inherit their type-specific
rinterface-level counterpart.
- Importing the :class:`rpy2.robjects.numpy2ri` is no longer sufficient
to active the conversion. Explicit activation is now needed; the function
`activate` can do that.
:mod:`rpy2.rinterface`:
- :class:`IntSexpVector`, :class:`FloatSexpVector`,
:class:`StrSexpVector`, :class:`BoolSexpVector`, :class:`ComplexSexpVector`
are now defined at the C level, improving performances
and memory footprint whenever a lot of instances are created.
Bugs fixed
----------
- Better and more explicit detection system for needed libraries when
compiling rpy2 (ported to release 2.1.6)
- Long-standing issue with readline fixed (issue #10)
Release 2.1.9
=============
Bugs fixed
----------
- The R class in rpy2.robjects is now truly a singleton
- When using numpy 1.5 and Python >= 2.7, the exposed buffer for R numerical (double)
vectors or arrays was wrong.
Release 2.1.8
=============
Bugs fixed
----------
- Fixed issue with R arrays with more than 2 dimensions and numpy arrays
(issue #47 - backported from the branch 2.2.x).
Release 2.1.7
=============
Bugs fixed
----------
- More fixes for the automated detection of include and libraries at build time.
Release 2.1.6
=============
Bugs fixed
----------
- Further fixes in the automatic detection of includes and libraries
needed to compile rpy2 against R. The detection code has
been refactored (backport from the 2.2.x branch)
Release 2.1.5
=============
Bugs fixed
----------
- fixes the automatic detection of R_HOME/lib during building/compiling
when R_HOME/lib is not in lib/ (issue #54)
Release 2.1.4
=============
New features
------------
- :mod:`rpy2.robjects.lib.ggplot2` now has the functions :func:`limits`,
:func:`xlim`, :func:`ylim` exposed (patch contributed anonymously)
Bugs fixed
----------
- Install script when the BLAS library used by R is specified as a library
file (patch by Michael Kuhn)
From README:
RPy2 is subject to the Mozilla Public License Version 1.1 (the
"License"); you may not use RPy2 except in compliance with the
License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/ (or see the file MPL_LICENSE)
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and
limitations under the License.
The Original Code is the RPy2 python package, itself subdivived
into subpackages and modules.
All code is Copyright of the respective author(s).
See the file AUTHORS for further details regarding authorship.
Alternatively, RPy2 may be used under the terms of either the GNU
General Public License Version 2 or later (the "GPL", see the file
GPL_LICENSE), or the GNU Lesser General Public License Version 2.1
or later (the "LGPL", see the file LGPL_LICENSE), in which case the
provisions of the GPL or the LGPL are applicable instead of those
above. If you wish to allow use of your version of this file only
under the terms of either the GPL or the LGPL, and not to allow
others to use your version of this file under the terms of the MPL,
indicate your decision by deleting the provisions above and replace
them with the notice and other provisions required by the GPL or the
LGPL. If you do not delete the provisions above, a recipient may use
your version of this file under the terms of any one of the MPL, the
GPL or the LGPL.
- assume that Python 2.4 and 2.5 are compatible and allow checking for
fallout.
- remove PYTHON_VERSIONS_COMPATIBLE that are obsoleted by the 2.3+
default. Modify the others to deal with the removals.
New features:
* Dramatically simplify the build process for Win32
* It is now possible to use setup.cfg to control various aspects of the
build process. 'config.in' contains a template containing all available
options and what they do.
Bug fixes
* RPy compiled with Numeric support will no longer crash when run with
Numeric available.
* Crash during import when R is missing from the registry
* Problem using R Wavelets library with RPy
* RPy does not build on OS X, easy fix
* Plotting with RPy crashes Python
Other
* The rpy.py now communicates RHOME, RVER, RVERSION, RUSER from python to
the _rpy module using environment variables. This avoids the need to
have duplicate C code to obtain these values, and makes things both more
maintainable and more robust.
RECOMMENDED is removed. It becomes ABI_DEPENDS.
BUILDLINK_RECOMMENDED.foo becomes BUILDLINK_ABI_DEPENDS.foo.
BUILDLINK_DEPENDS.foo becomes BUILDLINK_API_DEPENDS.foo.
BUILDLINK_DEPENDS does not change.
IGNORE_RECOMMENDED (which defaulted to "no") becomes USE_ABI_DEPENDS
which defaults to "yes".
Added to obsolete.mk checking for IGNORE_RECOMMENDED.
I did not manually go through and fix any aesthetic tab/spacing issues.
I have tested the above patch on DragonFly building and packaging
subversion and pkglint and their many dependencies.
I have also tested USE_ABI_DEPENDS=no on my NetBSD workstation (where I
have used IGNORE_RECOMMENDED for a long time). I have been an active user
of IGNORE_RECOMMENDED since it was available.
As suggested, I removed the documentation sentences suggesting bumping for
"security" issues.
As discussed on tech-pkg.
I will commit to revbump, pkglint, pkg_install, createbuildlink separately.
Note that if you use wip, it will fail! I will commit to pkgsrc-wip
later (within day).
developer is officially maintaining the package.
The rationale for changing this from "tech-pkg" to "pkgsrc-users" is
that it implies that any user can try to maintain the package (by
submitting patches to the mailing list). Since the folks most likely
to care about the package are the folks that want to use it or are
already using it, this would leverage the energy of users who aren't
developers.