[issue17643] Expose weakref callback for introspection purposes.

2013-04-13 Thread Roundup Robot

Roundup Robot added the comment:

New changeset 9e7d31b04d78 by Mark Dickinson in branch 'default':
Issue #17643: Add __callback__ attribute to weakref.ref.
http://hg.python.org/cpython/rev/9e7d31b04d78

--
nosy: +python-dev

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue17643
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue17643] Expose weakref callback for introspection purposes.

2013-04-13 Thread Mark Dickinson

Mark Dickinson added the comment:

Committed, using support.gc_collect for the test that requires garbage 
collection.  Thanks for the reviews!

--
assignee:  - mark.dickinson
resolution:  - fixed
stage: patch review - committed/rejected
status: open - closed

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue17643
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue17643] Expose weakref callback for introspection purposes.

2013-04-12 Thread Terry J. Reedy

Terry J. Reedy added the comment:

 there are other tests in that test module that also rely on del resulting in 
 immediate cleanup

I would mark them all as 'cpython-only', since they are. Other implementation 
must be omitting this test module, ignoring its failures, or patching out the 
specific tests.

--
nosy: +terry.reedy

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue17643
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue17643] Expose weakref callback for introspection purposes.

2013-04-12 Thread Richard Oudkerk

Richard Oudkerk added the comment:

 I could mark the new test as cpython only, or add a gc.collect (but I'm 
 not sure if the latter is enough, either).

test.support.gc_collect() should work on non-refcounted implementations.

--
nosy: +sbt

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue17643
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue17643] Expose weakref callback for introspection purposes.

2013-04-12 Thread Mark Dickinson

Mark Dickinson added the comment:

Ah, test.support.gc_collect looks useful.  Thanks!

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue17643
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue17643] Expose weakref callback for introspection purposes.

2013-04-06 Thread Mark Dickinson

New submission from Mark Dickinson:

It would be nice to be able to access the callback of a weakref as an attribute 
on the weakref itself.  For example:

Python 3.4.0a0 (default:2bf154ca43c6+, Apr  6 2013, 13:31:29) 
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type help, copyright, credits or license for more information.
 import weakref
 x = {1, 2, 3}
 ref = weakref.ref(x, lambda ref: print(done))
 ref.__callback__
function lambda at 0x1004f56d0
 del x
done
 ref.__callback__  # Returns None

I encountered this while writing a tool to show graphs of Python objects and 
their references to each other:  I wanted to be able to annotate each edge of 
the graph.  For something like a function, it's easy to use introspection to 
compare the reference target with f.__code__, f.__annotations__, etc.  For a 
weakref, I couldn't find an easy way to retrieve the callback (or even 
determine whether there *was* a callback associated to the weakref).  One can 
do a gc.get_referents call and hope that if there's exactly one object 
returned it's the callback, but that won't work so well with weakref.ref 
subclasses.

Patch attached:  it has tests but no doc updates as yet.

--
components: Interpreter Core
files: weakref___callback__.patch
keywords: patch
messages: 186122
nosy: mark.dickinson
priority: normal
severity: normal
stage: patch review
status: open
title: Expose weakref callback for introspection purposes.
type: enhancement
versions: Python 3.4
Added file: http://bugs.python.org/file29685/weakref___callback__.patch

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue17643
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue17643] Expose weakref callback for introspection purposes.

2013-04-06 Thread Antoine Pitrou

Antoine Pitrou added the comment:

Sounds fine to me.

--
nosy: +pitrou

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue17643
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue17643] Expose weakref callback for introspection purposes.

2013-04-06 Thread Benjamin Peterson

Benjamin Peterson added the comment:

Instead of a getset, I think you just use a read-only T_OBJECT member.

--
nosy: +benjamin.peterson

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue17643
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue17643] Expose weakref callback for introspection purposes.

2013-04-06 Thread Mark Dickinson

Mark Dickinson added the comment:

Ah yes; that's easier.  New patch including doc updates.

--
Added file: http://bugs.python.org/file29687/weakref___callback__2.patch

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue17643
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue17643] Expose weakref callback for introspection purposes.

2013-04-06 Thread Antoine Pitrou

Antoine Pitrou added the comment:

del x will not be enough on non-refcounted implementations.

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue17643
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue17643] Expose weakref callback for introspection purposes.

2013-04-06 Thread Mark Dickinson

Mark Dickinson added the comment:

True:  I'm not sure what to do about that---there are other tests in that test 
module that also rely on del resulting in immediate cleanup.  I'm not sure what 
other implementations are currently doing with this test module.

I could mark the new test as cpython only, or add a gc.collect (but I'm not 
sure if the latter is enough, either).

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue17643
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue17643] Expose weakref callback for introspection purposes.

2013-04-06 Thread Antoine Pitrou

Antoine Pitrou added the comment:

Ah, then we can probably keep using the same style.

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue17643
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com