|
33 | 33 | jupyter_config_dir, jupyter_data_dir, |
34 | 34 | ) |
35 | 35 | from notebook.nbextensions import ( |
36 | | - ArgumentConflict, __version__, _maybe_copy, _safe_is_tarfile, |
| 36 | + ArgumentConflict, __version__, _safe_is_tarfile, |
37 | 37 | ) |
38 | 38 | from tornado.log import LogFormatter |
39 | 39 | from traitlets import Bool |
@@ -413,6 +413,29 @@ def _log_format_default(self): |
413 | 413 | # ----------------------------------------------------------------------------- |
414 | 414 |
|
415 | 415 |
|
| 416 | +def _should_copy(src, dest, logger=None): |
| 417 | + """Return whether a file should be copied.""" |
| 418 | + if not os.path.exists(dest): |
| 419 | + return True |
| 420 | + if os.stat(src).st_mtime - os.stat(dest).st_mtime > 1e-6: |
| 421 | + # we add a fudge factor to work around a bug in python 2.x |
| 422 | + # that was fixed in python 3.x: http://bugs.python.org/issue12904 |
| 423 | + if logger: |
| 424 | + logger.warn("Out of date: %s" % dest) |
| 425 | + return True |
| 426 | + if logger: |
| 427 | + logger.info("Up to date: %s" % dest) |
| 428 | + return False |
| 429 | + |
| 430 | + |
| 431 | +def _maybe_copy(src, dest, logger=None): |
| 432 | + """Copy a file if it needs updating.""" |
| 433 | + if _should_copy(src, dest, logger=logger): |
| 434 | + if logger: |
| 435 | + logger.info("Copying: %s -> %s" % (src, dest)) |
| 436 | + shutil.copy2(src, dest) |
| 437 | + |
| 438 | + |
416 | 439 | def _get_nbextension_dir(user=False, sys_prefix=False, prefix=None, |
417 | 440 | nbextensions_dir=None): |
418 | 441 | """Return the nbextension directory specified.""" |
|
0 commit comments