# ChangeLog for dev-python/httpretty
# Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/dev-python/httpretty/ChangeLog,v 1.12 2015/07/30 00:27:54 prometheanfire Exp $

*httpretty-0.8.10 (30 Jul 2015)

  30 Jul 2015; Matthew Thode <prometheanfire@gentoo.org>
  +httpretty-0.8.10.ebuild:
  adding for python-ironicclient

  07 Jun 2015; Justin Lecher <jlec@gentoo.org> metadata.xml:
  Add github to remote-id in metadata.xml

  03 Jun 2015; Justin Lecher <jlec@gentoo.org> metadata.xml:
  Add pypi to remote-id in metadata.xml

*httpretty-0.8.0-r1 (17 Mar 2015)

  17 Mar 2015; Ian Delaney <idella4@gentoo.org> +httpretty-0.8.0-r1.ebuild:
  revbump; correction to new dep ipdb, remove removal of tests folder and whole
  python_prepare_all phase, set DISTUTILS_IN_SOURCE_BUILD to manage rogue
  testsuite, cite new bug filed upstream, re-write test phase to match, all wrt
  Bug 532106

  09 Mar 2015; Pacho Ramos <pacho@gentoo.org> httpretty-0.8.0.ebuild:
  x86 stable, bug 540290

  06 Mar 2015; Pacho Ramos <pacho@gentoo.org> httpretty-0.8.0.ebuild:
  amd64 stable, bug 540290

  10 Dec 2014; Patrick Lauer <patrick@gentoo.org> httpretty-0.8.0.ebuild:
  Add py3.4 support

  25 Feb 2014; Tomáš Chvátal <scarabeus@gentoo.org> httpretty-0.8.0.ebuild:
  Works with py3.3 so enable it.

*httpretty-0.8.0 (17 Feb 2014)

  17 Feb 2014; Matthew Thode <prometheanfire@gentoo.org>
  +httpretty-0.8.0.ebuild:
  updating for a dep of a dep of a dep for a cve...

*httpretty-0.7.1 (06 Jan 2014)

  06 Jan 2014; Ian Delaney <idella4@gentoo.org> +httpretty-0.7.1.ebuild,
  httpretty-0.7.0.ebuild:
  correction to -0.7.0 deps, update to test phase, bump

  03 Dec 2013; Ian Delaney <idella4@gentoo.org> httpretty-0.7.0.ebuild:
  minor & ineffectual update to test phase sourced from upstream
  /HTTPretty/issues/125

*httpretty-0.7.0 (02 Dec 2013)

  02 Dec 2013; Ian Delaney <idella4@gentoo.org>
  +files/httpretty-0.7.0-deps.patch, +httpretty-0.7.0.ebuild, +metadata.xml:
  new dep of openstack client package python-keystoneclient, ebuild prepared by
  me
