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)
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.
--------------------
Fixed bugs
o There was several memory leaks due to bad management of Python
refcounts.
o There was wrong synchronization of the thread running the R event
loop and the calls to the R interpreter.
o There was a bug with signal handling which caused segfault when
'Ctrl-C' were pressed.
o The R event loop shouldn't be run in non-interactive sessions.
o The i/o Python callbacks were wrong synchronized with the R event
loop thread.
New features
o Added a rpy_version symbol.
Inspired by FreeBSD "ports".
Fix the PLISTs accordingly.
Also, while at it, remove now obsolete compileall.py calls in post-install
targets and insure that extension.mk is in included before builinlinks of
other Python modules.
Discussed with/ok'ed by drochner@.
Package provided by Kent Polk <kent@goathill.org> in personal email.
RPy is a very simple, yet robust, Python interface to the R
Programming Language. It can manage all kinds of R objects and can
execute arbitrary R functions (including the graphic functions).
All the errors from the R language are converted to Python exceptions.
Any modules that later were installed on the R system, can easily
be used from within Python, without introducing any changes.