##// END OF EJS Templates
Store timestamps for modules to autoreload...
Store timestamps for modules to autoreload Closes gh-4127 At present, autoreload compares the timestamps on .py and .pyc files. However, this can fail in a couple of ways (see gh-4127). With this change, it caches the mtime of the .py file when we loaded it. Some extra complexity is needed to store the mtime as soon as possible - we scan sys.modules when autoreload is loaded, and register a post_execute hook to check for newly imported modules after each cell.

File last commit:

r13356:0a3c3bee
r15682:3ec67fcd
Show More
data.py
37 lines | 1.2 KiB | text/x-python | PythonLexer
Brian Granger
Work to address the review comments on Fernando's branch....
r2498 # encoding: utf-8
"""Utilities for working with data structures like lists, dicts and tuples.
"""
#-----------------------------------------------------------------------------
Matthias BUSSONNIER
update copyright to 2011/20xx-2011...
r5390 # Copyright (C) 2008-2011 The IPython Development Team
Brian Granger
Work to address the review comments on Fernando's branch....
r2498 #
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-----------------------------------------------------------------------------
Thomas Kluyver
Fix references to xrange
r13356 from .py3compat import xrange
Brian Granger
Work to address the review comments on Fernando's branch....
r2498 def uniq_stable(elems):
"""uniq_stable(elems) -> list
Return from an iterable, a list of all the unique elements in the input,
but maintaining the order in which they first appear.
W. Trevor King
utils.data: Use list comprehension for uniq_stable()...
r9249 Note: All elements in the input must be hashable for this routine
to work, as it internally uses a set for efficiency reasons.
"""
seen = set()
return [x for x in elems if x not in seen and not seen.add(x)]
Brian Granger
Work to address the review comments on Fernando's branch....
r2498
def flatten(seq):
"""Flatten a list of lists (NOT recursive, only works for 2d lists)."""
return [x for subseq in seq for x in subseq]
Thomas Kluyver
Remove dead code in utils.data
r9471
Brian Granger
Work to address the review comments on Fernando's branch....
r2498
def chop(seq, size):
"""Chop a sequence into chunks of the given size."""
Thomas Kluyver
Remove dead code in utils.data
r9471 return [seq[i:i+size] for i in xrange(0,len(seq),size)]
Brian Granger
Work to address the review comments on Fernando's branch....
r2498