|
| 1 | +# emacs: at the end of the file |
| 2 | +# ex: set sts=4 ts=4 sw=4 et: |
| 3 | +# ## ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### # |
| 4 | +""" |
| 5 | +
|
| 6 | +Stub file for a guaranteed safe import of duecredit constructs: if duecredit |
| 7 | +is not available. |
| 8 | +
|
| 9 | +To use it, place it into your project codebase to be imported, e.g. copy as |
| 10 | +
|
| 11 | + cp stub.py /path/tomodule/module/due.py |
| 12 | +
|
| 13 | +Note that it might be better to avoid naming it duecredit.py to avoid shadowing |
| 14 | +installed duecredit. |
| 15 | +
|
| 16 | +Then use in your code as |
| 17 | +
|
| 18 | + from .due import due, Doi, BibTeX, Text |
| 19 | +
|
| 20 | +See https://github.com/duecredit/duecredit/blob/master/README.md for examples. |
| 21 | +
|
| 22 | +Origin: Originally a part of the duecredit |
| 23 | +Copyright: 2015-2019 DueCredit developers |
| 24 | +License: BSD-2 |
| 25 | +""" |
| 26 | + |
| 27 | +__version__ = '0.0.8' |
| 28 | + |
| 29 | + |
| 30 | +class InactiveDueCreditCollector(object): |
| 31 | + """Just a stub at the Collector which would not do anything""" |
| 32 | + def _donothing(self, *args, **kwargs): |
| 33 | + """Perform no good and no bad""" |
| 34 | + pass |
| 35 | + |
| 36 | + def dcite(self, *args, **kwargs): |
| 37 | + """If I could cite I would""" |
| 38 | + def nondecorating_decorator(func): |
| 39 | + return func |
| 40 | + return nondecorating_decorator |
| 41 | + |
| 42 | + active = False |
| 43 | + activate = add = cite = dump = load = _donothing |
| 44 | + |
| 45 | + def __repr__(self): |
| 46 | + return self.__class__.__name__ + '()' |
| 47 | + |
| 48 | + |
| 49 | +def _donothing_func(*args, **kwargs): |
| 50 | + """Perform no good and no bad""" |
| 51 | + pass |
| 52 | + |
| 53 | + |
| 54 | +try: |
| 55 | + from duecredit import due, BibTeX, Doi, Url, Text |
| 56 | + if 'due' in locals() and not hasattr(due, 'cite'): |
| 57 | + raise RuntimeError( |
| 58 | + "Imported due lacks .cite. DueCredit is now disabled") |
| 59 | +except Exception as e: |
| 60 | + if not isinstance(e, ImportError): |
| 61 | + import logging |
| 62 | + logging.getLogger("duecredit").error( |
| 63 | + "Failed to import duecredit due to %s" % str(e)) |
| 64 | + # Initiate due stub |
| 65 | + due = InactiveDueCreditCollector() |
| 66 | + BibTeX = Doi = Url = Text = _donothing_func |
| 67 | + |
| 68 | +# Emacs mode definitions |
| 69 | +# Local Variables: |
| 70 | +# mode: python |
| 71 | +# py-indent-offset: 4 |
| 72 | +# tab-width: 4 |
| 73 | +# indent-tabs-mode: nil |
| 74 | +# End: |
0 commit comments