Update to matplotlib 1.2.0 (#837156)

This commit is contained in:
pcpa 2012-11-27 18:01:54 -02:00
parent 8a5f96fc9d
commit cfeed65034
9 changed files with 237 additions and 545 deletions

View File

@ -1,188 +0,0 @@
--- a/lib/matplotlib/axes.py
+++ b/lib/matplotlib/axes.py
@@ -2679,18 +2679,20 @@ class Axes(martist.Artist):
def xaxis_date(self, tz=None):
"""Sets up x-axis ticks and labels that treat the x data as dates.
- *tz* is the time zone to use in labeling dates. Defaults to rc value.
+ *tz* is a timezone string or :class:`tzinfo` instance.
+ Defaults to rc value.
"""
# should be enough to inform the unit conversion interface
- # dates are comng in
- self.xaxis.axis_date()
+ # dates are coming in
+ self.xaxis.axis_date(tz)
def yaxis_date(self, tz=None):
"""Sets up y-axis ticks and labels that treat the y data as dates.
- *tz* is the time zone to use in labeling dates. Defaults to rc value.
+ *tz* is a timezone string or :class:`tzinfo` instance.
+ Defaults to rc value.
"""
- self.yaxis.axis_date()
+ self.yaxis.axis_date(tz)
def format_xdata(self, x):
"""
@@ -3808,7 +3810,7 @@ class Axes(martist.Artist):
*fmt*: string
The plot format string.
- *tz*: [ None | timezone string ]
+ *tz*: [ None | timezone string | :class:`tzinfo` instance]
The time zone to use in labeling dates. If *None*, defaults to rc
value.
diff --git a/lib/matplotlib/axis.py b/lib/matplotlib/axis.py
index 85e078c..a825d8e 100644
--- a/lib/matplotlib/axis.py
+++ b/lib/matplotlib/axis.py
@@ -1249,21 +1249,21 @@ class Axis(artist.Artist):
def update_units(self, data):
"""
introspect *data* for units converter and update the
- axis.converter instance if necessary. Return *True* is *data* is
- registered for unit conversion
+ axis.converter instance if necessary. Return *True*
+ if *data* is registered for unit conversion.
"""
converter = munits.registry.get_converter(data)
- if converter is None: return False
+ if converter is None:
+ return False
neednew = self.converter!=converter
self.converter = converter
default = self.converter.default_units(data, self)
- #print 'update units: default="%s", units=%s"'%(default, self.units)
+ #print 'update units: default=%s, units=%s'%(default, self.units)
if default is not None and self.units is None:
self.set_units(default)
-
if neednew:
self._update_axisinfo()
return True
@@ -1484,14 +1484,21 @@ class Axis(artist.Artist):
self.major.locator.zoom(direction)
- def axis_date(self):
+ def axis_date(self, tz=None):
"""
Sets up x-axis ticks and labels that treat the x data as dates.
+ *tz* is a :class:`tzinfo` instance or a timezone string.
+ This timezone is used to create date labels.
"""
+ # By providing a sample datetime instance with the desired
+ # timezone, the registered converter can be selected,
+ # and the "units" attribute, which is the timezone, can
+ # be set.
import datetime
- # should be enough to inform the unit conversion interface
- # dates are comng in
- self.update_units(datetime.date(2009,1,1))
+ if isinstance(tz, (str, unicode)):
+ import pytz
+ tz = pytz.timezone(tz)
+ self.update_units(datetime.datetime(2009,1,1,0,0,0,0,tz))
class XAxis(Axis):
diff --git a/lib/matplotlib/dates.py b/lib/matplotlib/dates.py
index 7a2f9f3..9018315 100644
--- a/lib/matplotlib/dates.py
+++ b/lib/matplotlib/dates.py
@@ -1104,15 +1104,26 @@ def weeks(w):
class DateConverter(units.ConversionInterface):
- """The units are equivalent to the timezone."""
+ """
+ Converter for datetime.date and datetime.datetime data,
+ or for date/time data represented as it would be converted
+ by :func:`date2num`.
+
+ The 'unit' tag for such data is None or a tzinfo instance.
+ """
@staticmethod
def axisinfo(unit, axis):
- 'return the unit AxisInfo'
- # make sure that the axis does not start at 0
+ """
+ Return the :class:`~matplotlib.units.AxisInfo` for *unit*.
+
+ *unit* is a tzinfo instance or None.
+ The *axis* argument is required but not used.
+ """
+ tz = unit
- majloc = AutoDateLocator(tz=unit)
- majfmt = AutoDateFormatter(majloc, tz=unit)
+ majloc = AutoDateLocator(tz=tz)
+ majfmt = AutoDateFormatter(majloc, tz=tz)
datemin = datetime.date(2000, 1, 1)
datemax = datetime.date(2010, 1, 1)
@@ -1121,12 +1132,28 @@ class DateConverter(units.ConversionInterface):
@staticmethod
def convert(value, unit, axis):
- if units.ConversionInterface.is_numlike(value): return value
+ """
+ If *value* is not already a number or sequence of numbers,
+ convert it with :func:`date2num`.
+
+ The *unit* and *axis* arguments are not used.
+ """
+ if units.ConversionInterface.is_numlike(value):
+ return value
return date2num(value)
@staticmethod
def default_units(x, axis):
- 'Return the default unit for *x* or None'
+ 'Return the tzinfo instance of *x* or of its first element, or None'
+ try:
+ x = x[0]
+ except (TypeError, IndexError):
+ pass
+
+ try:
+ return x.tzinfo
+ except AttributeError:
+ pass
return None
diff --git a/lib/matplotlib/units.py b/lib/matplotlib/units.py
index 700363a..59b570e 100644
--- a/lib/matplotlib/units.py
+++ b/lib/matplotlib/units.py
@@ -7,8 +7,8 @@ objects, eg a list of datetime objects, as well as for objects that
are unit aware. We don't assume any particular units implementation,
rather a units implementation must provide a ConversionInterface, and
the register with the Registry converter dictionary. For example,
-here is a complete implementation which support plotting with native
-datetime objects
+here is a complete implementation which supports plotting with native
+datetime objects::
import matplotlib.units as units
@@ -48,7 +48,7 @@ from matplotlib.cbook import iterable, is_numlike, is_string_like
class AxisInfo:
'information to support default axis labeling and tick labeling, and default limits'
def __init__(self, majloc=None, minloc=None,
- majfmt=None, minfmt=None, label=None,
+ majfmt=None, minfmt=None, label=None,
default_limits=None):
"""
majloc and minloc: TickLocators for the major and minor ticks
--
1.7.6.2

View File

@ -1,12 +0,0 @@
diff -up matplotlib-1.0.1/setup.cfg.disable-wx-in-setup.cfg matplotlib-1.0.1/setup.cfg
--- matplotlib-1.0.1/setup.cfg.disable-wx-in-setup.cfg 2012-04-18 15:54:40.408040980 -0400
+++ matplotlib-1.0.1/setup.cfg 2012-04-18 15:54:40.412040931 -0400
@@ -57,7 +57,7 @@ configobj = False
gtk = True
gtkagg = True
tkagg = True
-wxagg = True
+wxagg = False
[rc_options]
# User-configurable options

View File

@ -1,12 +0,0 @@
diff -uNr matplotlib-1.0.1.orig/lib/matplotlib/sphinxext/plot_directive.py matplotlib-1.0.1/lib/matplotlib/sphinxext/plot_directive.py
--- matplotlib-1.0.1.orig/lib/matplotlib/sphinxext/plot_directive.py 2011-01-23 05:42:08.000000000 +0900
+++ matplotlib-1.0.1/lib/matplotlib/sphinxext/plot_directive.py 2011-01-23 05:44:48.000000000 +0900
@@ -346,7 +346,7 @@
del options['nofigs']
formats = setup.config.plot_formats
- if type(formats) == str:
+ if type(formats) == str or type(formats) == unicode:
formats = eval(formats)
fname = os.path.basename(plot_path)

View File

@ -1,12 +0,0 @@
diff -up matplotlib-1.0.1/setupext.py.tkinter matplotlib-1.0.1/setupext.py
--- matplotlib-1.0.1/setupext.py.tkinter 2011-10-31 14:58:44.000000000 +0100
+++ matplotlib-1.0.1/setupext.py 2011-10-31 14:59:14.000000000 +0100
@@ -829,7 +829,7 @@ def check_for_tk():
if gotit:
print_status("Tkinter", "Tkinter: %s, Tk: %s, Tcl: %s" %
- (Tkinter.__version__.split()[-2], Tkinter.TkVersion, Tkinter.TclVersion))
+ (Tkinter.__version__, Tkinter.TkVersion, Tkinter.TclVersion))
else:
print_status("Tkinter", "no")
if explanation is not None:

View File

@ -1,17 +1,7 @@
diff -up matplotlib-1.0.1/MANIFEST.in.noagg matplotlib-1.0.1/MANIFEST.in diff -up matplotlib-1.2.0/setupext.py.orig matplotlib-1.2.0/setupext.py
--- matplotlib-1.0.1/MANIFEST.in.noagg 2010-07-06 19:41:55.000000000 -0600 --- matplotlib-1.2.0/setupext.py.orig 2012-11-23 14:49:21.295712608 -0200
+++ matplotlib-1.0.1/MANIFEST.in 2011-05-20 15:45:38.337580769 -0600 +++ matplotlib-1.2.0/setupext.py 2012-11-23 14:49:31.508712999 -0200
@@ -18,6 +18,5 @@ recursive-include examples * @@ -96,7 +96,6 @@ BUILT_GDK = False
recursive-include doc *
recursive-include src *.cpp *.c *.h *.m
recursive-include CXX *.cxx *.hxx *.c *.h
-recursive-include agg24 *
recursive-include lib *
recursive-include ttconv *.cpp *.h
diff -up matplotlib-1.0.1/setupext.py.noagg matplotlib-1.0.1/setupext.py
--- matplotlib-1.0.1/setupext.py.noagg 2010-07-06 19:41:55.000000000 -0600
+++ matplotlib-1.0.1/setupext.py 2011-05-20 16:11:56.977764688 -0600
@@ -104,7 +104,6 @@ BUILT_GDK = False
BUILT_PATH = False BUILT_PATH = False
BUILT_TRI = False BUILT_TRI = False
@ -19,7 +9,7 @@ diff -up matplotlib-1.0.1/setupext.py.noagg matplotlib-1.0.1/setupext.py
TCL_TK_CACHE = None TCL_TK_CACHE = None
# for nonstandard installation/build with --prefix variable # for nonstandard installation/build with --prefix variable
@@ -551,7 +550,8 @@ def add_agg_flags(module): @@ -621,7 +620,8 @@ def add_agg_flags(module):
# before adding the freetype flags since -z comes later # before adding the freetype flags since -z comes later
add_base_flags(module) add_base_flags(module)
add_numpy_flags(module) add_numpy_flags(module)
@ -29,7 +19,7 @@ diff -up matplotlib-1.0.1/setupext.py.noagg matplotlib-1.0.1/setupext.py
# put these later for correct link order # put these later for correct link order
module.libraries.extend(std_libs) module.libraries.extend(std_libs)
@@ -1251,17 +1251,7 @@ def build_agg(ext_modules, packages): @@ -1220,17 +1220,7 @@ def build_agg(ext_modules, packages):
global BUILT_AGG global BUILT_AGG
if BUILT_AGG: return # only build it if you you haven't already if BUILT_AGG: return # only build it if you you haven't already
@ -48,11 +38,12 @@ diff -up matplotlib-1.0.1/setupext.py.noagg matplotlib-1.0.1/setupext.py
deps.extend(glob.glob('CXX/*.cxx')) deps.extend(glob.glob('CXX/*.cxx'))
deps.extend(glob.glob('CXX/*.c')) deps.extend(glob.glob('CXX/*.c'))
temp_copy('src/_backend_agg.cpp', 'src/backend_agg.cpp') temp_copy('src/_backend_agg.cpp', 'src/backend_agg.cpp')
@@ -1284,15 +1274,7 @@ def build_path(ext_modules, packages): @@ -1253,16 +1243,7 @@ def build_path(ext_modules, packages):
global BUILT_PATH global BUILT_PATH
if BUILT_PATH: return # only build it if you you haven't already if BUILT_PATH: return # only build it if you you haven't already
- agg = ( - agg = (
- 'agg_vcgen_contour.cpp',
- 'agg_curves.cpp', - 'agg_curves.cpp',
- 'agg_bezier_arc.cpp', - 'agg_bezier_arc.cpp',
- 'agg_trans_affine.cpp', - 'agg_trans_affine.cpp',
@ -65,7 +56,7 @@ diff -up matplotlib-1.0.1/setupext.py.noagg matplotlib-1.0.1/setupext.py
deps.extend(glob.glob('CXX/*.c')) deps.extend(glob.glob('CXX/*.c'))
temp_copy('src/_path.cpp', 'src/path.cpp') temp_copy('src/_path.cpp', 'src/path.cpp')
@@ -1317,14 +1299,8 @@ def build_image(ext_modules, packages): @@ -1287,14 +1268,8 @@ def build_image(ext_modules, packages):
global BUILT_IMAGE global BUILT_IMAGE
if BUILT_IMAGE: return # only build it if you you haven't already if BUILT_IMAGE: return # only build it if you you haven't already

View File

@ -0,0 +1,35 @@
diff -up matplotlib-1.2.0/setupext.py.orig matplotlib-1.2.0/setupext.py
--- matplotlib-1.2.0/setupext.py.orig 2012-11-23 14:50:48.954715965 -0200
+++ matplotlib-1.2.0/setupext.py 2012-11-23 14:55:53.731727636 -0200
@@ -898,12 +898,12 @@ def parse_tcl_config(tcl_lib_dir, tk_lib
tcl_poss = [tcl_lib_dir,
os.path.normpath(os.path.join(tcl_lib_dir, '..')),
- "/usr/lib/tcl"+str(Tkinter.TclVersion),
- "/usr/lib"]
+ "@@libdir@@/tcl"+str(Tkinter.TclVersion),
+ "@@lib@@"]
tk_poss = [tk_lib_dir,
os.path.normpath(os.path.join(tk_lib_dir, '..')),
- "/usr/lib/tk"+str(Tkinter.TkVersion),
- "/usr/lib"]
+ "@@libdir@@/tk"+str(Tkinter.TkVersion),
+ "@@libdir@@"]
for ptcl, ptk in zip(tcl_poss, tk_poss):
tcl_config = os.path.join(ptcl, "tclConfig.sh")
tk_config = os.path.join(ptk, "tkConfig.sh")
@@ -974,10 +974,10 @@ def guess_tcl_config(tcl_lib_dir, tk_lib
return tcl_lib, tcl_inc, 'tcl' + tk_ver, tk_lib, tk_inc, 'tk' + tk_ver
def hardcoded_tcl_config():
- tcl_inc = "/usr/local/include"
- tk_inc = "/usr/local/include"
- tcl_lib = "/usr/local/lib"
- tk_lib = "/usr/local/lib"
+ tcl_inc = "/usr/include"
+ tk_inc = "/usr/include"
+ tcl_lib = "@@libdir@@"
+ tk_lib = "@@libdir@@"
return tcl_lib, tcl_inc, 'tcl', tk_lib, tk_inc, 'tk'
def add_tk_flags(module):

View File

@ -1,196 +1,190 @@
%if ! (0%{?rhel} > 5) %if 0%{?fedora} >= 18
%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} %global with_python3 1
%endif %global basepy3dir %(echo ../`basename %{py3dir}`)
%{?filter_setup:
%filter_provides_in %{python_sitearch}/.*\.so$
%filter_setup
}
# We include capability for building a doc subpackage for
# documentation. However, building the html documentation requires
# python-basemap, and python-basemap requires python-matplotlib to build, so
# we have a circular dependence, and so we need to be able to turn off
# building of the html documents. Note that when building the html docs,
# python-basemap will pull in the existing python-matplotlib from the
# repos. So, it's important to set PYTHONPATH to use the newly built modules
# from this package.
%global withhtmldocs 1
# On RHEL 7 onwards, don't build the wx:
%if 0%{?rhel} >= 7
%global with_wx 0
%else %else
%global with_wx 1 %global with_python3 0
%endif %endif
%global __provides_exclude_from .*/site-packages/.*\\.so$
%global with_html 1
Name: python-matplotlib Name: python-matplotlib
Version: 1.0.1 Version: 1.2.0
Release: 21%{?dist} Release: 3%{?dist}
Summary: Python plotting library Summary: Python 2D plotting library
Group: Development/Libraries Group: Development/Libraries
License: Python License: Python
URL: http://sourceforge.net/projects/matplotlib URL: http://matplotlib.org
#Modified Sources to remove the one undistributable file #Modified Sources to remove the one undistributable file
#See generate-tarball.sh in fedora cvs repository for logic #See generate-tarball.sh in fedora cvs repository for logic
#sha1sum matplotlib-1.0.1-without-gpc.tar.gz #sha1sum matplotlib-1.2.0-without-gpc.tar.gz
#a8ccbf4c4b9b90c773380cac83e792673837d3de matplotlib-1.0.1-without-gpc.tar.gz #92ada4ef4e7374d67e46e30bfb08c3fed068d680 matplotlib-1.2.0-without-gpc.tar.gz
Source0: matplotlib-%{version}-without-gpc.tar.gz Source0: matplotlib-%{version}-without-gpc.tar.gz
%if %{withhtmldocs}
Source1: http://downloads.sourceforge.net/matplotlib/mpl_sampledata-%{version}.tar.gz
%endif
Source2: setup.cfg
# This patch taken from upstream SVN and will not be needed for releases later than 1.0.1
Patch0: matplotlib-1.0.1-plot_directive.patch
Patch1: matplotlib-1.0.1-noagg.patch
Patch2: 0001-Bugfix-propagate-timezone-info-in-plot_date-xaxis_da.patch
# fix build when Tkinter doesn't return an expected value in __version__ (FTBFS)
Patch3: matplotlib-1.0.1-tkinter.patch
# Fix building against libpng 1.5 Patch0: %{name}-noagg.patch
# https://github.com/matplotlib/matplotlib/issues/234 Patch1: %{name}-tk.patch
# Based on:
# https://github.com/matplotlib/matplotlib/commit/45c46672648e3b4a277bf7ff42b3baf56a98bcec
Patch4: use-png-accessor-functions.patch
# Conditionally applied, when disabling wx support:
Patch5: disable-wx-in-setup.cfg.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: python-devel, freetype-devel, libpng-devel, zlib-devel
BuildRequires: pygtk2-devel, gtk2-devel
BuildRequires: pytz, python-dateutil, numpy
BuildRequires: agg-devel BuildRequires: agg-devel
BuildRequires: freetype-devel
BuildRequires: gtk2-devel
BuildRequires: libpng-devel
BuildRequires: numpy
BuildRequires: pycairo-devel
BuildRequires: pyparsing BuildRequires: pyparsing
Requires: numpy, pytz, python-dateutil BuildRequires: python-dateutil
Requires: pycairo >= 1.2.0 BuildRequires: python2-devel
BuildRequires: pytz
BuildRequires: zlib-devel
Requires: dejavu-sans-fonts Requires: dejavu-sans-fonts
Requires: dvipng Requires: dvipng
Requires: numpy
Requires: pycairo
Requires: pyparsing Requires: pyparsing
Requires: python-dateutil
Requires: pytz
%description %description
Matplotlib is a pure python plotting library with the goal of making Matplotlib is a python 2D plotting library which produces publication
publication quality plots using a syntax familiar to Matlab users. The quality figures in a variety of hardcopy formats and interactive
library uses numpy for handling large data sets and supports a variety environments across platforms. matplotlib can be used in python
of output back-ends. scripts, the python and ipython shell, web application servers, and
six graphical user interface toolkits.
Matplotlib tries to make easy things easy and hard things possible.
You can generate plots, histograms, power spectra, bar charts,
errorcharts, scatterplots, etc, with just a few lines of code.
%package tk %package tk
Summary: Tk backend for python-matplotlib Summary: Tk backend for python-matplotlib
Group: Development/Libraries Group: Development/Libraries
Requires: %{name}%{?_isa} = %{version}-%{release} Requires: %{name}%{?_isa} = %{version}-%{release}
BuildRequires: tkinter, tk-devel BuildRequires: tcl-devel
BuildRequires: tkinter
BuildRequires: tk-devel
Requires: tkinter Requires: tkinter
%description tk %description tk
%{summary} %{summary}
%if 0%{with_wx}
%package wx
Summary: wxPython backend for python-matplotlib
Group: Development/Libraries
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: wxPython
BuildRequires: wxPython-devel
%description wx
%{summary}
%endif # if 0%{with_wx}
%package doc %package doc
Summary: Documentation files for python-matplotlib Summary: Documentation files for python-matplotlib
Group: Documentation Group: Documentation
Requires: %{name}%{?_isa} = %{version}-%{release} Requires: %{name}%{?_isa} = %{version}-%{release}
%if %{withhtmldocs} %if %{with_html}
BuildRequires: python-sphinx BuildRequires: python-sphinx
BuildRequires: tex(latex) BuildRequires: tex(latex)
BuildRequires: dvipng BuildRequires: dvipng
BuildRequires: PyQt4
BuildRequires: python-basemap
# Some of the docs don't build as python-xlwt is needed. However the review
# request isn't yet complete for this package. See:
# https://bugzilla.redhat.com/show_bug.cgi?id=613766
# BuildRequires: python-xlwt
%endif %endif
%description doc %description doc
%{summary} %{summary}
%prep %if %{with_python3}
%if %{withhtmldocs} %package -n python3-matplotlib
%setup -q -n matplotlib-%{version} -b1 Summary: Python 2D plotting library
%else Group: Development/Libraries
%setup -q -n matplotlib-%{version} BuildRequires: python3-cairo
BuildRequires: python3-dateutil
BuildRequires: python3-devel
BuildRequires: python3-gobject
BuildRequires: python3-numpy
BuildRequires: python3-pyparsing
BuildRequires: python3-pytz
BuildRequires: python3-six
Requires: python3-numpy
Requires: python3-cairo
Requires: python3-pyparsing
Requires: python3-dateutil
Requires: python3-pytz
%description -n python3-matplotlib
Matplotlib is a python 2D plotting library which produces publication
quality figures in a variety of hardcopy formats and interactive
environments across platforms. matplotlib can be used in python
scripts, the python and ipython shell, web application servers, and
six graphical user interface toolkits.
Matplotlib tries to make easy things easy and hard things possible.
You can generate plots, histograms, power spectra, bar charts,
errorcharts, scatterplots, etc, with just a few lines of code.
%package -n python3-matplotlib-tk
Summary: Tk backend for python3-matplotlib
Group: Development/Libraries
Requires: python3-matplotlib%{?_isa} = %{version}-%{release}
BuildRequires: python3-tkinter
Requires: python3-tkinter
%description -n python3-matplotlib-tk
%{summary}
%endif %endif
%patch0 -p1
%patch2 -p1 %prep
%patch3 -p1 -b .tkinter %setup -q -n matplotlib-%{version}
%patch4 -p1
# Remove bundled libraries # Remove bundled libraries
rm -r agg24 lib/matplotlib//pyparsing.py rm -r agg24 lib/matplotlib/pyparsing_py?.py
# Remove references to bundled libraries # Remove references to bundled libraries
%patch1 -p1 -b .noagg %patch0 -p1 -b .noagg
sed -i -e s/matplotlib\.pyparsing/pyparsing/g lib/matplotlib/*.py sed -i -e s/matplotlib\.pyparsing_py./pyparsing/g lib/matplotlib/*.py
# Correct tcl/tk detection
%patch1 -p1 -b .tk
sed -i -e 's|@@@libdir@@@|%{_libdir}|' setupext.py
chmod -x lib/matplotlib/mpl-data/images/*.svg chmod -x lib/matplotlib/mpl-data/images/*.svg
cp %{SOURCE2} ./setup.cfg %if %{?with_python3}
%if !0%{with_wx} rm -rf %{py3dir}
# Patch the new copy of setup.cfg to remove wx support: cp -a . %{py3dir}
%patch5 -p1
%endif
%if %{withhtmldocs}
pushd doc
echo "examples.download : False" >> matplotlibrc
echo "examples.directory : %{_builddir}/mpl_sampledata-%{version}" >> matplotlibrc
popd
%endif %endif
%build %build
%{__python} setup.py build %{__python2} setup.py build
%if %{with_html}
%if %{withhtmldocs} # Need to make built matplotlib libs available for the sphinx extensions:
pushd doc pushd doc
# Set PYTHONPATH in order to use the just built modules export PYTHONPATH=`realpath ../build/lib.linux*`
export PYTHONPATH=`find %{_builddir} -name lib.linux*` %{__python2} make.py html
# This really does need to be ran twice popd
%{__python} make.py --small html && %{__python} make.py --small html %endif
rm -f build/html/.buildinfo # Ensure all example files are non-executable so that the -doc
chmod -x build/html/pyplots/make.py # package doesn't drag in dependencies
sed -i 's/\r//' build/html/_sources/devel/add_new_projection.txt find examples -name '*.py' -exec chmod a-x '{}' \;
sed -i 's/\r//' build/html/examples/api/font_family_rc.py
%if %{with_python3}
pushd %{py3dir}
%{__python3} setup.py build
# documentation cannot be built with python3 due to syntax errors
# and building with python 2 exits with cryptic error messages
popd popd
%endif %endif
# Ensure all example files are non-executable so that the -doc package doesn't
# drag in dependencies
find examples -name '*.py' -exec chmod a-x '{}' \;
# Fix line ending in this example file
sed -i 's/\r//' examples/api/font_family_rc.py
%install %install
rm -rf $RPM_BUILD_ROOT
%{__python} setup.py install -O1 --skip-build --root=$RPM_BUILD_ROOT %{__python} setup.py install -O1 --skip-build --root=$RPM_BUILD_ROOT
chmod +x $RPM_BUILD_ROOT%{python_sitearch}/matplotlib/dates.py chmod +x $RPM_BUILD_ROOT%{python_sitearch}/matplotlib/dates.py
rm -rf $RPM_BUILD_ROOT%{python_sitearch}/matplotlib/mpl-data/fonts rm -rf $RPM_BUILD_ROOT%{python_sitearch}/matplotlib/mpl-data/fonts
%clean %if %{with_python3}
rm -rf $RPM_BUILD_ROOT pushd %{py3dir}
%{__python3} setup.py install -O1 --skip-build --root=$RPM_BUILD_ROOT
chmod +x $RPM_BUILD_ROOT%{python3_sitearch}/matplotlib/dates.py
rm -rf $RPM_BUILD_ROOT%{python3_sitearch}/matplotlib/mpl-data/fonts
rm -f $RPM_BUILD_ROOT%{python3_sitearch}/six.py
popd
%endif
%files %files
%defattr(-,root,root,-) %doc README.txt
%doc README.txt license/LICENSE license/LICENSE_enthought.txt %doc lib/dateutil_py2/LICENSE
%doc license/LICENSE_PAINT license/LICENSE_PIL %doc lib/matplotlib/mpl-data/fonts/ttf/LICENSE_STIX
%doc CHANGELOG CXX INSTALL INTERACTIVE KNOWN_BUGS %doc lib/pytz/LICENSE.txt
%doc PKG-INFO TODO %doc CHANGELOG
%if 0%{?fedora} >= 9 || 0%{?rhel} >= 6 %doc CXX
%doc INSTALL
%doc PKG-INFO
%doc TODO
%{python_sitearch}/*egg-info %{python_sitearch}/*egg-info
%endif
%{python_sitearch}/matplotlib/ %{python_sitearch}/matplotlib/
%{python_sitearch}/mpl_toolkits/ %{python_sitearch}/mpl_toolkits/
%{python_sitearch}/pylab.py* %{python_sitearch}/pylab.py*
@ -201,30 +195,86 @@ rm -rf $RPM_BUILD_ROOT
%exclude %{python_sitearch}/matplotlib/backends/backend_wxagg.* %exclude %{python_sitearch}/matplotlib/backends/backend_wxagg.*
%files tk %files tk
%defattr(-,root,root,-)
%{python_sitearch}/matplotlib/backends/backend_tkagg.py* %{python_sitearch}/matplotlib/backends/backend_tkagg.py*
%{python_sitearch}/matplotlib/backends/tkagg.py* %{python_sitearch}/matplotlib/backends/tkagg.py*
%{python_sitearch}/matplotlib/backends/_tkagg.so %{python_sitearch}/matplotlib/backends/_tkagg.so
%if 0%{with_wx}
%files wx
%defattr(-,root,root,-)
%{python_sitearch}/matplotlib/backends/backend_wx.py*
%{python_sitearch}/matplotlib/backends/backend_wxagg.py*
%endif # if 0%{with_wx}
%files doc %files doc
%defattr(-,root,root,-)
%doc examples %doc examples
%if %{withhtmldocs} %if %{with_html}
%doc doc/build/html %doc doc/build/html/*
%endif
%if %{with_python3}
%files -n python3-matplotlib
%doc %{basepy3dir}/README.txt
%doc %{basepy3dir}/lib/dateutil_py3/LICENSE
%doc %{basepy3dir}/lib/matplotlib/mpl-data/fonts/ttf/LICENSE_STIX
%doc %{basepy3dir}/lib/pytz/LICENSE.txt
%doc %{basepy3dir}/CHANGELOG
%doc %{basepy3dir}/CXX
%doc %{basepy3dir}/INSTALL
%doc %{basepy3dir}/PKG-INFO
%doc %{basepy3dir}/TODO
%{python3_sitearch}/*egg-info
%{python3_sitearch}/matplotlib/
%{python3_sitearch}/mpl_toolkits/
%{python3_sitearch}/pylab.py*
%{python3_sitearch}/__pycache__/*
%exclude %{python3_sitearch}/matplotlib/backends/backend_tkagg.*
%exclude %{python3_sitearch}/matplotlib/backends/tkagg.*
%exclude %{python3_sitearch}/matplotlib/backends/_tkagg.*
%files -n python3-matplotlib-tk
%{python3_sitearch}/matplotlib/backends/backend_tkagg.py*
%{python3_sitearch}/matplotlib/backends/tkagg.*
%{python3_sitearch}/matplotlib/backends/_tkagg.*
%endif %endif
%changelog %changelog
* Tue Nov 27 2012 pcpa <paulo.cesar.pereira.de.andrade@gmail.com> - 1.2.0-3
- Enable python 3 in fc18 as build requires are now available (#879731)
* Thu Nov 22 2012 pcpa <paulo.cesar.pereira.de.andrade@gmail.com> - 1.2.0-2
- Build python3 only on f19 or newer (#837156)
- Build requires python3-six if building python3 support (#837156)
* Thu Nov 22 2012 pcpa <paulo.cesar.pereira.de.andrade@gmail.com> - 1.2.0-1
- Update to version 1.2.0
- Revert to regenerate tarball with generate-tarball.sh (#837156)
- Assume update to 1.2.0 is for recent releases
- Remove %%defattr
- Remove %%clean
- Use simpler approach to build html documentation
- Do not use custom/outdated setup.cfg
- Put one BuildRequires per line
- Enable python3 support
- Cleanup spec as wx backend is no longer supported
- Use default agg backend
- Fix bogus dates in changelog by assuming only week day was wrong
* Fri Aug 17 2012 Jerry James <loganjerry@gmail.com> - 1.1.1-1
- Update to version 1.1.1.
- Remove obsolete spec file elements
- Fix sourceforge URLs
- Allow sample data to have a different version number than the sources
- Don't bother removing problematic file since we remove entire agg24 directory
- Fix building with pygtk in the absence of an X server
- Don't install license text for bundled software that we don't bundle
* Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.1-21 * Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.1-21
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Tue Jul 3 2012 pcpa <paulo.cesar.pereira.de.andrade@gmail.com> - 1.1.0-1
- Update to version 1.1.0.
- Do not regenerate upstream tarball but remove problematic file in %%prep.
- Remove non longer applicable/required patch0.
- Rediff/rename -noagg patch.
- Remove propagate-timezone-info-in-plot_date-xaxis_da patch already applied.
- Remove tkinter patch now with critical code in a try block.
- Remove png 1.5 patch as upstream is now png 1.5 aware.
- Update file list.
* Wed Apr 18 2012 David Malcolm <dmalcolm@redhat.com> - 1.0.1-20 * Wed Apr 18 2012 David Malcolm <dmalcolm@redhat.com> - 1.0.1-20
- remove wx support for rhel >= 7 - remove wx support for rhel >= 7
@ -345,7 +395,7 @@ rm -rf $RPM_BUILD_ROOT
* Wed Aug 6 2008 Jef Spaleta <jspaleta AT fedoraproject DOT org> - 0.98.3-1 * Wed Aug 6 2008 Jef Spaleta <jspaleta AT fedoraproject DOT org> - 0.98.3-1
- Latest upstream release - Latest upstream release
* Fri Jul 1 2008 Jef Spaleta <jspaleta AT fedoraproject DOT org> - 0.98.1-1 * Tue Jul 1 2008 Jef Spaleta <jspaleta AT fedoraproject DOT org> - 0.98.1-1
- Latest upstream release - Latest upstream release
* Fri Mar 21 2008 Jef Spaleta <jspaleta[AT]fedoraproject org> - 0.91.2-2 * Fri Mar 21 2008 Jef Spaleta <jspaleta[AT]fedoraproject org> - 0.91.2-2
@ -384,7 +434,7 @@ rm -rf $RPM_BUILD_ROOT
* Fri Feb 09 2007 Orion Poplawski <orion@cora.nwra.com> 0.90.0-1 * Fri Feb 09 2007 Orion Poplawski <orion@cora.nwra.com> 0.90.0-1
- Update to 0.90.0 - Update to 0.90.0
* Tue Jan 5 2007 Orion Poplawski <orion@cora.nwra.com> 0.87.7-4 * Fri Jan 5 2007 Orion Poplawski <orion@cora.nwra.com> 0.87.7-4
- Add examples to %%docs - Add examples to %%docs
* Mon Dec 11 2006 Jef Spaleta <jspaleta@gmail.com> 0.87.7-3 * Mon Dec 11 2006 Jef Spaleta <jspaleta@gmail.com> 0.87.7-3

View File

@ -1,81 +0,0 @@
# Rename this file to setup.cfg to modify matplotlib's
# build options.
[egg_info]
tag_svn_revision = 1
[status]
# To suppress display of the dependencies and their versions
# at the top of the build log, uncomment the following line:
#suppress = True
#
# Uncomment to insert lots of diagnostic prints in extension code
#verbose = True
[provide_packages]
# By default, matplotlib checks for a few dependencies and
# installs them if missing. This feature can be turned off
# by uncommenting the following lines. Acceptible values are:
# True: install, overwrite an existing installation
# False: do not install
# auto: install only if the package is unavailable. This
# is the default behavior
#
## Date/timezone support:
#pytz = False
#dateutil = False
#
## Experimental config package support:
enthought.traits = False
configobj = False
[gui_support]
# Matplotlib supports multiple GUI toolkits, including Cocoa,
# GTK, Fltk, Qt, Qt4, Tk, and WX. Support for many of these
# toolkits requires AGG, the Anti-Grain Geometry library, which
# is provided by matplotlib and built by default.
#
# Some backends are written in pure Python, and others require
# extension code to be compiled. By default, matplotlib checks
# for these GUI toolkits during installation and, if present,
# compiles the required extensions to support the toolkit. GTK
# support requires the GTK runtime environment and PyGTK. Wx
# support requires wxWidgets and wxPython. Tk support requires
# Tk and Tkinter. The other GUI toolkits do not require any
# extension code, and can be used as long as the libraries are
# installed on your system.
#
# You can uncomment any the following lines if you know you do
# not want to use the GUI toolkit. Acceptible values are:
# True: build the extension. Exits with a warning if the
# required dependencies are not available
# False: do not build the extension
# auto: build if the required dependencies are available,
# otherwise skip silently. This is the default
# behavior
#
gtk = True
gtkagg = True
tkagg = True
wxagg = True
[rc_options]
# User-configurable options
#
# Default backend, one of: Agg, Cairo, CocoaAgg, GTK, GTKAgg,
# GTKCairo, FltkAgg, Pdf, Ps, QtAgg, Qt4Agg, SVG, TkAgg, WX, WXAgg.
#
# The Agg, Ps, Pdf and SVG backends do not require external
# dependencies. Do not choose GTK, GTKAgg, GTKCairo, TkAgg or WXAgg if
# you have disabled the relevent extension modules. Agg will be used
# by default.
#
backend = GTKAgg
#
# The numerix module was historically used to provide
# compatibility between the Numeric, numarray, and NumPy array
# packages. Now that NumPy has emerge as the universal array
# package for python, numerix is not really necessary and is
# maintained to provide backward compatibility. Do not change
# this unless you have a compelling reason to do so.
numerix = numpy

View File

@ -1,79 +0,0 @@
diff -up matplotlib-1.0.1/CHANGELOG.png15 matplotlib-1.0.1/CHANGELOG
diff -up matplotlib-1.0.1/doc/users/installing.rst.png15 matplotlib-1.0.1/doc/users/installing.rst
--- matplotlib-1.0.1/doc/users/installing.rst.png15 2010-07-06 21:41:46.000000000 -0400
+++ matplotlib-1.0.1/doc/users/installing.rst 2011-12-06 16:29:05.824621532 -0500
@@ -138,7 +138,7 @@ libraries themselves.
array support for python (`download
<http://sourceforge.net/project/showfiles.php?group_id=1369&package_id=175103>`__)
-libpng 1.1 (or later)
+libpng 1.2 (or later)
library for loading and saving :term:`PNG` files (`download
<http://www.libpng.org/pub/png/libpng.html>`__). libpng requires
zlib. If you are a windows user, you can ignore this since we
diff -up matplotlib-1.0.1/src/_png.cpp.png15 matplotlib-1.0.1/src/_png.cpp
--- matplotlib-1.0.1/src/_png.cpp.png15 2010-10-12 12:14:42.000000000 -0400
+++ matplotlib-1.0.1/src/_png.cpp 2011-12-06 16:29:05.825621532 -0500
@@ -350,10 +350,10 @@ _png_module::read_png(const Py::Tuple& a
png_set_sig_bytes(png_ptr, 8);
png_read_info(png_ptr, info_ptr);
- png_uint_32 width = info_ptr->width;
- png_uint_32 height = info_ptr->height;
+ png_uint_32 width = png_get_image_width(png_ptr, info_ptr);
+ png_uint_32 height = png_get_image_height(png_ptr, info_ptr);
- int bit_depth = info_ptr->bit_depth;
+ int bit_depth = png_get_bit_depth(png_ptr, info_ptr);
// Unpack 1, 2, and 4-bit images
if (bit_depth < 8)
@@ -361,7 +361,7 @@ _png_module::read_png(const Py::Tuple& a
// If sig bits are set, shift data
png_color_8p sig_bit;
- if ((info_ptr->color_type != PNG_COLOR_TYPE_PALETTE) &&
+ if ((png_get_color_type(png_ptr, info_ptr) != PNG_COLOR_TYPE_PALETTE) &&
png_get_sBIT(png_ptr, info_ptr, &sig_bit))
{
png_set_shift(png_ptr, sig_bit);
@@ -374,13 +374,13 @@ _png_module::read_png(const Py::Tuple& a
}
// Convert palletes to full RGB
- if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
+ if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_PALETTE)
{
png_set_palette_to_rgb(png_ptr);
}
// If there's an alpha channel convert gray to RGB
- if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
+ if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_GRAY_ALPHA)
{
png_set_gray_to_rgb(png_ptr);
}
@@ -408,11 +408,11 @@ _png_module::read_png(const Py::Tuple& a
npy_intp dimensions[3];
dimensions[0] = height; //numrows
dimensions[1] = width; //numcols
- if (info_ptr->color_type & PNG_COLOR_MASK_ALPHA)
+ if (png_get_color_type(png_ptr, info_ptr) & PNG_COLOR_MASK_ALPHA)
{
dimensions[2] = 4; //RGBA images
}
- else if (info_ptr->color_type & PNG_COLOR_MASK_COLOR)
+ else if (png_get_color_type(png_ptr, info_ptr) & PNG_COLOR_MASK_COLOR)
{
dimensions[2] = 3; //RGB images
}
@@ -421,7 +421,8 @@ _png_module::read_png(const Py::Tuple& a
dimensions[2] = 1; //Greyscale images
}
//For gray, return an x by y array, not an x by y by 1
- int num_dims = (info_ptr->color_type & PNG_COLOR_MASK_COLOR) ? 3 : 2;
+ int num_dims = (png_get_color_type(png_ptr, info_ptr)
+ & PNG_COLOR_MASK_COLOR) ? 3 : 2;
double max_value = (1 << ((bit_depth < 8) ? 8 : bit_depth)) - 1;
PyArrayObject *A = (PyArrayObject *) PyArray_SimpleNew(