openSUSE Commits
Threads by month
- ----- 2025 -----
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
April 2013
- 1 participants
- 1974 discussions
Hello community,
here is the log from the commit of package seahorse for openSUSE:Factory checked in at 2013-04-26 15:53:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/seahorse (Old)
and /work/SRC/openSUSE:Factory/.seahorse.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "seahorse", Maintainer is "gnome-maintainers(a)suse.de"
Changes:
--------
--- /work/SRC/openSUSE:Factory/seahorse/seahorse.changes 2013-04-05 17:28:56.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.seahorse.new/seahorse.changes 2013-04-26 15:53:26.000000000 +0200
@@ -1,0 +2,6 @@
+Tue Apr 16 08:52:26 UTC 2013 - dimstar(a)opensuse.org
+
+- Update to version 3.8.1:
+ + Updated translations.
+
+-------------------------------------------------------------------
Old:
----
seahorse-3.8.0.tar.xz
New:
----
seahorse-3.8.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ seahorse.spec ++++++
--- /var/tmp/diff_new_pack.qQFSbm/_old 2013-04-26 15:53:28.000000000 +0200
+++ /var/tmp/diff_new_pack.qQFSbm/_new 2013-04-26 15:53:28.000000000 +0200
@@ -17,7 +17,7 @@
Name: seahorse
-Version: 3.8.0
+Version: 3.8.1
Release: 0
Summary: GNOME interface for gnupg
License: GPL-2.0+
++++++ seahorse-3.8.0.tar.xz -> seahorse-3.8.1.tar.xz ++++++
++++ 11637 lines of diff (skipped)
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package rygel for openSUSE:Factory checked in at 2013-04-26 15:53:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rygel (Old)
and /work/SRC/openSUSE:Factory/.rygel.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rygel", Maintainer is ""
Changes:
--------
--- /work/SRC/openSUSE:Factory/rygel/rygel.changes 2013-04-08 14:56:24.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.rygel.new/rygel.changes 2013-04-26 15:53:21.000000000 +0200
@@ -1,0 +2,30 @@
+Tue Apr 16 11:12:45 UTC 2013 - dimstar(a)opensuse.org
+
+- Update to version 0.18.1:
+ + Rygel:
+ - Clarify commandline argument help.
+ + Server:
+ - Fix the check for OCM flags on object creation.
+ - Set proper OCM flags in containers.
+ - Containers don't need to be added to object removal queue.
+ - Make it possible to delete a container via DestroyObject.
+ - Accept invalid seek requests on non-seekable entities.
+ + Renderer:
+ - Improve mime-type comparing to be a bit more forgiving on the
+ format.
+ - Continue rendering even if peer does not support HTTP HEAD.
+ + GStreamer media engine:
+ - Drop some format restrictions GStreamer should be able to
+ figure out itself.
+ + MediaExport:
+ - Prefer object titles given through CreateObject call to those
+ got from meta-data extraction
+ - Fix an issue where SQLite errors were accidentally dropped.
+ - Fix child count for containers that only contain other
+ containers.
+ - Set the correct id when creating a container.
+ + Bugs fixed: bgo#694814, bgo#694155, bgo#683926, bgo#694815,
+ bgo#674736.
+ + Updated translations.
+
+-------------------------------------------------------------------
Old:
----
rygel-0.18.0.tar.xz
New:
----
rygel-0.18.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rygel.spec ++++++
--- /var/tmp/diff_new_pack.Gofoys/_old 2013-04-26 15:53:22.000000000 +0200
+++ /var/tmp/diff_new_pack.Gofoys/_new 2013-04-26 15:53:22.000000000 +0200
@@ -17,7 +17,7 @@
Name: rygel
-Version: 0.18.0
+Version: 0.18.1
Release: 0
Summary: Home Media Solution for GNOME based on UPnP/DLNA
License: LGPL-2.0+
++++++ rygel-0.18.0.tar.xz -> rygel-0.18.1.tar.xz ++++++
++++ 25739 lines of diff (skipped)
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package quadrapassel for openSUSE:Factory checked in at 2013-04-26 15:53:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/quadrapassel (Old)
and /work/SRC/openSUSE:Factory/.quadrapassel.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "quadrapassel", Maintainer is ""
Changes:
--------
--- /work/SRC/openSUSE:Factory/quadrapassel/quadrapassel.changes 2013-03-27 19:32:46.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.quadrapassel.new/quadrapassel.changes 2013-04-26 15:53:16.000000000 +0200
@@ -1,0 +2,7 @@
+Mon Apr 15 17:57:26 UTC 2013 - dimstar(a)opensuse.org
+
+- Update to version 3.8.1:
+ + Fix tags in the Hungarian help.
+ + Updated translations.
+
+-------------------------------------------------------------------
Old:
----
quadrapassel-3.8.0.tar.xz
New:
----
quadrapassel-3.8.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ quadrapassel.spec ++++++
--- /var/tmp/diff_new_pack.V5VM4i/_old 2013-04-26 15:53:17.000000000 +0200
+++ /var/tmp/diff_new_pack.V5VM4i/_new 2013-04-26 15:53:17.000000000 +0200
@@ -17,7 +17,7 @@
Name: quadrapassel
-Version: 3.8.0
+Version: 3.8.1
Release: 0
Summary: Tetris Game for GNOME
License: GPL-2.0+
++++++ quadrapassel-3.8.0.tar.xz -> quadrapassel-3.8.1.tar.xz ++++++
++++ 6802 lines of diff (skipped)
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package python-python-memcached for openSUSE:Factory checked in at 2013-04-26 15:53:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-python-memcached (Old)
and /work/SRC/openSUSE:Factory/.python-python-memcached.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-python-memcached", Maintainer is "radmanic(a)suse.com"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-python-memcached/python-python-memcached.changes 2011-12-01 12:25:44.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python-python-memcached.new/python-python-memcached.changes 2013-04-26 15:53:12.000000000 +0200
@@ -1,0 +2,12 @@
+Fri Apr 26 09:20:00 UTC 2013 - speilicke(a)suse.com
+
+- Add python-memcached-ipv6-and-or.patch: Add IPv6 support and fix
+ hostData port return value
+
+-------------------------------------------------------------------
+Fri Apr 26 09:14:11 UTC 2013 - speilicke(a)suse.com
+
+- Update to version 1.48:
+ + Dropped HTML docu
+
+-------------------------------------------------------------------
Old:
----
python-memcached-1.47.tar.gz
New:
----
python-memcached-1.48.tar.gz
python-memcached-ipv6-and-or.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-python-memcached.spec ++++++
--- /var/tmp/diff_new_pack.C4cXDT/_old 2013-04-26 15:53:13.000000000 +0200
+++ /var/tmp/diff_new_pack.C4cXDT/_new 2013-04-26 15:53:13.000000000 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-python-memcached
#
-# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -11,31 +11,30 @@
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-#
+
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
+
Name: python-python-memcached
-Version: 1.47
+Version: 1.48
Release: 0
Url: http://www.tummy.com/Community/software/python-memcached/
Summary: Pure python memcached client
License: Python-2.0
Group: Development/Languages/Python
Source: http://pypi.python.org/packages/source/p/python-memcached/python-memcached-…
+Patch0: python-memcached-ipv6-and-or.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: python-devel
BuildRequires: python-distribute
-%if 0%{?suse_version}
-%py_requires
-%if 0%{?suse_version} > 1110
+Provides: python-memcached = %{version}
+Obsoletes: python-memcached < %{version}
+%if 0%{?suse_version} && 0%{?suse_version} <= 1110
+%{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
+%else
BuildArch: noarch
%endif
-%endif
-Provides: python-memcached = %{version}
-#TODO: Change back to '<' after next version update:
-Obsoletes: python-memcached <= %{version}
-%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
%description
This package was originally written by Evan Martin of Danga.
@@ -48,6 +47,7 @@
%prep
%setup -q -n python-memcached-%{version}
+%patch0 -p1
%build
python setup.py build
@@ -57,7 +57,7 @@
%files
%defattr(-,root,root,-)
-%doc ChangeLog memcache.html README
+%doc README
%{python_sitelib}/*
%changelog
++++++ python-memcached-1.47.tar.gz -> python-memcached-1.48.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-memcached-1.47/ChangeLog new/python-memcached-1.48/ChangeLog
--- old/python-memcached-1.47/ChangeLog 2010-12-21 03:16:35.000000000 +0100
+++ new/python-memcached-1.48/ChangeLog 1970-01-01 01:00:00.000000000 +0100
@@ -1,327 +0,0 @@
-Mon, 20 Dec 2010 19:14:17 -0700 Sean Reifschneider <jafo(a)tummy.com>
-
- * Bug #680359: useOldServerHashFunction() is broken. It now correctly
- switches back to the old memcache hash function.
-
-Thu, 16 Dec 2010 02:07:40 -0700 Sean Reifschneider <jafo(a)tummy.com>
-
- * Bug #471727: Changed the delete() code to explicitly check for both
- NOT_FOUND and DELETED as the responses and return successful for both.
- It also logs an error if one of these two responses is not found.
- Also added a test to ensure that delete() works.
-
- * When using set_multi and one value is too big, traceback
- TypeError: 'int' object is unsubscriptable
- Patch by Orjan Persson
-
- * Fixing Bug #529855: Server host can now be bare host without ":<port>".
- Fix proposed by Roger Binns.
-
- * Fixing Bug #491164: Typo fix, "compession" -> "compRession".
-
- * Fixing Bug #509712: "TypeError: 'NoneType' object is unsubscriptable"
- Also fixed some other similar code to not have issues with that.
-
- * Also related to 509712 and 628339: readline() now returns '' instead
- of None when a server dies. This should be safer. Patch suggested by
- Denis Otkidach.
-
- * Fixing Bug #628339: Read from server sometimes fails. Patch by Jeremy
- Cowles.
-
- * Fixing Bug #633553: Add stat arguments support to get_stats(). Patch
- by Ryan Lane.
-
- * Changing the license to the PSF License.
-
- * Removing Evan's e-mail address at his request, changing authorship to
- Sean.
-
-Sat, 28 Nov 2009 01:07:42 -0700 Sean Reifschneider <jafo(a)tummy.com>
-
- * Version 1.45
-
- * Per-connection max server key length. Patch by Nicolas Delaby
-
- * Patches to make memcached more garbage-collectable. Removes
- "debugfunc" argument from _Host objects and changed to "debug"
- boolean. Patches by John McFarlane and Aryeh Katz.
-
- * Switching to a cmemcache compatible hash function. Implemented by
- André Cru and Ludvig Ericson. To switch back to the old style, use:
-
- memcached.useOldServerHashFunction()
-
- * Rejecting keys that have spaces in them. Patch by Etienne Posthumus.
-
- * Fixing exception raising syntax. Patch by Samuel Stauffer.
-
- * Optimizations in read code. Patch by Samuel Stauffer.
-
- * Changing classes to be newstyle. Patch by Samuel Stauffer.
-
- * Changed "has_key" to "in". Patch by Samuel Stauffer.
-
- * incr/decr were raising ValueError if the key did not exist, the
- docstring said it returned none. Patch by Chihiro Sakatoku.
-
- * Adding cas method, submitted by Ben Gutierrez.
-
- * Fix in the docstring for how to use the "set" method. Found and fixed
- by William McVey
-
-Thu, 02 Apr 2009 13:37:49 -0600 Sean Reifschneider <jafo(a)tummy.com>
-
- * Version 1.44
-
- * Allowing spaces in the key. (Patch provided by xmm on Launchpad)
-
- * Detecting when the pickler needs a positional argument. (Patch
- provided by Brad Clements on Launchpad)
-
- * Moving length check after the compression. (Patch provided by user
- Tom on Launchpad)
-
- * Fixing arguments passed to the _Error if invalid read length.
-
- * Fixing the representation of domain sockets. (Patch provided by user
- MTB on Launchpad)
-
- * Changing a typo of dead_until. (Patch provided by Shane R. Spencer)
-
- * Providing better error messages (patch provided by Johan Euphrosine).
-
- * Adding get_slabs() function to get stats. (Patch provided
- by Nick Verbeck)
-
-Sun, 01 Jun 2008 15:05:11 -0600 Sean Reifschneider <jafo(a)tummy.com>
-
- * Version 1.43
-
- * eliott reported a bug in the 1.42 related to the socket timeout code
- causing a traceback due to the timeout value not being set.
-
-Sat, 31 May 2008 02:09:17 -0600 Sean Reifschneider <jafo(a)tummy.com>
-
- * Version 1.42
-
- * Paul Hummer set up a Launchpad project which I'm going to start using
- to track patches and allow users to set up their own bzr branches and
- manage marging in the upstream patches with their own.
-
- https://launchpad.net/python-memcached
-
- * Patch from Jehiah Czebotar which does: Changing the calls to
- mark_dead() to make them dereference tuples, reducing timeout on
- sockets to 3 seconds, settable via setting Host._SOCKET_TIMEOUT.
-
- * Patches from Steve Schwarz for set_multi() to return the full set of
- keys if all servers are down. Previously would not report any keys.
-
- * Fix from Steve Schwarz delete_multi() argument "seconds" not being
- correctly handled. Changed it to "time" to match all other calls.
-
- * Patch from Peter Wilkinson to support using unix domain sockets.
- He reports that tests succeed with with memcached daemons running,
- the normal and a domain socket started via
- "memcached -s memcached.socket". I massaged it quite a bit.
-
- To use domain sockets, use a connect string of "unix:/path/to/socket"
- Note however that if you are using a host name of "unix", it will now
- detect "unix:11211" as being a domain socket with the name "11211".
- In this case, please use "inet:unix:11211".
-
- Because of this, it is now preferred to use a connect string prefix
- of "inet:" or "unix:".
-
-Tue, 29 Apr 2008 21:03:53 -0600 Sean Reifschneider <jafo(a)tummy.com>
-
- * Version 1.41
-
- * Patch from Jehiah Czebotar to catch an additional server disconnect
- situation.
-
- * Patch from Andrey Petrov to add the "append" and "replace" commands.
-
-Tue, 18 Sep 2007 20:52:09 -0600 Sean Reifschneider <jafo(a)tummy.com>
-
- * Version 1.40
-
- * Updated setup.py file that uses distutils provided by Kai Lautaportti.
-
- * Prevent keys from containing ASCII character 127 as well, patch provided
- by Philip Neustrom.
-
- * Added ability to overload the persistent_load/id, patch provided by
- Steve Schwarz.
-
- * Fixed ability to pass (server_hash,key) in place of key in Client.set()
- Reported by Alexander Klyuev.
-
-Tue, 14 Aug 2007 14:43:27 -0600 Sean Reifschneider <jafo(a)tummy.com>
-
- * Version 1.39
-
- * Michael Krause reports the previous version doesn't work for
- _val_to_store_info() calls because it's defined as a staticmethod.
- Removing staticmethod decorator. Also confirmed by Kai Lautaportti,
- with suggested fix of removing staticmethod.
-
-Fri, 10 Aug 2007 17:50:13 -0600 Sean Reifschneider <jafo(a)tummy.com>
-
- * Version 1.38
-
- * Matt McClanahan submitted a patch that allow add() to have a
- min_compress_len argument.
-
- * Steve Schwarz submitted a patch allowing user-defined picklers.
-
- * Michael Krause suggested checking the return value to prevent an
- exception from being raised in _set() when a value is too large to be
- stored.
-
-Fri, 27 Jul 2007 01:55:48 -0600 Sean Reifschneider <jafo(a)tummy.com>
-
- * Version 1.37
-
- * Fixing call from add() to _set() with parameter for min_compress_len.
- Reported by Jeff Fisher.
-
-Thu, 07 Jun 2007 04:10:31 -0600 Sean Reifschneider <jafo(a)tummy.com>
-
- * Version 1.36
-
- * Patch by Dave St.Germain to make the Client() class sub-class
- threadlocal to help with multi-threading issues. Only available in
- Python 2.4 and above.
-
- * Patch by James Robinson with:
- 1) new set_multi method.
- 2) factored out determining the flags, length, and value to store
- from set() into method _val_to_store_info() for use by both set()
- and set_multi().
- 3) send_cmds() method on host which doesn't apply the trailing '\r\n'
- for use by set_multi.
- 4) check_key() extended a bit to allow for testing the prefix passed
- to set_multi just once, not once per each key.
- 5) Patch also enables support for auto compression in set, set_multi,
- and replace.
-
- * Suggestion by Helge Tesdal, fixes in check_key for non-string keys.
-
- * NOTE: On a farm of clients with multiple servers, all clients will
- need to be upgraded to this version. The next patch changes the
- server hash.
-
- * Philip Neustrom supplied a patch to change the server hash function to
- binascii.crc32. The original "hash()" call is not cross-platform, so
- big and little endian systems accessing the same memcache may end up
- hitting different servers. Restore the old functionality by calling:
- "memcached.serverHashFunction = hash" after importing memcache.
-
- * Philip Neustrom points out that passing Unicode keys or values causes
- problems because len(key) or len(value) is not equal to the number of
- bytes that are required to store the key/value. Philip provides a
- patch which raises an exception in this case. Raises
- memcache.Client.MemcachedStringEncodingError exception in this case.
-
- * NOTE: If you recompiled memcached to increase the default 1MB max
- value size, you will need to call "memcached.MAX_SERVER_VALUE_LENGTH = N"
- or memcached will not store values larger than the default 1MB.
-
- * Philip Neustrom includes another patch which checks that the key
- doesn't exceed the memcache server's max size. If it does, the item
- is silently not stored.
-
- * Philip Neustrom added a bunch of sanity checks.
-
- * Jehiah Czebotar provided a patch to make the add() and replace()
- functions return 0 when the add or replace fails, similar to how set()
- works.
-
-Sat, 16 Sep 2006 18:31:46 -0600 Sean Reifschneider <jafo(a)tummy.com>
-
- * Version 1.34
-
- * In get_multi, if the recv loop reads 0 bytes, raising an EOFError.
- Identified by Jim Baker.
-
-Tue, 05 Sep 2006 14:06:50 -0600 Sean Reifschneider <jafo(a)tummy.com>
-
- * Version 1.33
-
- * Including patch from Yoshinori K. Okuji to read in larger chunks for
- readline() calls. This should dramatically improve performance under
- some circumstances.
-
-Sun, 03 Sep 2006 14:02:03 -0600 Sean Reifschneider <jafo(a)tummy.com>
-
- * Version 1.32
-
- * Including patch from Philip Neustrom which checks keys sent to the
- server for length and bad characters.
-
-Sat, 20 May 2006 14:51:28 -0600 Sean Reifschneider <jafo(a)tummy.com>
-
- * Version 1.31
-
- * Rolled version 1.30 since the Danga folks are now listing this
- version as the official version. Removing the "tummy" from the version
- number, and incrementing so that it's clear it's more recent than "1.2".
-
- * Patch applied from Simon Forman for handling of weighted hosts.
-
- * Added a little more meat to the README.
-
-Sat, 28 Jan 2006 15:59:50 -0700 Sean Reifschneider <jafo(a)tummy.com>
-
- * cludwin at socallocal suggested that the write-combining with
- sendall() may not be beneficial. After testing on both SMP and non-SMP
- machines, I can't see a significant benefit to not doing the
- write-combining, even on large strings. The benefits of write-combining
- on smaller strings seems to be significant on UP machines in tight loops.
- Even on strings that are larger than 2MB, there seems to be no benefit to
- splitting out the writes.
-
-Sun, 18 Sep 2005 18:56:31 -0600 Sean Reifschneider <jafo(a)tummy.com>
-
- * Changing a printf to debuglog and catching a pickle exception, patch
- submitted by Justin Azoff.
-
-Thu, 14 Jul 2005 11:17:30 -0700 Sean Reifschneider <jafo(a)tummy.com>
-
- * Alex Stapleton found that the sendall call was slow for writing data
- larger than several kilobytes. I had him test a change to his patch,
- which worked as well, but was simpler. The code now does two sendall
- calls, one for the data and one for the line termination, if the data is
- larger than 100 bytes.
-
-Thu, 7 Apr 2005 14:45:44 -0700 Sean Reifschneider <jafo(a)tummy.com>
-
- * Incorporating some fixes to get_multi() from Bo Yang
-
-Mon, 13 Dec 2004 02:35:17 -0700 Sean Reifschneider <jafo(a)tummy.com>
-
- * Simplifying the readline() function and speeding it up ~25%.
- * Fixing a bug in readline() if the server drops, mark_dead() was not
- being properly called.
-
-Sun, 12 Dec 2004 18:56:33 -0700 Sean Reifschneider <jafo(a)tummy.com>
-
- * Adding "stats()" and "flush_all()" methods.
-
-Thu, 10 Aug 2003 12:17:50 -0700 Evan Martin <martine(a)danga.com>
-
- * Slightly more verbose self-test output.
- * Fix mark_dead() to use proper classname.
- * Make pooltest.py run from the test directory.
-
-Thu, 07 Aug 2003 16:32:32 -0700 Evan Martin <martine(a)danga.com>
-
- * Add incr, decr, and delete.
- * Better Python (based on comments from Uriah Welcome).
- * Docs, using epydoc.
-
-Thu, 07 Aug 2003 14:20:27 -0700 Evan Martin <martine(a)danga.com>
-
- * Initial prerelease.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-memcached-1.47/PKG-INFO new/python-memcached-1.48/PKG-INFO
--- old/python-memcached-1.47/PKG-INFO 2010-12-21 03:16:36.000000000 +0100
+++ new/python-memcached-1.48/PKG-INFO 2013-03-29 01:18:46.000000000 +0100
@@ -1,10 +1,26 @@
-Metadata-Version: 1.0
+Metadata-Version: 1.1
Name: python-memcached
-Version: 1.47
-Summary: A Python memcached client library.
+Version: 1.48
+Summary: Pure python memcached client
Home-page: http://www.tummy.com/Community/software/python-memcached/
Author: Sean Reifschneider
-Author-email: jafo-memcached(a)tummy.com
-License: Python Software Foundation License
-Description: A Python memcached client library.
+Author-email: jafo(a)tummy.com
+License: UNKNOWN
+Download-URL: ftp://ftp.tummy.com/pub/python-memcached/
+Description: This software is a 100% Python interface to the memcached memory cache
+ daemon. It is the client side software which allows storing values in one
+ or more, possibly remote, memcached servers. Search google for memcached
+ for more information.
+
+ This package was originally written by Evan Martin of Danga.
+ Please do not contact Evan about maintenance.
+ Sean Reifschneider of tummy.com, ltd. has taken over maintenance of it.
+
Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: Python Software Foundation License
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python
+Classifier: Topic :: Internet
+Classifier: Topic :: Software Development :: Libraries :: Python Modules
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-memcached-1.47/memcache.html new/python-memcached-1.48/memcache.html
--- old/python-memcached-1.47/memcache.html 2010-12-21 03:16:36.000000000 +0100
+++ new/python-memcached-1.48/memcache.html 1970-01-01 01:00:00.000000000 +0100
@@ -1,455 +0,0 @@
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html><head><title>Python: module memcache</title>
-</head><body bgcolor="#f0f0f8">
-
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
-<tr bgcolor="#7799ee">
-<td valign=bottom> <br>
-<font color="#ffffff" face="helvetica, arial"> <br><big><big><strong>memcache</strong></big></big> (version 1.47)</font></td
-><td align=right valign=bottom
-><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/tmp/python-memcached-1.47/memcache.py">/tmp/python-memcached-1.47/memcache.py</a></font></td></tr></table>
- <p><tt>client module for memcached (memory cache daemon)<br>
- <br>
-Overview<br>
-========<br>
- <br>
-See U{the MemCached homepage<<a href="http://www.danga.com/memcached">http://www.danga.com/memcached</a>>} for more about memcached.<br>
- <br>
-Usage summary<br>
-=============<br>
- <br>
-This should give you a feel for how this module operates::<br>
- <br>
- import memcache<br>
- mc = memcache.<a href="#Client">Client</a>(['127.0.0.1:11211'], debug=0)<br>
- <br>
- mc.set("some_key", "Some value")<br>
- value = mc.get("some_key")<br>
- <br>
- mc.set("another_key", 3)<br>
- mc.delete("another_key")<br>
- <br>
- mc.set("key", "1") # note that the key used for incr/decr must be a string.<br>
- mc.incr("key")<br>
- mc.decr("key")<br>
- <br>
-The standard way to use memcache with a database is like this::<br>
- <br>
- key = derive_key(obj)<br>
- obj = mc.get(key)<br>
- if not obj:<br>
- obj = backend_api.get(...)<br>
- mc.set(key, obj)<br>
- <br>
- # we now have obj, and future passes through this code<br>
- # will use the object from the cache.<br>
- <br>
-Detailed Documentation<br>
-======================<br>
- <br>
-More detailed documentation is available in the L{<a href="#Client">Client</a>} class.</tt></p>
-<p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#aa55cc">
-<td colspan=3 valign=bottom> <br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
-
-<tr><td bgcolor="#aa55cc"><tt> </tt></td><td> </td>
-<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="os.html">os</a><br>
-<a href="cPickle.html">cPickle</a><br>
-</td><td width="25%" valign=top><a href="re.html">re</a><br>
-<a href="socket.html">socket</a><br>
-</td><td width="25%" valign=top><a href="sys.html">sys</a><br>
-<a href="time.html">time</a><br>
-</td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#ee77aa">
-<td colspan=3 valign=bottom> <br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
-
-<tr><td bgcolor="#ee77aa"><tt> </tt></td><td> </td>
-<td width="100%"><dl>
-<dt><font face="helvetica, arial"><a href="thread.html#_local">thread._local</a>(<a href="__builtin__.html#object">__builtin__.object</a>)
-</font></dt><dd>
-<dl>
-<dt><font face="helvetica, arial"><a href="memcache.html#Client">Client</a>
-</font></dt></dl>
-</dd>
-</dl>
- <p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#ffc8d8">
-<td colspan=3 valign=bottom> <br>
-<font color="#000000" face="helvetica, arial"><a name="Client">class <strong>Client</strong></a>(<a href="thread.html#_local">thread._local</a>)</font></td></tr>
-
-<tr bgcolor="#ffc8d8"><td rowspan=2><tt> </tt></td>
-<td colspan=2><tt>Object representing a pool of memcache servers.<br>
- <br>
-See L{memcache} for an overview.<br>
- <br>
-In all cases where a key is used, the key can be either:<br>
- 1. A simple hashable type (string, integer, etc.).<br>
- 2. A tuple of C{(hashvalue, key)}. This is useful if you want to avoid<br>
- making this module calculate a hash value. You may prefer, for<br>
- example, to keep all of a given user's objects on the same memcache<br>
- server, so you could use the user's unique id as the hash value.<br>
- <br>
-@group Setup: __init__, set_servers, forget_dead_hosts, disconnect_all, debuglog<br>
-@group Insertion: set, add, replace, set_multi<br>
-@group Retrieval: get, get_multi<br>
-@group Integers: incr, decr<br>
-@group Removal: delete, delete_multi<br>
-@sort: __init__, set_servers, forget_dead_hosts, disconnect_all, debuglog, set, set_multi, add, replace, get, get_multi, incr, decr, delete, delete_multi<br> </tt></td></tr>
-<tr><td> </td>
-<td width="100%"><dl><dt>Method resolution order:</dt>
-<dd><a href="memcache.html#Client">Client</a></dd>
-<dd><a href="thread.html#_local">thread._local</a></dd>
-<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
-</dl>
-<hr>
-Methods defined here:<br>
-<dl><dt><a name="Client-__init__"><strong>__init__</strong></a>(self, servers, debug<font color="#909090">=0</font>, pickleProtocol<font color="#909090">=0</font>, pickler<font color="#909090">=<built-in function Pickler></font>, unpickler<font color="#909090">=<built-in function Unpickler></font>, pload<font color="#909090">=None</font>, pid<font color="#909090">=None</font>, server_max_key_length<font color="#909090">=250</font>, server_max_value_length<font color="#909090">=1048576</font>)</dt><dd><tt>Create a new <a href="#Client">Client</a> object with the given list of servers.<br>
- <br>
-@param servers: C{servers} is passed to L{set_servers}.<br>
-@param debug: whether to display error messages when a server can't be<br>
-contacted.<br>
-@param pickleProtocol: number to mandate protocol used by (c)Pickle.<br>
-@param pickler: optional override of default Pickler to allow subclassing.<br>
-@param unpickler: optional override of default Unpickler to allow subclassing.<br>
-@param pload: optional persistent_load function to call on pickle loading.<br>
-Useful for cPickle since subclassing isn't allowed.<br>
-@param pid: optional persistent_id function to call on pickle storing.<br>
-Useful for cPickle since subclassing isn't allowed.</tt></dd></dl>
-
-<dl><dt><a name="Client-add"><strong>add</strong></a>(self, key, val, time<font color="#909090">=0</font>, min_compress_len<font color="#909090">=0</font>)</dt><dd><tt>Add new key with value.<br>
- <br>
-Like L{set}, but only stores in memcache if the key doesn't already exist.<br>
- <br>
-@return: Nonzero on success.<br>
-@rtype: int</tt></dd></dl>
-
-<dl><dt><a name="Client-append"><strong>append</strong></a>(self, key, val, time<font color="#909090">=0</font>, min_compress_len<font color="#909090">=0</font>)</dt><dd><tt>Append the value to the end of the existing key's value.<br>
- <br>
-Only stores in memcache if key already exists.<br>
-Also see L{prepend}.<br>
- <br>
-@return: Nonzero on success.<br>
-@rtype: int</tt></dd></dl>
-
-<dl><dt><a name="Client-cas"><strong>cas</strong></a>(self, key, val, time<font color="#909090">=0</font>, min_compress_len<font color="#909090">=0</font>)</dt><dd><tt>Sets a key to a given value in the memcache if it hasn't been<br>
-altered since last fetched. (See L{gets}).<br>
- <br>
-The C{key} can optionally be an tuple, with the first element<br>
-being the server hash value and the second being the key.<br>
-If you want to avoid making this module calculate a hash value.<br>
-You may prefer, for example, to keep all of a given user's objects<br>
-on the same memcache server, so you could use the user's unique<br>
-id as the hash value.<br>
- <br>
-@return: Nonzero on success.<br>
-@rtype: int<br>
-@param time: Tells memcached the time which this value should expire,<br>
-either as a delta number of seconds, or an absolute unix<br>
-time-since-the-epoch value. See the memcached protocol docs section<br>
-"Storage Commands" for more info on <exptime>. We default to<br>
-0 == cache forever.<br>
-@param min_compress_len: The threshold length to kick in<br>
-auto-compression of the value using the zlib.<a href="#-compress">compress</a>() routine. If<br>
-the value being cached is a string, then the length of the string is<br>
-measured, else if the value is an object, then the length of the<br>
-pickle result is measured. If the resulting attempt at compression<br>
-yeilds a larger string than the input, then it is discarded. For<br>
-backwards compatability, this parameter defaults to 0, indicating<br>
-don't ever try to compress.</tt></dd></dl>
-
-<dl><dt><a name="Client-check_key"><strong>check_key</strong></a>(self, key, key_extra_len<font color="#909090">=0</font>)</dt><dd><tt>Checks sanity of key. Fails if:<br>
-Key length is > SERVER_MAX_KEY_LENGTH (Raises MemcachedKeyLength).<br>
-Contains control characters (Raises MemcachedKeyCharacterError).<br>
-Is not a string (Raises MemcachedStringEncodingError)<br>
-Is an unicode string (Raises MemcachedStringEncodingError)<br>
-Is not a string (Raises MemcachedKeyError)<br>
-Is None (Raises MemcachedKeyError)</tt></dd></dl>
-
-<dl><dt><a name="Client-debuglog"><strong>debuglog</strong></a>(self, str)</dt></dl>
-
-<dl><dt><a name="Client-decr"><strong>decr</strong></a>(self, key, delta<font color="#909090">=1</font>)</dt><dd><tt>Like L{incr}, but decrements. Unlike L{incr}, underflow is checked and<br>
-new values are capped at 0. If server value is 1, a decrement of 2<br>
-returns 0, not -1.<br>
- <br>
-@param delta: Integer amount to decrement by (should be zero or greater).<br>
-@return: New value after decrementing.<br>
-@rtype: int</tt></dd></dl>
-
-<dl><dt><a name="Client-delete"><strong>delete</strong></a>(self, key, time<font color="#909090">=0</font>)</dt><dd><tt>Deletes a key from the memcache.<br>
- <br>
-@return: Nonzero on success.<br>
-@param time: number of seconds any subsequent set / update commands<br>
-should fail. Defaults to 0 for no delay.<br>
-@rtype: int</tt></dd></dl>
-
-<dl><dt><a name="Client-delete_multi"><strong>delete_multi</strong></a>(self, keys, time<font color="#909090">=0</font>, key_prefix<font color="#909090">=''</font>)</dt><dd><tt>Delete multiple keys in the memcache doing just one query.<br>
- <br>
->>> notset_keys = mc.<a href="#Client-set_multi">set_multi</a>({'key1' : 'val1', 'key2' : 'val2'})<br>
->>> mc.<a href="#Client-get_multi">get_multi</a>(['key1', 'key2']) == {'key1' : 'val1', 'key2' : 'val2'}<br>
-1<br>
->>> mc.<a href="#Client-delete_multi">delete_multi</a>(['key1', 'key2'])<br>
-1<br>
->>> mc.<a href="#Client-get_multi">get_multi</a>(['key1', 'key2']) == {}<br>
-1<br>
- <br>
- <br>
-This method is recommended over iterated regular L{delete}s as it reduces total latency, since<br>
-your app doesn't have to wait for each round-trip of L{delete} before sending<br>
-the next one.<br>
- <br>
-@param keys: An iterable of keys to clear<br>
-@param time: number of seconds any subsequent set / update commands should fail. Defaults to 0 for no delay.<br>
-@param key_prefix: Optional string to prepend to each key when sending to memcache.<br>
- See docs for L{get_multi} and L{set_multi}.<br>
- <br>
-@return: 1 if no failure in communication with any memcacheds.<br>
-@rtype: int</tt></dd></dl>
-
-<dl><dt><a name="Client-disconnect_all"><strong>disconnect_all</strong></a>(self)</dt></dl>
-
-<dl><dt><a name="Client-flush_all"><strong>flush_all</strong></a>(self)</dt><dd><tt>Expire all data currently in the memcache servers.</tt></dd></dl>
-
-<dl><dt><a name="Client-forget_dead_hosts"><strong>forget_dead_hosts</strong></a>(self)</dt><dd><tt>Reset every host in the pool to an "alive" state.</tt></dd></dl>
-
-<dl><dt><a name="Client-get"><strong>get</strong></a>(self, key)</dt><dd><tt>Retrieves a key from the memcache.<br>
- <br>
-@return: The value or None.</tt></dd></dl>
-
-<dl><dt><a name="Client-get_multi"><strong>get_multi</strong></a>(self, keys, key_prefix<font color="#909090">=''</font>)</dt><dd><tt>Retrieves multiple keys from the memcache doing just one query.<br>
- <br>
->>> success = mc.<a href="#Client-set">set</a>("foo", "bar")<br>
->>> success = mc.<a href="#Client-set">set</a>("baz", 42)<br>
->>> mc.<a href="#Client-get_multi">get_multi</a>(["foo", "baz", "foobar"]) == {"foo": "bar", "baz": 42}<br>
-1<br>
->>> mc.<a href="#Client-set_multi">set_multi</a>({'k1' : 1, 'k2' : 2}, key_prefix='pfx_') == []<br>
-1<br>
- <br>
-This looks up keys 'pfx_k1', 'pfx_k2', ... . Returned dict will just have unprefixed keys 'k1', 'k2'.<br>
->>> mc.<a href="#Client-get_multi">get_multi</a>(['k1', 'k2', 'nonexist'], key_prefix='pfx_') == {'k1' : 1, 'k2' : 2}<br>
-1<br>
- <br>
-get_mult [ and L{set_multi} ] can take str()-ables like ints / longs as keys too. Such as your db pri key fields.<br>
-They're rotored through str() before being passed off to memcache, with or without the use of a key_prefix.<br>
-In this mode, the key_prefix could be a table name, and the key itself a db primary key number.<br>
- <br>
->>> mc.<a href="#Client-set_multi">set_multi</a>({42: 'douglass adams', 46 : 'and 2 just ahead of me'}, key_prefix='numkeys_') == []<br>
-1<br>
->>> mc.<a href="#Client-get_multi">get_multi</a>([46, 42], key_prefix='numkeys_') == {42: 'douglass adams', 46 : 'and 2 just ahead of me'}<br>
-1<br>
- <br>
-This method is recommended over regular L{get} as it lowers the number of<br>
-total packets flying around your network, reducing total latency, since<br>
-your app doesn't have to wait for each round-trip of L{get} before sending<br>
-the next one.<br>
- <br>
-See also L{set_multi}.<br>
- <br>
-@param keys: An array of keys.<br>
-@param key_prefix: A string to prefix each key when we communicate with memcache.<br>
- Facilitates pseudo-namespaces within memcache. Returned dictionary keys will not have this prefix.<br>
-@return: A dictionary of key/value pairs that were available. If key_prefix was provided, the keys in the retured dictionary will not have it present.</tt></dd></dl>
-
-<dl><dt><a name="Client-get_slabs"><strong>get_slabs</strong></a>(self)</dt></dl>
-
-<dl><dt><a name="Client-get_stats"><strong>get_stats</strong></a>(self, stat_args<font color="#909090">=None</font>)</dt><dd><tt>Get statistics from each of the servers.<br>
- <br>
-@param stat_args: Additional arguments to pass to the memcache<br>
- "stats" command.<br>
- <br>
-@return: A list of tuples ( server_identifier, stats_dictionary ).<br>
- The dictionary contains a number of name/value pairs specifying<br>
- the name of the status field and the string value associated with<br>
- it. The values are not converted from strings.</tt></dd></dl>
-
-<dl><dt><a name="Client-gets"><strong>gets</strong></a>(self, key)</dt><dd><tt>Retrieves a key from the memcache. Used in conjunction with 'cas'.<br>
- <br>
-@return: The value or None.</tt></dd></dl>
-
-<dl><dt><a name="Client-incr"><strong>incr</strong></a>(self, key, delta<font color="#909090">=1</font>)</dt><dd><tt>Sends a command to the server to atomically increment the value<br>
-for C{key} by C{delta}, or by 1 if C{delta} is unspecified.<br>
-Returns None if C{key} doesn't exist on server, otherwise it<br>
-returns the new value after incrementing.<br>
- <br>
-Note that the value for C{key} must already exist in the memcache,<br>
-and it must be the string representation of an integer.<br>
- <br>
->>> mc.<a href="#Client-set">set</a>("counter", "20") # returns 1, indicating success<br>
-1<br>
->>> mc.<a href="#Client-incr">incr</a>("counter")<br>
-21<br>
->>> mc.<a href="#Client-incr">incr</a>("counter")<br>
-22<br>
- <br>
-Overflow on server is not checked. Be aware of values approaching<br>
-2**32. See L{decr}.<br>
- <br>
-@param delta: Integer amount to increment by (should be zero or greater).<br>
-@return: New value after incrementing.<br>
-@rtype: int</tt></dd></dl>
-
-<dl><dt><a name="Client-prepend"><strong>prepend</strong></a>(self, key, val, time<font color="#909090">=0</font>, min_compress_len<font color="#909090">=0</font>)</dt><dd><tt>Prepend the value to the beginning of the existing key's value.<br>
- <br>
-Only stores in memcache if key already exists.<br>
-Also see L{append}.<br>
- <br>
-@return: Nonzero on success.<br>
-@rtype: int</tt></dd></dl>
-
-<dl><dt><a name="Client-replace"><strong>replace</strong></a>(self, key, val, time<font color="#909090">=0</font>, min_compress_len<font color="#909090">=0</font>)</dt><dd><tt>Replace existing key with value.<br>
- <br>
-Like L{set}, but only stores in memcache if the key already exists.<br>
-The opposite of L{add}.<br>
- <br>
-@return: Nonzero on success.<br>
-@rtype: int</tt></dd></dl>
-
-<dl><dt><a name="Client-set"><strong>set</strong></a>(self, key, val, time<font color="#909090">=0</font>, min_compress_len<font color="#909090">=0</font>)</dt><dd><tt>Unconditionally sets a key to a given value in the memcache.<br>
- <br>
-The C{key} can optionally be an tuple, with the first element<br>
-being the server hash value and the second being the key.<br>
-If you want to avoid making this module calculate a hash value.<br>
-You may prefer, for example, to keep all of a given user's objects<br>
-on the same memcache server, so you could use the user's unique<br>
-id as the hash value.<br>
- <br>
-@return: Nonzero on success.<br>
-@rtype: int<br>
-@param time: Tells memcached the time which this value should expire, either<br>
-as a delta number of seconds, or an absolute unix time-since-the-epoch<br>
-value. See the memcached protocol docs section "Storage Commands"<br>
-for more info on <exptime>. We default to 0 == cache forever.<br>
-@param min_compress_len: The threshold length to kick in auto-compression<br>
-of the value using the zlib.<a href="#-compress">compress</a>() routine. If the value being cached is<br>
-a string, then the length of the string is measured, else if the value is an<br>
-object, then the length of the pickle result is measured. If the resulting<br>
-attempt at compression yeilds a larger string than the input, then it is<br>
-discarded. For backwards compatability, this parameter defaults to 0,<br>
-indicating don't ever try to compress.</tt></dd></dl>
-
-<dl><dt><a name="Client-set_multi"><strong>set_multi</strong></a>(self, mapping, time<font color="#909090">=0</font>, key_prefix<font color="#909090">=''</font>, min_compress_len<font color="#909090">=0</font>)</dt><dd><tt>Sets multiple keys in the memcache doing just one query.<br>
- <br>
->>> notset_keys = mc.<a href="#Client-set_multi">set_multi</a>({'key1' : 'val1', 'key2' : 'val2'})<br>
->>> mc.<a href="#Client-get_multi">get_multi</a>(['key1', 'key2']) == {'key1' : 'val1', 'key2' : 'val2'}<br>
-1<br>
- <br>
- <br>
-This method is recommended over regular L{set} as it lowers the number of<br>
-total packets flying around your network, reducing total latency, since<br>
-your app doesn't have to wait for each round-trip of L{set} before sending<br>
-the next one.<br>
- <br>
-@param mapping: A dict of key/value pairs to set.<br>
-@param time: Tells memcached the time which this value should expire, either<br>
-as a delta number of seconds, or an absolute unix time-since-the-epoch<br>
-value. See the memcached protocol docs section "Storage Commands"<br>
-for more info on <exptime>. We default to 0 == cache forever.<br>
-@param key_prefix: Optional string to prepend to each key when sending to memcache. Allows you to efficiently stuff these keys into a pseudo-namespace in memcache:<br>
- >>> notset_keys = mc.<a href="#Client-set_multi">set_multi</a>({'key1' : 'val1', 'key2' : 'val2'}, key_prefix='subspace_')<br>
- >>> len(notset_keys) == 0<br>
- True<br>
- >>> mc.<a href="#Client-get_multi">get_multi</a>(['subspace_key1', 'subspace_key2']) == {'subspace_key1' : 'val1', 'subspace_key2' : 'val2'}<br>
- True<br>
- <br>
- Causes key 'subspace_key1' and 'subspace_key2' to be set. Useful in conjunction with a higher-level layer which applies namespaces to data in memcache.<br>
- In this case, the return result would be the list of notset original keys, prefix not applied.<br>
- <br>
-@param min_compress_len: The threshold length to kick in auto-compression<br>
-of the value using the zlib.<a href="#-compress">compress</a>() routine. If the value being cached is<br>
-a string, then the length of the string is measured, else if the value is an<br>
-object, then the length of the pickle result is measured. If the resulting<br>
-attempt at compression yeilds a larger string than the input, then it is<br>
-discarded. For backwards compatability, this parameter defaults to 0,<br>
-indicating don't ever try to compress.<br>
-@return: List of keys which failed to be stored [ memcache out of memory, etc. ].<br>
-@rtype: list</tt></dd></dl>
-
-<dl><dt><a name="Client-set_servers"><strong>set_servers</strong></a>(self, servers)</dt><dd><tt>Set the pool of servers used by this client.<br>
- <br>
-@param servers: an array of servers.<br>
-Servers can be passed in two forms:<br>
- 1. Strings of the form C{"host:port"}, which implies a default weight of 1.<br>
- 2. Tuples of the form C{("host:port", weight)}, where C{weight} is<br>
- an integer weight value.</tt></dd></dl>
-
-<hr>
-Data descriptors defined here:<br>
-<dl><dt><strong>__weakref__</strong></dt>
-<dd><tt>list of weak references to the object (if defined)</tt></dd>
-</dl>
-<hr>
-Data and other attributes defined here:<br>
-<dl><dt><strong>MemcachedKeyCharacterError</strong> = <class 'memcache.MemcachedKeyCharacterError'></dl>
-
-<dl><dt><strong>MemcachedKeyError</strong> = <class 'memcache.MemcachedKeyError'></dl>
-
-<dl><dt><strong>MemcachedKeyLengthError</strong> = <class 'memcache.MemcachedKeyLengthError'></dl>
-
-<dl><dt><strong>MemcachedKeyNoneError</strong> = <class 'memcache.MemcachedKeyNoneError'></dl>
-
-<dl><dt><strong>MemcachedKeyTypeError</strong> = <class 'memcache.MemcachedKeyTypeError'></dl>
-
-<dl><dt><strong>MemcachedStringEncodingError</strong> = <class 'memcache.MemcachedStringEncodingError'></dl>
-
-<hr>
-Methods inherited from <a href="thread.html#_local">thread._local</a>:<br>
-<dl><dt><a name="Client-__delattr__"><strong>__delattr__</strong></a>(...)</dt><dd><tt>x.<a href="#Client-__delattr__">__delattr__</a>('name') <==> del x.name</tt></dd></dl>
-
-<dl><dt><a name="Client-__getattribute__"><strong>__getattribute__</strong></a>(...)</dt><dd><tt>x.<a href="#Client-__getattribute__">__getattribute__</a>('name') <==> x.name</tt></dd></dl>
-
-<dl><dt><a name="Client-__setattr__"><strong>__setattr__</strong></a>(...)</dt><dd><tt>x.<a href="#Client-__setattr__">__setattr__</a>('name', value) <==> x.name = value</tt></dd></dl>
-
-<hr>
-Data descriptors inherited from <a href="thread.html#_local">thread._local</a>:<br>
-<dl><dt><strong>__dict__</strong></dt>
-<dd><tt>Local-data dictionary</tt></dd>
-</dl>
-<hr>
-Data and other attributes inherited from <a href="thread.html#_local">thread._local</a>:<br>
-<dl><dt><strong>__new__</strong> = <built-in method __new__ of type object><dd><tt>T.<a href="#Client-__new__">__new__</a>(S, ...) -> a new object with type S, a subtype of T</tt></dl>
-
-</td></tr></table></td></tr></table><p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#eeaa77">
-<td colspan=3 valign=bottom> <br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
-
-<tr><td bgcolor="#eeaa77"><tt> </tt></td><td> </td>
-<td width="100%"><dl><dt><a name="-StringIO"><strong>StringIO</strong></a>(...)</dt><dd><tt><a href="#-StringIO">StringIO</a>([s]) -- Return a StringIO-like stream for reading or writing</tt></dd></dl>
- <dl><dt><a name="-cmemcache_hash"><strong>cmemcache_hash</strong></a>(key)</dt></dl>
- <dl><dt><a name="-compress"><strong>compress</strong></a>(...)</dt><dd><tt><a href="#-compress">compress</a>(string[, level]) -- Returned compressed string.<br>
- <br>
-Optional arg level is the compression level, in 1-9.</tt></dd></dl>
- <dl><dt><a name="-crc32"><strong>crc32</strong></a>(...)</dt><dd><tt>(data, oldcrc = 0) -> newcrc. Compute CRC-32 incrementally</tt></dd></dl>
- <dl><dt><a name="-decompress"><strong>decompress</strong></a>(...)</dt><dd><tt><a href="#-decompress">decompress</a>(string[, wbits[, bufsize]]) -- Return decompressed string.<br>
- <br>
-Optional arg wbits is the window buffer size. Optional arg bufsize is<br>
-the initial output buffer size.</tt></dd></dl>
- <dl><dt><a name="-serverHashFunction"><strong>serverHashFunction</strong></a> = cmemcache_hash(key)</dt></dl>
- <dl><dt><a name="-useOldServerHashFunction"><strong>useOldServerHashFunction</strong></a>()</dt><dd><tt>Use the old python-memcache server hash function.</tt></dd></dl>
-</td></tr></table><p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#55aa55">
-<td colspan=3 valign=bottom> <br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
-
-<tr><td bgcolor="#55aa55"><tt> </tt></td><td> </td>
-<td width="100%"><strong>SERVER_MAX_KEY_LENGTH</strong> = 250<br>
-<strong>SERVER_MAX_VALUE_LENGTH</strong> = 1048576<br>
-<strong>__author__</strong> = 'Sean Reifschneider <jafo-memcached(a)tummy.com>'<br>
-<strong>__copyright__</strong> = 'Copyright (C) 2003 Danga Interactive'<br>
-<strong>__license__</strong> = 'Python Software Foundation License'<br>
-<strong>__version__</strong> = '1.47'</td></tr></table><p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#7799ee">
-<td colspan=3 valign=bottom> <br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
-
-<tr><td bgcolor="#7799ee"><tt> </tt></td><td> </td>
-<td width="100%">Sean Reifschneider <jafo-memcached(a)tummy.com></td></tr></table>
-</body></html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-memcached-1.47/memcache.py new/python-memcached-1.48/memcache.py
--- old/python-memcached-1.47/memcache.py 2010-12-21 03:16:36.000000000 +0100
+++ new/python-memcached-1.48/memcache.py 2011-11-28 02:17:32.000000000 +0100
@@ -80,7 +80,7 @@
# Original author: Evan Martin of Danga Interactive
__author__ = "Sean Reifschneider <jafo-memcached(a)tummy.com>"
-__version__ = "1.47"
+__version__ = "1.48"
__copyright__ = "Copyright (C) 2003 Danga Interactive"
# http://en.wikipedia.org/wiki/Python_Software_Foundation_License
__license__ = "Python Software Foundation License"
@@ -91,9 +91,15 @@
# after importing this module.
SERVER_MAX_VALUE_LENGTH = 1024*1024
+
class _Error(Exception):
pass
+
+class _ConnectionDeadError(Exception):
+ pass
+
+
try:
# Only exists in Python 2.4+
from threading import local
@@ -103,6 +109,10 @@
pass
+_DEAD_RETRY = 30 # number of seconds before retrying a dead server.
+_SOCKET_TIMEOUT = 3 # number of seconds before sockets timeout.
+
+
class Client(local):
"""
Object representing a pool of memcache servers.
@@ -147,8 +157,11 @@
def __init__(self, servers, debug=0, pickleProtocol=0,
pickler=pickle.Pickler, unpickler=pickle.Unpickler,
- pload=None, pid=None, server_max_key_length=SERVER_MAX_KEY_LENGTH,
- server_max_value_length=SERVER_MAX_VALUE_LENGTH):
+ pload=None, pid=None,
+ server_max_key_length=SERVER_MAX_KEY_LENGTH,
+ server_max_value_length=SERVER_MAX_VALUE_LENGTH,
+ dead_retry=_DEAD_RETRY, socket_timeout=_SOCKET_TIMEOUT,
+ cache_cas = False):
"""
Create a new Client object with the given list of servers.
@@ -162,12 +175,27 @@
Useful for cPickle since subclassing isn't allowed.
@param pid: optional persistent_id function to call on pickle storing.
Useful for cPickle since subclassing isn't allowed.
+ @param dead_retry: number of seconds before retrying a blacklisted
+ server. Default to 30 s.
+ @param socket_timeout: timeout in seconds for all calls to a server. Defaults
+ to 3 seconds.
+ @param cache_cas: (default False) If true, cas operations will be
+ cached. WARNING: This cache is not expired internally, if you have
+ a long-running process you will need to expire it manually via
+ "client.reset_cas(), or the cache can grow unlimited.
+ @param server_max_key_length: (default SERVER_MAX_KEY_LENGTH)
+ Data that is larger than this will not be sent to the server.
+ @param server_max_value_length: (default SERVER_MAX_VALUE_LENGTH)
+ Data that is larger than this will not be sent to the server.
"""
local.__init__(self)
self.debug = debug
+ self.dead_retry = dead_retry
+ self.socket_timeout = socket_timeout
self.set_servers(servers)
self.stats = {}
- self.cas_ids = {}
+ self.cache_cas = cache_cas
+ self.reset_cas()
# Allow users to modify pickling/unpickling behavior
self.pickleProtocol = pickleProtocol
@@ -186,6 +214,16 @@
except TypeError:
self.picklerIsKeyword = False
+ def reset_cas(self):
+ """
+ Reset the cas cache. This is only used if the Client() object
+ was created with "cache_cas=True". If used, this cache does not
+ expire internally, so it can grow unbounded if you do not clear it
+ yourself.
+ """
+ self.cas_ids = {}
+
+
def set_servers(self, servers):
"""
Set the pool of servers used by this client.
@@ -196,7 +234,9 @@
2. Tuples of the form C{("host:port", weight)}, where C{weight} is
an integer weight value.
"""
- self.servers = [_Host(s, self.debug) for s in servers]
+ self.servers = [_Host(s, self.debug, dead_retry=self.dead_retry,
+ socket_timeout=self.socket_timeout)
+ for s in servers]
self._init_buckets()
def get_stats(self, stat_args = None):
@@ -375,7 +415,7 @@
@return: Nonzero on success.
@param time: number of seconds any subsequent set / update commands
- should fail. Defaults to 0 for no delay.
+ should fail. Defaults to None for no delay.
@rtype: int
'''
self.check_key(key)
@@ -383,7 +423,7 @@
if not server:
return 0
self._statlog('delete')
- if time != None:
+ if time != None and time != 0:
cmd = "delete %s %d" % (key, time)
else:
cmd = "delete %s" % key
@@ -724,7 +764,7 @@
# silently do not store if value length exceeds maximum
if self.server_max_value_length != 0 and \
- len(val) >= self.server_max_value_length: return(0)
+ len(val) > self.server_max_value_length: return(0)
return (flags, len(val), val)
@@ -734,28 +774,40 @@
if not server:
return 0
- self._statlog(cmd)
+ def _unsafe_set():
+ self._statlog(cmd)
- store_info = self._val_to_store_info(val, min_compress_len)
- if not store_info: return(0)
+ store_info = self._val_to_store_info(val, min_compress_len)
+ if not store_info: return(0)
- if cmd == 'cas':
- if key not in self.cas_ids:
- return self._set('set', key, val, time, min_compress_len)
- fullcmd = "%s %s %d %d %d %d\r\n%s" % (
- cmd, key, store_info[0], time, store_info[1],
- self.cas_ids[key], store_info[2])
- else:
- fullcmd = "%s %s %d %d %d\r\n%s" % (
- cmd, key, store_info[0], time, store_info[1], store_info[2])
+ if cmd == 'cas':
+ if key not in self.cas_ids:
+ return self._set('set', key, val, time, min_compress_len)
+ fullcmd = "%s %s %d %d %d %d\r\n%s" % (
+ cmd, key, store_info[0], time, store_info[1],
+ self.cas_ids[key], store_info[2])
+ else:
+ fullcmd = "%s %s %d %d %d\r\n%s" % (
+ cmd, key, store_info[0], time, store_info[1], store_info[2])
+
+ try:
+ server.send_cmd(fullcmd)
+ return(server.expect("STORED") == "STORED")
+ except socket.error, msg:
+ if isinstance(msg, tuple): msg = msg[1]
+ server.mark_dead(msg)
+ return 0
try:
- server.send_cmd(fullcmd)
- return(server.expect("STORED") == "STORED")
- except socket.error, msg:
- if isinstance(msg, tuple): msg = msg[1]
- server.mark_dead(msg)
- return 0
+ return _unsafe_set()
+ except _ConnectionDeadError:
+ # retry once
+ try:
+ server._get_socket()
+ return _unsafe_set()
+ except (_ConnectionDeadError, socket.error), msg:
+ server.mark_dead(msg)
+ return 0
def _get(self, cmd, key):
self.check_key(key)
@@ -763,27 +815,44 @@
if not server:
return None
- self._statlog(cmd)
+ def _unsafe_get():
+ self._statlog(cmd)
- try:
- server.send_cmd("%s %s" % (cmd, key))
- rkey = flags = rlen = cas_id = None
- if cmd == 'gets':
- rkey, flags, rlen, cas_id, = self._expect_cas_value(server)
- if rkey:
- self.cas_ids[rkey] = cas_id
- else:
- rkey, flags, rlen, = self._expectvalue(server)
+ try:
+ server.send_cmd("%s %s" % (cmd, key))
+ rkey = flags = rlen = cas_id = None
- if not rkey:
+ if cmd == 'gets':
+ rkey, flags, rlen, cas_id, = self._expect_cas_value(server)
+ if rkey and self.cache_cas:
+ self.cas_ids[rkey] = cas_id
+ else:
+ rkey, flags, rlen, = self._expectvalue(server)
+
+ if not rkey:
+ return None
+ try:
+ value = self._recv_value(server, flags, rlen)
+ finally:
+ server.expect("END")
+ except (_Error, socket.error), msg:
+ if isinstance(msg, tuple): msg = msg[1]
+ server.mark_dead(msg)
return None
- value = self._recv_value(server, flags, rlen)
- server.expect("END")
- except (_Error, socket.error), msg:
- if isinstance(msg, tuple): msg = msg[1]
- server.mark_dead(msg)
+
+ return value
+
+ try:
+ return _unsafe_get()
+ except _ConnectionDeadError:
+ # retry once
+ try:
+ if server.connect():
+ return _unsafe_get()
+ return None
+ except (_ConnectionDeadError, socket.error), msg:
+ server.mark_dead(msg)
return None
- return value
def get(self, key):
'''Retrieves a key from the memcache.
@@ -922,7 +991,7 @@
val = unpickler.load()
except Exception, e:
self.debuglog('Pickle error: %s\n' % e)
- val = None
+ return None
else:
self.debuglog("unknown flags on get: %x\n" % flags)
@@ -959,10 +1028,11 @@
class _Host(object):
- _DEAD_RETRY = 30 # number of seconds before retrying a dead server.
- _SOCKET_TIMEOUT = 3 # number of seconds before sockets timeout.
- def __init__(self, host, debug=0):
+ def __init__(self, host, debug=0, dead_retry=_DEAD_RETRY,
+ socket_timeout=_SOCKET_TIMEOUT):
+ self.dead_retry = dead_retry
+ self.socket_timeout = socket_timeout
self.debug = debug
if isinstance(host, tuple):
host, self.weight = host
@@ -1010,7 +1080,7 @@
def mark_dead(self, reason):
self.debuglog("MemCache: %s: %s. Marking dead." % (self, reason))
- self.deaduntil = time.time() + _Host._DEAD_RETRY
+ self.deaduntil = time.time() + self.dead_retry
self.close_socket()
def _get_socket(self):
@@ -1019,7 +1089,7 @@
if self.socket:
return self.socket
s = socket.socket(self.family, socket.SOCK_STREAM)
- if hasattr(s, 'settimeout'): s.settimeout(self._SOCKET_TIMEOUT)
+ if hasattr(s, 'settimeout'): s.settimeout(self.socket_timeout)
try:
s.connect(self.address)
except socket.timeout, msg:
@@ -1054,10 +1124,10 @@
break
data = recv(4096)
if not data:
- self.mark_dead('Connection closed while reading from %s'
- % repr(self))
- self.buffer = ''
- return ''
+ # connection close, let's kill it and raise
+ self.close_socket()
+ raise _ConnectionDeadError()
+
buf += data
self.buffer = buf[index+2:]
return buf[:index]
@@ -1117,6 +1187,7 @@
return "%s (%s)" % (val, type(val))
return "%s" % val
def test_setget(key, val):
+ global failures
print "Testing set/get {'%s': %s} ..." % (to_s(key), to_s(val)),
mc.set(key, val)
newval = mc.get(key)
@@ -1154,6 +1225,19 @@
print "Testing get_multi ...",
print mc.get_multi(["a_string", "an_integer"])
+ # removed from the protocol
+ #if test_setget("timed_delete", 'foo'):
+ # print "Testing timed delete ...",
+ # if mc.delete("timed_delete", 1):
+ # print "OK"
+ # else:
+ # print "FAIL"; failures = failures + 1
+ # print "Checking results of timed delete ..."
+ # if mc.get("timed_delete") == None:
+ # print "OK"
+ # else:
+ # print "FAIL"; failures = failures + 1
+
print "Testing get(unknown value) ...",
print to_s(mc.get("unknown_value"))
@@ -1195,7 +1279,13 @@
print "Testing using insanely long key...",
try:
- x = mc.set('a'*SERVER_MAX_KEY_LENGTH + 'aaaa', 1)
+ x = mc.set('a'*SERVER_MAX_KEY_LENGTH, 1)
+ except Client.MemcachedKeyLengthError, msg:
+ print "FAIL"; failures = failures + 1
+ else:
+ print "OK"
+ try:
+ x = mc.set('a'*SERVER_MAX_KEY_LENGTH + 'a', 1)
except Client.MemcachedKeyLengthError, msg:
print "OK"
else:
Files old/python-memcached-1.47/memcache.pyc and new/python-memcached-1.48/memcache.pyc differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-memcached-1.47/python_memcached.egg-info/PKG-INFO new/python-memcached-1.48/python_memcached.egg-info/PKG-INFO
--- old/python-memcached-1.47/python_memcached.egg-info/PKG-INFO 1970-01-01 01:00:00.000000000 +0100
+++ new/python-memcached-1.48/python_memcached.egg-info/PKG-INFO 2013-03-29 01:18:46.000000000 +0100
@@ -0,0 +1,26 @@
+Metadata-Version: 1.1
+Name: python-memcached
+Version: 1.48
+Summary: Pure python memcached client
+Home-page: http://www.tummy.com/Community/software/python-memcached/
+Author: Sean Reifschneider
+Author-email: jafo(a)tummy.com
+License: UNKNOWN
+Download-URL: ftp://ftp.tummy.com/pub/python-memcached/
+Description: This software is a 100% Python interface to the memcached memory cache
+ daemon. It is the client side software which allows storing values in one
+ or more, possibly remote, memcached servers. Search google for memcached
+ for more information.
+
+ This package was originally written by Evan Martin of Danga.
+ Please do not contact Evan about maintenance.
+ Sean Reifschneider of tummy.com, ltd. has taken over maintenance of it.
+
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: Python Software Foundation License
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python
+Classifier: Topic :: Internet
+Classifier: Topic :: Software Development :: Libraries :: Python Modules
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-memcached-1.47/python_memcached.egg-info/SOURCES.txt new/python-memcached-1.48/python_memcached.egg-info/SOURCES.txt
--- old/python-memcached-1.47/python_memcached.egg-info/SOURCES.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/python-memcached-1.48/python_memcached.egg-info/SOURCES.txt 2013-03-29 01:18:46.000000000 +0100
@@ -0,0 +1,8 @@
+README
+memcache.py
+setup.cfg
+setup.py
+python_memcached.egg-info/PKG-INFO
+python_memcached.egg-info/SOURCES.txt
+python_memcached.egg-info/dependency_links.txt
+python_memcached.egg-info/top_level.txt
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-memcached-1.47/python_memcached.egg-info/dependency_links.txt new/python-memcached-1.48/python_memcached.egg-info/dependency_links.txt
--- old/python-memcached-1.47/python_memcached.egg-info/dependency_links.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/python-memcached-1.48/python_memcached.egg-info/dependency_links.txt 2013-03-29 01:18:46.000000000 +0100
@@ -0,0 +1 @@
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-memcached-1.47/python_memcached.egg-info/top_level.txt new/python-memcached-1.48/python_memcached.egg-info/top_level.txt
--- old/python-memcached-1.47/python_memcached.egg-info/top_level.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/python-memcached-1.48/python_memcached.egg-info/top_level.txt 2013-03-29 01:18:46.000000000 +0100
@@ -0,0 +1 @@
+memcache
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-memcached-1.47/setup.cfg new/python-memcached-1.48/setup.cfg
--- old/python-memcached-1.47/setup.cfg 2010-12-21 03:16:35.000000000 +0100
+++ new/python-memcached-1.48/setup.cfg 2013-03-29 01:18:46.000000000 +0100
@@ -2,3 +2,9 @@
release = 1
packager = Sean Reifschneider <jafo-rpms(a)tummy.com>
requires = python-memcached
+
+[egg_info]
+tag_build =
+tag_date = 0
+tag_svn_revision = 0
+
++++++ python-memcached-ipv6-and-or.patch ++++++
diff -ruN a/memcache.py b/memcache.py
--- a/memcache.py 2011-11-28 02:17:32.000000000 +0100
+++ b/memcache.py 2013-04-26 11:18:47.765452711 +0200
@@ -1042,6 +1042,9 @@
# parse the connection string
m = re.match(r'^(?P<proto>unix):(?P<path>.*)$', host)
if not m:
+ m = re.match(r'^(?P<proto>inet6):'
+ r'\[(?P<host>[^\[\]]+)\](:(?P<port>[0-9]+))?$', host)
+ if not m:
m = re.match(r'^(?P<proto>inet):'
r'(?P<host>[^:]+)(:(?P<port>[0-9]+))?$', host)
if not m: m = re.match(r'^(?P<host>[^:]+)(:(?P<port>[0-9]+))?$', host)
@@ -1052,10 +1055,15 @@
if hostData.get('proto') == 'unix':
self.family = socket.AF_UNIX
self.address = hostData['path']
+ elif hostData.get('proto') == 'inet6':
+ self.family = socket.AF_INET6
+ self.ip = hostData['host']
+ self.port = int(hostData.get('port') or 11211)
+ self.address = ( self.ip, self.port )
else:
self.family = socket.AF_INET
self.ip = hostData['host']
- self.port = int(hostData.get('port', 11211))
+ self.port = int(hostData.get('port') or 11211)
self.address = ( self.ip, self.port )
self.deaduntil = 0
@@ -1158,6 +1166,8 @@
if self.family == socket.AF_INET:
return "inet:%s:%d%s" % (self.address[0], self.address[1], d)
+ elif self.family == socket.AF_INET6:
+ return "inet6:[%s]:%d%s" % (self.address[0], self.address[1], d)
else:
return "unix:%s%s" % (self.address, d)
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package p11-kit for openSUSE:Factory checked in at 2013-04-26 15:53:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/p11-kit (Old)
and /work/SRC/openSUSE:Factory/.p11-kit.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "p11-kit", Maintainer is ""
Changes:
--------
--- /work/SRC/openSUSE:Factory/p11-kit/p11-kit.changes 2013-04-14 10:36:31.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.p11-kit.new/p11-kit.changes 2013-04-26 15:53:08.000000000 +0200
@@ -1,0 +2,7 @@
+Mon Apr 15 18:46:10 UTC 2013 - dimstar(a)opensuse.org
+
+- Update to version 0.18.1:
+ + Put the external tools in $libdir/p11-kit.
+ + Documentation build fixes.
+
+-------------------------------------------------------------------
Old:
----
p11-kit-0.18.0.tar.gz
New:
----
p11-kit-0.18.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ p11-kit.spec ++++++
--- /var/tmp/diff_new_pack.ydGjPe/_old 2013-04-26 15:53:09.000000000 +0200
+++ /var/tmp/diff_new_pack.ydGjPe/_new 2013-04-26 15:53:09.000000000 +0200
@@ -17,7 +17,7 @@
Name: p11-kit
-Version: 0.18.0
+Version: 0.18.1
Release: 0
Summary: Library to work with PKCS#11 modules
License: BSD-3-Clause
@@ -93,9 +93,10 @@
%dir %{_libdir}/pkcs11
%dir %{_datadir}/%{name}
%dir %{_datadir}/%{name}/modules
-%{_libdir}/pkcs11/p11-kit-trust.so
%{_datadir}/%{name}/modules/p11-kit-trust.module
-%{_datadir}/%{name}/p11-kit-extract-trust
+%{_libdir}/pkcs11/p11-kit-trust.so
+%dir %{_libdir}/%{name}
+%{_libdir}/%{name}/p11-kit-extract-trust
%files -n libp11-kit0
%defattr(-,root,root)
++++++ p11-kit-0.18.0.tar.gz -> p11-kit-0.18.1.tar.gz ++++++
++++ 3258 lines of diff (skipped)
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package orca for openSUSE:Factory checked in at 2013-04-26 15:52:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/orca (Old)
and /work/SRC/openSUSE:Factory/.orca.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "orca", Maintainer is "gnome-maintainers(a)suse.de"
Changes:
--------
--- /work/SRC/openSUSE:Factory/orca/orca.changes 2013-04-03 13:04:54.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.orca.new/orca.changes 2013-04-26 15:52:40.000000000 +0200
@@ -1,0 +2,6 @@
+Tue Apr 16 20:26:17 UTC 2013 - dimstar(a)opensuse.org
+
+- Update to version 3.8.1:
+ + Updated translations.
+
+-------------------------------------------------------------------
Old:
----
orca-3.8.0.tar.xz
New:
----
orca-3.8.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ orca.spec ++++++
--- /var/tmp/diff_new_pack.szXLvR/_old 2013-04-26 15:52:42.000000000 +0200
+++ /var/tmp/diff_new_pack.szXLvR/_new 2013-04-26 15:52:42.000000000 +0200
@@ -17,7 +17,7 @@
Name: orca
-Version: 3.8.0
+Version: 3.8.1
Release: 0
# FIXME: Enable brlapi, louis and speechd support
Summary: Screen reader for GNOME
++++++ orca-3.8.0.tar.xz -> orca-3.8.1.tar.xz ++++++
++++ 54810 lines of diff (skipped)
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package nautilus for openSUSE:Factory checked in at 2013-04-26 15:52:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nautilus (Old)
and /work/SRC/openSUSE:Factory/.nautilus.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nautilus", Maintainer is "DLiang(a)suse.com"
Changes:
--------
--- /work/SRC/openSUSE:Factory/nautilus/nautilus.changes 2013-04-05 17:28:40.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.nautilus.new/nautilus.changes 2013-04-26 15:52:31.000000000 +0200
@@ -1,0 +2,17 @@
+Tue Apr 16 08:32:42 UTC 2013 - dimstar(a)opensuse.org
+
+- Update to version 3.8.1:
+ + Use a consistent name for applications in the Open With context
+ menu.
+ + Don't follow symbolic links when searching recursively.
+ + Increase default sidebar width.
+ + Fix resetting view to default preferences not working.
+ + Fix behavior of search entry with external Input Methods.
+ + Fix partial ranking order of search results.
+ + Fix move of special icons on the Desktop triggering file
+ operations.
+ + Fix copy action not working in Recent.
+- Add pkgconfig(gsettings-desktop-schemas) BuildRequires, so it can
+ be versioned.
+
+-------------------------------------------------------------------
Old:
----
nautilus-3.8.0.tar.xz
New:
----
nautilus-3.8.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ nautilus.spec ++++++
--- /var/tmp/diff_new_pack.4ww80W/_old 2013-04-26 15:52:33.000000000 +0200
+++ /var/tmp/diff_new_pack.4ww80W/_new 2013-04-26 15:52:33.000000000 +0200
@@ -17,7 +17,7 @@
Name: nautilus
-Version: 3.8.0
+Version: 3.8.1
Release: 0
Summary: File Manager for the GNOME Desktop
License: GPL-2.0+
@@ -47,6 +47,7 @@
BuildRequires: pkgconfig(gail-3.0)
BuildRequires: pkgconfig(glib-2.0) >= 2.35.1
BuildRequires: pkgconfig(gnome-desktop-3.0)
+BuildRequires: pkgconfig(gsettings-desktop-schemas) >= 3.8.0
BuildRequires: pkgconfig(gtk+-3.0) >= 3.7.7
BuildRequires: pkgconfig(libexif)
BuildRequires: pkgconfig(libnotify)
++++++ nautilus-3.8.0.tar.xz -> nautilus-3.8.1.tar.xz ++++++
++++ 32842 lines of diff (skipped)
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package mutter for openSUSE:Factory checked in at 2013-04-26 15:52:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mutter (Old)
and /work/SRC/openSUSE:Factory/.mutter.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mutter", Maintainer is "JLee(a)suse.com"
Changes:
--------
--- /work/SRC/openSUSE:Factory/mutter/mutter.changes 2013-04-05 07:37:10.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.mutter.new/mutter.changes 2013-04-26 15:52:19.000000000 +0200
@@ -1,0 +2,9 @@
+Tue Apr 16 20:23:30 UTC 2013 - dimstar(a)opensuse.org
+
+- Update to version 3.8.1:
+ + Fix crash when getting default font (bgo#696814).
+ + Fix ungrabbing of keybindings (bgo#697003).
+ + Misc fixes and cleanups: bgo#697758.
+ + Updated translations.
+
+-------------------------------------------------------------------
Old:
----
mutter-3.8.0.tar.xz
New:
----
mutter-3.8.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mutter.spec ++++++
--- /var/tmp/diff_new_pack.YxJyaC/_old 2013-04-26 15:52:21.000000000 +0200
+++ /var/tmp/diff_new_pack.YxJyaC/_new 2013-04-26 15:52:21.000000000 +0200
@@ -17,7 +17,7 @@
Name: mutter
-Version: 3.8.0
+Version: 3.8.1
Release: 0
Summary: Window and compositing manager based on Clutter
License: GPL-2.0+
++++++ mutter-3.8.0.tar.xz -> mutter-3.8.1.tar.xz ++++++
++++ 5851 lines of diff (skipped)
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package libwacom for openSUSE:Factory checked in at 2013-04-26 15:52:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libwacom (Old)
and /work/SRC/openSUSE:Factory/.libwacom.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libwacom", Maintainer is ""
Changes:
--------
--- /work/SRC/openSUSE:Factory/libwacom/libwacom.changes 2013-03-15 10:41:34.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.libwacom.new/libwacom.changes 2013-04-26 15:52:13.000000000 +0200
@@ -1,0 +2,7 @@
+Tue Apr 16 08:32:30 UTC 2013 - dimstar(a)opensuse.org
+
+- Update to version 0.7.1:
+ + New devices: ISDv4 10d.
+ + Better checks to prevent bad databases.
+
+-------------------------------------------------------------------
Old:
----
libwacom-0.7.tar.bz2
New:
----
libwacom-0.7.1.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libwacom.spec ++++++
--- /var/tmp/diff_new_pack.DDBYdu/_old 2013-04-26 15:52:14.000000000 +0200
+++ /var/tmp/diff_new_pack.DDBYdu/_new 2013-04-26 15:52:14.000000000 +0200
@@ -17,7 +17,7 @@
Name: libwacom
-Version: 0.7
+Version: 0.7.1
Release: 0
Summary: Library to identify wacom tablets
License: MIT
++++++ libwacom-0.7.tar.bz2 -> libwacom-0.7.1.tar.bz2 ++++++
++++ 1761 lines of diff (skipped)
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package liblognorm for openSUSE:Factory checked in at 2013-04-26 15:52:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/liblognorm (Old)
and /work/SRC/openSUSE:Factory/.liblognorm.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "liblognorm", Maintainer is ""
Changes:
--------
--- /work/SRC/openSUSE:Factory/liblognorm/liblognorm.changes 2012-11-13 09:54:48.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.liblognorm.new/liblognorm.changes 2013-04-26 15:52:07.000000000 +0200
@@ -1,0 +2,6 @@
+Fri Apr 19 09:34:21 UTC 2013 - mt(a)suse.de
+
+- update to 0.3.6:
+ - bugfix: unitialized variable could lead to rulebase load error
+
+-------------------------------------------------------------------
Old:
----
liblognorm-0.3.5.tar.gz
New:
----
liblognorm-0.3.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ liblognorm.spec ++++++
--- /var/tmp/diff_new_pack.YIAKmD/_old 2013-04-26 15:52:08.000000000 +0200
+++ /var/tmp/diff_new_pack.YIAKmD/_new 2013-04-26 15:52:08.000000000 +0200
@@ -1,7 +1,7 @@
#
# spec file for package liblognorm
#
-# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: liblognorm
-Version: 0.3.5
+Version: 0.3.6
Release: 0
Summary: Library and tool to normalize log data
License: LGPL-2.1+
++++++ liblognorm-0.3.5.tar.gz -> liblognorm-0.3.6.tar.gz ++++++
++++ 18775 lines of diff (skipped)
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0