skip to navigation
skip to content

Not Logged In

weakreflist 0.3.1

A WeakList class for storing objects using weak references in a list.

A WeakList class for storing objects using weak references in a list.

Table of Contents

Installation

Install it from pypi:

pip install weakreflist

or from sources:

git clone git@github.com:apieum/weakreflist.git
cd weakreflist
python setup.py install

Usage

Same as a list except that when a weakref-able variable is deleted, it is removed from the list.

Example for CPython:

from weakref import WeakList

class A(object):
    """weakrefs don't function directly on object()"""
objectA = A()
my_list = WeakList([objectA])
assert len(my_list) == 1
del objectA
assert len(my_list) == 0 # objectA removed from list
Note:

Pypy (probably jython, cython…) have a different implementation of garbage collector and it is known that weakrefs doesn’t function the same way.

You need to explicitly call gc.collect() which has an impact on performance.

Example for other python implementations

from weakref import WeakList
import gc

class A(object):
    """weakrefs don't function directly on object()"""
objectA = A()
my_list = WeakList([objectA])
assert len(my_list) == 1
del objectA

assert len(my_list) == 1 # gc not done
gc.collect() # must be called
assert len(my_list) == 0

Development

Your feedback, code review, improvements or bugs, and help to document is appreciated. You can contact me by mail: apieum [at] gmail [dot] com

Test recommended requirements:

pip install -r dev-requirements.txt

Sometimes –spec-color doesn’t function. Uninstall nosespec and nosecolor then reinstall nosecolor and nosespec separatly in this order (nosecolor first).

Launch tests:

git clone git@github.com:apieum/weakreflist.git
cd weakreflist
nosetests --with-spec --spec-color ./weakreflist
# or with watch
# nosetests --with-spec --spec-color --with-watch ./weakreflist
 
File Type Py Version Uploaded on Size
weakreflist-0.3.1.tar.gz (md5) Source 2014-08-31 6KB
  • Downloads (All Versions):
  • 9 downloads in the last day
  • 73 downloads in the last week
  • 252 downloads in the last month