From aad69996a2edcde70a902a72e634af96bb7d90d6 Mon Sep 17 00:00:00 2001 From: Thomas Spura Date: Jul 31 2011 17:00:32 +0000 Subject: - update to 0.11 - patches included upstream - ipython changed bundled pretty, so redistributes it in lib now - run testsuite - new upstream url --- diff --git a/.gitignore b/.gitignore index b32a689..76015e6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ ipython-0.10.tar.gz /ipython-0.10.1.tar.gz /ipython-0.10.2.tar.gz +/ipython-0.11.tar.gz diff --git a/ipython-0.10-pycolor-wrong-filename.patch b/ipython-0.10-pycolor-wrong-filename.patch deleted file mode 100644 index c91de65..0000000 --- a/ipython-0.10-pycolor-wrong-filename.patch +++ /dev/null @@ -1,32 +0,0 @@ -Modified patch from upstream (PyColorize.py was moved): -commit e5effe0eb43d57e3a34a9dd07a0c03e3a178b2f2 -Author: Thomas Spura -Date: Tue Nov 2 10:19:58 2010 +0100 - - pycolor: Wrong filename given -> print error - - When a user wanted to colorize a file, which doesn't exist, IPython - would crash. This commit changes this, so the user gets a usefull - message about the wrong filename. - - This fixes RH bug #628742. - - Signed-off-by: Thomas Spura - -diff --git a/IPython/utils/PyColorize.py b/IPython/utils/PyColorize.py -index 613ae19..ddf3f7a 100644 ---- a/IPython/PyColorize.py -+++ b/IPython/PyColorize.py -@@ -277,7 +277,11 @@ If no filename is given, or if filename is -, read standard input.""" - if fname == '-': - stream = sys.stdin - else: -- stream = file(fname) -+ try: -+ stream = file(fname) -+ except IOError,msg: -+ print >> sys.stderr, msg -+ sys.exit(1) - - parser = Parser() - diff --git a/ipython-itpl-external.patch b/ipython-itpl-external.patch deleted file mode 100644 index f6d1adc..0000000 --- a/ipython-itpl-external.patch +++ /dev/null @@ -1,399 +0,0 @@ -Index: ipython-0.10/IPython/CrashHandler.py -=================================================================== ---- ipython-0.10.orig/IPython/CrashHandler.py -+++ ipython-0.10/IPython/CrashHandler.py -@@ -27,7 +27,7 @@ from pprint import pprint,pformat - from IPython import Release - from IPython import ultraTB - from IPython.ColorANSI import ColorScheme,ColorSchemeTable # too long names --from IPython.Itpl import Itpl,itpl,printpl -+from IPython.external.Itpl import Itpl, itpl, printpl - - from IPython.genutils import * - -Index: ipython-0.10/IPython/Extensions/ipy_editors.py -=================================================================== ---- ipython-0.10.orig/IPython/Extensions/ipy_editors.py -+++ ipython-0.10/IPython/Extensions/ipy_editors.py -@@ -8,7 +8,7 @@ Contributions are *very* welcome. - import IPython.ipapi - ip = IPython.ipapi.get() - --from IPython.Itpl import itplns -+from IPython.external.Itpl import itplns - import os - - def install_editor(run_template, wait = False): -Index: ipython-0.10/IPython/Extensions/ipy_profile_sh.py -=================================================================== ---- ipython-0.10.orig/IPython/Extensions/ipy_profile_sh.py -+++ ipython-0.10/IPython/Extensions/ipy_profile_sh.py -@@ -173,7 +173,7 @@ def extend_shell_behavior(ip): - # mark the IPSHELL with this signature - ip.IP.user_ns['__builtins__'].__dict__['__sig__'] = ip.IP.__sig__ - -- from IPython.Itpl import ItplNS -+ from IPython.external.Itpl import ItplNS - from IPython.genutils import shell - # utility to expand user variables via Itpl - # xxx do something sensible with depth? -Index: ipython-0.10/IPython/Extensions/ipy_render.py -=================================================================== ---- ipython-0.10.orig/IPython/Extensions/ipy_render.py -+++ ipython-0.10/IPython/Extensions/ipy_render.py -@@ -9,7 +9,7 @@ ip = IPython.ipapi.get() - from string import Template - import sys,os - --from IPython.Itpl import itplns -+from IPython.external.Itpl import itplns - - def toclip_w32(s): - """ Places contents of s to clipboard -Index: ipython-0.10/IPython/genutils.py -=================================================================== ---- ipython-0.10.orig/IPython/genutils.py -+++ ipython-0.10/IPython/genutils.py -@@ -46,7 +46,7 @@ else: - - # Other IPython utilities - import IPython --from IPython.Itpl import Itpl,itpl,printpl -+from IPython.external.Itpl import Itpl, itpl, printpl - from IPython import DPyGetOpt, platutils - from IPython.generics import result_display - import IPython.ipapi -Index: ipython-0.10/IPython/iplib.py -=================================================================== ---- ipython-0.10.orig/IPython/iplib.py -+++ ipython-0.10/IPython/iplib.py -@@ -55,7 +55,7 @@ from IPython import Debugger,OInspect,Py - from IPython.ColorANSI import ColorScheme,ColorSchemeTable # too long names - from IPython.Extensions import pickleshare - from IPython.FakeModule import FakeModule, init_fakemod_dict --from IPython.Itpl import Itpl,itpl,printpl,ItplNS,itplns -+from IPython.external.Itpl import Itpl, itpl, printpl, ItplNS, itplns - from IPython.Logger import Logger - from IPython.Magic import Magic - from IPython.Prompts import CachedOutput -Index: ipython-0.10/IPython/Magic.py -=================================================================== ---- ipython-0.10.orig/IPython/Magic.py -+++ ipython-0.10/IPython/Magic.py -@@ -45,7 +45,7 @@ except ImportError: - import IPython - from IPython import Debugger, OInspect, wildcard - from IPython.FakeModule import FakeModule --from IPython.Itpl import Itpl, itpl, printpl,itplns -+from IPython.external.Itpl import Itpl, itpl, printpl, itplns - from IPython.PyColorize import Parser - from IPython.ipstruct import Struct - from IPython.macro import Macro -Index: ipython-0.10/IPython/OInspect.py -=================================================================== ---- ipython-0.10.orig/IPython/OInspect.py -+++ ipython-0.10/IPython/OInspect.py -@@ -29,7 +29,7 @@ import types - # IPython's own - from IPython import PyColorize - from IPython.genutils import page,indent,Term --from IPython.Itpl import itpl -+from IPython.external.Itpl import itpl - from IPython.wildcard import list_namespace - from IPython.ColorANSI import * - -Index: ipython-0.10/IPython/Itpl.py -=================================================================== ---- ipython-0.10.orig/IPython/Itpl.py -+++ /dev/null -@@ -1,290 +0,0 @@ --# -*- coding: utf-8 -*- --"""String interpolation for Python (by Ka-Ping Yee, 14 Feb 2000). -- --This module lets you quickly and conveniently interpolate values into --strings (in the flavour of Perl or Tcl, but with less extraneous --punctuation). You get a bit more power than in the other languages, --because this module allows subscripting, slicing, function calls, --attribute lookup, or arbitrary expressions. Variables and expressions --are evaluated in the namespace of the caller. -- --The itpl() function returns the result of interpolating a string, and --printpl() prints out an interpolated string. Here are some examples: -- -- from Itpl import printpl -- printpl("Here is a $string.") -- printpl("Here is a $module.member.") -- printpl("Here is an $object.member.") -- printpl("Here is a $functioncall(with, arguments).") -- printpl("Here is an ${arbitrary + expression}.") -- printpl("Here is an $array[3] member.") -- printpl("Here is a $dictionary['member'].") -- --The filter() function filters a file object so that output through it --is interpolated. This lets you produce the illusion that Python knows --how to do interpolation: -- -- import Itpl -- sys.stdout = Itpl.filter() -- f = "fancy" -- print "Is this not $f?" -- print "Standard output has been replaced with a $sys.stdout object." -- sys.stdout = Itpl.unfilter() -- print "Okay, back $to $normal." -- --Under the hood, the Itpl class represents a string that knows how to --interpolate values. An instance of the class parses the string once --upon initialization; the evaluation and substitution can then be done --each time the instance is evaluated with str(instance). For example: -- -- from Itpl import Itpl -- s = Itpl("Here is $foo.") -- foo = 5 -- print str(s) -- foo = "bar" -- print str(s) --""" -- --#***************************************************************************** --# --# Copyright (c) 2001 Ka-Ping Yee --# --# --# Published under the terms of the MIT license, hereby reproduced: --# --# Permission is hereby granted, free of charge, to any person obtaining a copy --# of this software and associated documentation files (the "Software"), to --# deal in the Software without restriction, including without limitation the --# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or --# sell copies of the Software, and to permit persons to whom the Software is --# furnished to do so, subject to the following conditions: --# --# The above copyright notice and this permission notice shall be included in --# all copies or substantial portions of the Software. --# --# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR --# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, --# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE --# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER --# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING --# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS --# IN THE SOFTWARE. --# --#***************************************************************************** -- --__author__ = 'Ka-Ping Yee ' --__license__ = 'MIT' -- --import string --import sys --from tokenize import tokenprog --from types import StringType -- --class ItplError(ValueError): -- def __init__(self, text, pos): -- self.text = text -- self.pos = pos -- def __str__(self): -- return "unfinished expression in %s at char %d" % ( -- repr(self.text), self.pos) -- --def matchorfail(text, pos): -- match = tokenprog.match(text, pos) -- if match is None: -- raise ItplError(text, pos) -- -- return match, match.end() -- --try: -- itpl_encoding = sys.stdin.encoding or 'ascii' --except AttributeError: -- itpl_encoding = 'ascii' -- -- -- --class Itpl: -- """Class representing a string with interpolation abilities. -- -- Upon creation, an instance works out what parts of the format -- string are literal and what parts need to be evaluated. The -- evaluation and substitution happens in the namespace of the -- caller when str(instance) is called.""" -- -- def __init__(self, format,codec=itpl_encoding,encoding_errors='backslashreplace'): -- """The single mandatory argument to this constructor is a format -- string. -- -- The format string is parsed according to the following rules: -- -- 1. A dollar sign and a name, possibly followed by any of: -- - an open-paren, and anything up to the matching paren -- - an open-bracket, and anything up to the matching bracket -- - a period and a name -- any number of times, is evaluated as a Python expression. -- -- 2. A dollar sign immediately followed by an open-brace, and -- anything up to the matching close-brace, is evaluated as -- a Python expression. -- -- 3. Outside of the expressions described in the above two rules, -- two dollar signs in a row give you one literal dollar sign. -- -- Optional arguments: -- -- - codec('utf_8'): a string containing the name of a valid Python -- codec. -- -- - encoding_errors('backslashreplace'): a string with a valid error handling -- policy. See the codecs module documentation for details. -- -- These are used to encode the format string if a call to str() fails on -- the expanded result.""" -- -- if not isinstance(format,basestring): -- raise TypeError, "needs string initializer" -- self.format = format -- self.codec = codec -- self.encoding_errors = encoding_errors -- -- namechars = "abcdefghijklmnopqrstuvwxyz" \ -- "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"; -- chunks = [] -- pos = 0 -- -- while 1: -- dollar = string.find(format, "$", pos) -- if dollar < 0: break -- nextchar = format[dollar+1] -- -- if nextchar == "{": -- chunks.append((0, format[pos:dollar])) -- pos, level = dollar+2, 1 -- while level: -- match, pos = matchorfail(format, pos) -- tstart, tend = match.regs[3] -- token = format[tstart:tend] -- if token == "{": level = level+1 -- elif token == "}": level = level-1 -- chunks.append((1, format[dollar+2:pos-1])) -- -- elif nextchar in namechars: -- chunks.append((0, format[pos:dollar])) -- match, pos = matchorfail(format, dollar+1) -- while pos < len(format): -- if format[pos] == "." and \ -- pos+1 < len(format) and format[pos+1] in namechars: -- match, pos = matchorfail(format, pos+1) -- elif format[pos] in "([": -- pos, level = pos+1, 1 -- while level: -- match, pos = matchorfail(format, pos) -- tstart, tend = match.regs[3] -- token = format[tstart:tend] -- if token[0] in "([": level = level+1 -- elif token[0] in ")]": level = level-1 -- else: break -- chunks.append((1, format[dollar+1:pos])) -- -- else: -- chunks.append((0, format[pos:dollar+1])) -- pos = dollar + 1 + (nextchar == "$") -- -- if pos < len(format): chunks.append((0, format[pos:])) -- self.chunks = chunks -- -- def __repr__(self): -- return "" % repr(self.format) -- -- def _str(self,glob,loc): -- """Evaluate to a string in the given globals/locals. -- -- The final output is built by calling str(), but if this fails, the -- result is encoded with the instance's codec and error handling policy, -- via a call to out.encode(self.codec,self.encoding_errors)""" -- result = [] -- app = result.append -- for live, chunk in self.chunks: -- if live: -- val = eval(chunk,glob,loc) -- try: -- app(str(val)) -- except UnicodeEncodeError: -- app(unicode(val)) -- -- else: app(chunk) -- out = ''.join(result) -- try: -- return str(out) -- except UnicodeError: -- return out.encode(self.codec,self.encoding_errors) -- -- def __str__(self): -- """Evaluate and substitute the appropriate parts of the string.""" -- -- # We need to skip enough frames to get to the actual caller outside of -- # Itpl. -- frame = sys._getframe(1) -- while frame.f_globals["__name__"] == __name__: frame = frame.f_back -- loc, glob = frame.f_locals, frame.f_globals -- -- return self._str(glob,loc) -- --class ItplNS(Itpl): -- """Class representing a string with interpolation abilities. -- -- This inherits from Itpl, but at creation time a namespace is provided -- where the evaluation will occur. The interpolation becomes a bit more -- efficient, as no traceback needs to be extracte. It also allows the -- caller to supply a different namespace for the interpolation to occur than -- its own.""" -- -- def __init__(self, format,globals,locals=None, -- codec='utf_8',encoding_errors='backslashreplace'): -- """ItplNS(format,globals[,locals]) -> interpolating string instance. -- -- This constructor, besides a format string, takes a globals dictionary -- and optionally a locals (which defaults to globals if not provided). -- -- For further details, see the Itpl constructor.""" -- -- if locals is None: -- locals = globals -- self.globals = globals -- self.locals = locals -- Itpl.__init__(self,format,codec,encoding_errors) -- -- def __str__(self): -- """Evaluate and substitute the appropriate parts of the string.""" -- return self._str(self.globals,self.locals) -- -- def __repr__(self): -- return "" % repr(self.format) -- --# utilities for fast printing --def itpl(text): return str(Itpl(text)) --def printpl(text): print itpl(text) --# versions with namespace --def itplns(text,globals,locals=None): return str(ItplNS(text,globals,locals)) --def printplns(text,globals,locals=None): print itplns(text,globals,locals) -- --class ItplFile: -- """A file object that filters each write() through an interpolator.""" -- def __init__(self, file): self.file = file -- def __repr__(self): return "" -- def __getattr__(self, attr): return getattr(self.file, attr) -- def write(self, text): self.file.write(str(Itpl(text))) -- --def filter(file=sys.stdout): -- """Return an ItplFile that filters writes to the given file object. -- -- 'file = filter(file)' replaces 'file' with a filtered object that -- has a write() method. When called with no argument, this creates -- a filter to sys.stdout.""" -- return ItplFile(file) -- --def unfilter(ifile=None): -- """Return the original file that corresponds to the given ItplFile. -- -- 'file = unfilter(file)' undoes the effect of 'file = filter(file)'. -- 'sys.stdout = unfilter()' undoes the effect of 'sys.stdout = filter()'.""" -- return ifile and ifile.file or sys.stdout.file diff --git a/ipython-unbundle-external-module.patch b/ipython-unbundle-external-module.patch deleted file mode 100644 index 6fc8011..0000000 --- a/ipython-unbundle-external-module.patch +++ /dev/null @@ -1,112 +0,0 @@ -Index: ipython-0.10/IPython/external/argparse/__init__.py -=================================================================== ---- /dev/null -+++ ipython-0.10/IPython/external/argparse/__init__.py -@@ -0,0 +1,11 @@ -+try: -+ import argparse -+ # Workaround an argparse bug -+ if 'RawTextHelpFormatterArgumentDefaultsHelpFormatter' in argparse.__all__: -+ import itertools -+ argparse.__all__ = list(itertools.chain( [i for i in argparse.__all__ -+ if i != 'RawTextHelpFormatterArgumentDefaultsHelpFormatter'], -+ ['RawTextHelpFormatter', 'ArgumentDefaultsHelpFormatter'])) -+ from argparse import * -+except ImportError: -+ from _argparse import * -Index: ipython-0.10/IPython/external/configobj/__init__.py -=================================================================== ---- /dev/null -+++ ipython-0.10/IPython/external/configobj/__init__.py -@@ -0,0 +1,4 @@ -+try: -+ from configobj import * -+except ImportError: -+ from _configobj import * -Index: ipython-0.10/IPython/external/guid/__init__.py -=================================================================== ---- /dev/null -+++ ipython-0.10/IPython/external/guid/__init__.py -@@ -0,0 +1,4 @@ -+try: -+ from guid import * -+except ImportError: -+ from _guid import * -Index: ipython-0.10/IPython/external/Itpl/__init__.py -=================================================================== ---- /dev/null -+++ ipython-0.10/IPython/external/Itpl/__init__.py -@@ -0,0 +1,4 @@ -+try: -+ from Itpl import * -+except ImportError: -+ from _Itpl import * -Index: ipython-0.10/IPython/external/mglob/__init__.py -=================================================================== ---- /dev/null -+++ ipython-0.10/IPython/external/mglob/__init__.py -@@ -0,0 +1,4 @@ -+try: -+ from mglob import * -+except ImportError: -+ from _mglob import * -Index: ipython-0.10/IPython/external/path/__init__.py -=================================================================== ---- /dev/null -+++ ipython-0.10/IPython/external/path/__init__.py -@@ -0,0 +1,4 @@ -+try: -+ from path import * -+except ImportError: -+ from _path import * -Index: ipython-0.10/IPython/external/pretty/__init__.py -=================================================================== ---- /dev/null -+++ ipython-0.10/IPython/external/pretty/__init__.py -@@ -0,0 +1,4 @@ -+try: -+ from pretty import * -+except ImportError: -+ from _pretty import * -Index: ipython-0.10/IPython/external/simplegeneric/__init__.py -=================================================================== ---- /dev/null -+++ ipython-0.10/IPython/external/simplegeneric/__init__.py -@@ -0,0 +1,4 @@ -+try: -+ from simplegeneric import * -+except ImportError: -+ from _simplegeneric import * -Index: ipython-0.10/IPython/external/validate/__init__.py -=================================================================== ---- /dev/null -+++ ipython-0.10/IPython/external/validate/__init__.py -@@ -0,0 +1,8 @@ -+try: -+ import validate -+ if '__docformat__' in validate.__all__ and validate.__version__.split('.') >= ['1', '0', '1']: -+ # __docformat__ was removed in 1.0.1 but -+ validate.__all__ = [i for i in validate.__all__ if i != '__docformat__'] -+ from validate import * -+except ImportError: -+ from _validate import * -Index: ipython-0.10/setupbase.py -=================================================================== ---- ipython-0.10.orig/setupbase.py -+++ ipython-0.10/setupbase.py -@@ -106,6 +106,15 @@ def find_packages(): - add_package(packages, 'config', tests=True) - add_package(packages , 'Extensions') - add_package(packages, 'external') -+ add_package(packages, 'external.argparse') -+ add_package(packages, 'external.configobj') -+ add_package(packages, 'external.guid') -+ add_package(packages, 'external.Itpl') -+ add_package(packages, 'external.mglob') -+ add_package(packages, 'external.path') -+ add_package(packages, 'external.pretty') -+ add_package(packages, 'external.simplegeneric') -+ add_package(packages, 'external.validate') - add_package(packages, 'gui') - add_package(packages, 'gui.wx') - add_package(packages, 'frontend', tests=True) diff --git a/ipython.spec b/ipython.spec index b0d571f..4914982 100644 --- a/ipython.spec +++ b/ipython.spec @@ -2,8 +2,10 @@ %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} %endif +%global run_testsuite 1 + Name: ipython -Version: 0.10.2 +Version: 0.11 Release: 1%{?dist} Summary: An enhanced interactive Python shell @@ -12,30 +14,32 @@ Group: Development/Libraries # most files are under BSD and just a few under Python or MIT # There are some extensions released under GPLv2+ License: (BSD and MIT and Python) and GPLv2+ -URL: http://ipython.scipy.org/ -Source0: http://ipython.scipy.org/dist/%{name}-%{version}.tar.gz -# move itpl.py to external - already done in upstream git -Patch0: %{name}-itpl-external.patch -# unbundle all current libraries, a similar patch submitted upstream -Patch1: %{name}-unbundle-external-module.patch -# fix for #628742, will be in 0.11 -Patch2: ipython-0.10-pycolor-wrong-filename.patch +URL: http://ipython.org/ +Source0: http://archive.ipython.org/release/%{version}/%{name}-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildArch: noarch BuildRequires: python-devel BuildRequires: python-simplegeneric -Requires: python-foolscap -Requires: python-twisted-core -Requires: python-zope-interface + +%if %{run_testsuite} +# for checking/testing +BuildRequires: python-zmq +BuildRequires: python-zmq-tests +BuildRequires: pexpect +BuildRequires: python-mglob +BuildRequires: python-simplegeneric +BuildRequires: pyparsing +%endif + +Requires: python-zmq #bundled libs Requires: pexpect -Requires: python-configobj Requires: python-mglob -Requires: python-pretty Requires: python-simplegeneric +Requires: pyparsing %if ! (0%{?fedora} > 13) # argparse is in python 2.7 and 3.2 @@ -43,7 +47,6 @@ Requires: python-argparse %endif - %description IPython provides a replacement for the interactive Python interpreter with @@ -69,6 +72,7 @@ Main features: Summary: Tests for %{name} Group: Documentation Requires: python-nose +Requires: python-zmq-tests Requires: %{name} = %{version}-%{release} %description tests This package contains the tests of %{name}. @@ -80,55 +84,30 @@ Group: Documentation %description doc This package contains the documentation of %{name}. + %package gui Summary: Gui applications from %{name} Group: Applications/Editors Requires: %{name} = %{version}-%{release} -Requires: wxPython +Requires: PyQt %description gui -This package contains the gui of %{name}, which requires wxPython. +This package contains the gui of %{name}, which requires PyQt. %prep %setup -q -%patch0 -p1 -# help with unbundling (don't use diffs to move files around) -pushd IPython/external -mkdir argparse -mv argparse.py argparse/_argparse.py -mkdir configobj -mv configobj.py configobj/_configobj.py -mkdir guid -mv guid.py guid/_guid.py -mkdir Itpl -mv Itpl.py Itpl/_Itpl.py -mkdir mglob -mv mglob.py mglob/_mglob.py -mkdir path -mv path.py path/_path.py -mkdir pretty -mv pretty.py pretty/_pretty.py -mkdir simplegeneric -mv simplegeneric.py simplegeneric/_simplegeneric.py -mkdir validate -mv validate.py validate/_validate.py -popd -%patch1 -p1 -%patch2 -p1 - # delete bundling libs pushd IPython/external # python's own modules rm argparse/_argparse.py # other packages exist in fedora -rm configobj/_configobj.py rm mglob/_mglob.py -rm pretty/_pretty.py rm simplegeneric/_simplegeneric.py -rm validate/_validate.py +rm pyparsing/_pyparsing.py +rm pexpect/_pexpect.py # probably from here http://code.activestate.com/recipes/163604-guid/ # python has a own uuid module @@ -140,6 +119,8 @@ rm validate/_validate.py # available at pypi #rm path/_path.py +# ssh modules from paramiko + popd @@ -160,9 +141,10 @@ mv %{buildroot}%{_datadir}/doc/%{name} \ rm -rf %{buildroot} -#check -# testing seems to be broken on upstreams side -#PYTHONPATH=%{buildroot}%{python_sitelib} %{buildroot}%{_bindir}/iptest +%if %{run_testsuite} +%check +PYTHONPATH=%{buildroot}%{python_sitelib} %{buildroot}%{_bindir}/iptest || echo "some tests failed, continue..." +%endif %files @@ -174,43 +156,48 @@ rm -rf %{buildroot} %{_bindir}/ipcluster %{_bindir}/ipcontroller %{_bindir}/ipengine +%{_bindir}/iplogger %{_mandir}/man*/ipython.* %{_mandir}/man*/ipengine* %{_mandir}/man*/irunner* %{_mandir}/man*/pycolor* %{_mandir}/man*/ipc* +%{_mandir}/man*/iplogger* + %dir %{python_sitelib}/IPython -%{python_sitelib}/IPython/UserConfig -%dir %{python_sitelib}/IPython/config -%{python_sitelib}/IPython/config/*.py* -%{python_sitelib}/IPython/Extensions %{python_sitelib}/IPython/external %{python_sitelib}/IPython/*.py* -%dir %{python_sitelib}/IPython/frontend -%{python_sitelib}/IPython/frontend/process -%{python_sitelib}/IPython/frontend/*.py* -%dir %{python_sitelib}/IPython/frontend/cocoa -%{python_sitelib}/IPython/frontend/cocoa/*.py* -%dir %{python_sitelib}/IPython/tools -%{python_sitelib}/IPython/tools/*.py* %dir %{python_sitelib}/IPython/kernel %{python_sitelib}/IPython/kernel/*.py* -%{python_sitelib}/IPython/kernel/config -%{python_sitelib}/IPython/kernel/scripts -%dir %{python_sitelib}/IPython/kernel/core -%{python_sitelib}/IPython/kernel/core/config -%{python_sitelib}/IPython/kernel/core/*.py* %dir %{python_sitelib}/IPython/testing %{python_sitelib}/IPython/testing/*.py* %{python_sitelib}/IPython/testing/plugin %{python_sitelib}/ipython-%{version}-py?.?.egg-info -%exclude %{python_sitelib}/IPython/gui + +%{python_sitelib}/IPython/config/ +%{python_sitelib}/IPython/core/ +%{python_sitelib}/IPython/extensions/ +%dir %{python_sitelib}/IPython/frontend/ +%{python_sitelib}/IPython/frontend/terminal/ +%{python_sitelib}/IPython/frontend/__init__.py* +%{python_sitelib}/IPython/lib/ +%{python_sitelib}/IPython/parallel/ +%{python_sitelib}/IPython/quarantine/ +%{python_sitelib}/IPython/scripts/ +%{python_sitelib}/IPython/utils/ +%{python_sitelib}/IPython/zmq/ +%exclude %{python_sitelib}/IPython/zmq/gui/ + +# tests go into subpackage +%exclude %{python_sitelib}/IPython/*/tests/ +%exclude %{python_sitelib}/IPython/*/*/tests + +%{python_sitelib}/IPython/.git_commit_info.ini %files tests %defattr(-,root,root,-) %{_bindir}/iptest -%{python_sitelib}/IPython/tests %{python_sitelib}/IPython/*/tests %{python_sitelib}/IPython/*/*/tests @@ -220,18 +207,21 @@ rm -rf %{buildroot} # ipython installs its own documentation, but we need to own the directory %{_datadir}/doc/%{name}-%{version} + %files gui %defattr(-,root,root,-) -%{_bindir}/ipython-wx -%{_bindir}/ipythonx -%{_mandir}/man*/ipython-wx* -%{_mandir}/man*/ipythonx* -%{python_sitelib}/IPython/gui -%{python_sitelib}/IPython/frontend/wx - +%{python_sitelib}/IPython/zmq/gui +%{python_sitelib}/IPython/frontend/qt/ %changelog +* Mon Jul 4 2011 Thomas Spura - 0.11-1 +- update to 0.11 +- patches included upstream +- ipython changed bundled pretty, so redistributes it in lib now +- run testsuite +- new upstream url + * Sat Apr 9 2011 Thomas Spura - 0.10.2-1 - update to new version - patch3 is included upstream diff --git a/sources b/sources index 0e3aeef..8d9bc73 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -dda59bfc6e256ce786c4bc4aadb220a4 ipython-0.10.2.tar.gz +efc899e752a4a4a67a99575cea1719ef ipython-0.11.tar.gz